void CMynetsendDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}就这段代码,到底什么意思?
对话框的系统菜单命令,包括关闭对话框,最小化最大化,弹出关于对话框等等,实际上就是向这个对话框发送
WM_SYSCOMMAND消息,对话框响应
WM_SYSCOMMAND消息,然后根据不同的nID值判断到底是什么系统命令(关闭对话框,最大最小化还是其他什么),这个OnSysCommand
就是用来响应 WM_SYSCOMMAND消息,进行相应处理的。
上面的if ((nID & 0xFFF0) == IDM_ABOUTBOX),就是说在需要弹出关于对话框的时候,就进行特别处理(因为在MFC自动生成的基于对话框的工程里面,这个关于对话框也是用户自己可以控制的),所以这时候就自己处理,弹出自己的关于对话框,对于其他的消息,默认不需要用户定制,就直接调用父类的处理就好
就是用来响应 WM_SYSCOMMAND消息,进行相应处理的。
上面的if ((nID & 0xFFF0) == IDM_ABOUTBOX),就是说在需要弹出关于对话框的时候,就进行特别处理(因为在MFC自动生成的基于对话框的工程里面,这个关于对话框也是用户自己可以控制的),所以这时候就自己处理,弹出自己的关于对话框,对于其他的消息,默认不需要用户定制,就直接调用父类的处理就好
追问
你看我的理解对不对,例如说我有一个关闭窗口的按钮,也有这个按钮的响应函数,当我按下这个按钮时,它就会发送命令给OnSysCommand函数,然后OnSysCommand函数响应之后,就会作出相应处理……是吗?
追答
追问
好吧,好像懂了点。那我问多一下,这些系统消息例如像你这幅图里的关闭,最大化最小化这些选项要怎样才能有啊?就是我的代码里面有OnSysCommand函数,但是运行之后再右击对话框的任何位置都没有反应啊
追答