这里以回车为例子:
对话框程序,即使你把ok按钮删除后,你发现你按回车键,对话框还会退出,因为系统会自动去响应回车,如果你拦截消息进行屏蔽的话,那么你回车就用不了了,我一般采用如下的方式:
void CTaskSetDlg::OnOK()
{
// TODO: Add extra validation here
//CDialog::OnOK();
}
void CTaskSetDlg::OnNewOk()
{ CDialog::OnOK();}
把回车响应的OnOK()函数加上,然后把里面的代码注释掉,自己加一个函数,里面是OnOK()函数调用的代码,你想用回车的时候调用自己加的函数,而系统回车什么都不响应。对话框程序一定要注意处理回车键。 Esc解决方法可以和回车一致。
双击标题栏的响应
特别是对话框程序,双击标题栏会缩小到固定大小,但是控件不会自动缩小,而且界面最大化后尽量不让其双击变化,所以要对双击标题栏进行处理。双击标题栏你可以处理WM_NCHITTEST这个消息,在添加这个消息响应函数时要注意,这个消息,不是在界面上,而在windows消息响应层上。下面是一个处理例子:
UINT CTestDlg::OnNcHitTest(CPoint point)
{//屏蔽双击标题栏相应
// TODO: Add your message handler code here and/or call default
//add start
UINT ret; ret = CDialog::OnNcHitTest(point);
if (ret == HTCAPTION) return NULL;
//add end
return CDialog::OnNcHitTest(point);
}