Cancel 按钮问题 本帖最后由 boguanglingling 于 2012-08-14 09:56:44 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 点击右键调用某个事件处理函数是在类的消息映射函数设置的,如下BEGIN_MESSAGE_MAP(CDlgLogin, CDialog) ON_WM_SYSCOMMAND() ON_BN_CLICKED(IDCANCEL, &CDlgLogin::OnBnClickedCancel)END_MESSAGE_MAP()像我的这个设置,点X的话会调用OnBnClickedCancel,但是如果我改成下面这样,就会调用另外函数OnBnClickedCancel1111BEGIN_MESSAGE_MAP(CDlgLogin, CDialog) ON_WM_SYSCOMMAND() ON_BN_CLICKED(IDCANCEL, &CDlgLogin::OnBnClickedCancel1111)END_MESSAGE_MAP() 不需要Cancel按钮,直接删掉它就可以了。 楼主的意思是:X和IDCANCEL已经绑定了,而不是IDCANCEL事件函数修改不了。我的方法是这样的:X是发送WM_CLOSE进消息队列吧那就到PreTranslateMessage消息里面的(MSG pMsg)if(pMsg->message == WM_CLOSE)截获消息处理吧 onCancel的处理应该是系统定义的,我并没有重写onCancel,应该不是这个问题,重写OnCancel时也不需要在消息映射中添加映射。 我把原先自带的Cancel改了ID,定义了一些操作,删掉这些操作也没有了。 嗯,X默认应该会自动调用IDCANCEL事件的,现在情况好像是没有绑定,当我重写onCancel,但没在其中添加任何代码时,点击X也不会调用OnCancel(),仍然调用的我原先修改的Cancel按钮的单击事件,应该是没绑定上.修改Cancel按钮的ID不再是IDCANCEL后不是相当于普遍按钮了? 添加WM_SYSCOMMAND的消息映射,自己处理SC_CLOSEOnSysCommand(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){if ( wParam == SC_CLOSE )dosomethings;} 虚拟地址空间与多进程是如何实现的 再问一个超简单问题:如何清空一个目录 UI线程窗口关闭后主程序窗口得不到焦点的问题 ADO连接Orancle数据库的问题? 请问大虾:我怎样知道已经有一个实例在运行? 怎样在不包含头文件情况下,调用WebBrowser对象的所有的COM接口 按钮不可用,什么原因呢? Which would you like to choose?----Asp.net or java? AddPrintProcessor的问题 大家帮忙看看delete指针数组的问题 VS2010 如何动态创建菜单 及映射关系?? vc调用C# WEB SERVICE
BEGIN_MESSAGE_MAP(CDlgLogin, CDialog)
ON_WM_SYSCOMMAND()
ON_BN_CLICKED(IDCANCEL, &CDlgLogin::OnBnClickedCancel)
END_MESSAGE_MAP()
像我的这个设置,点X的话会调用OnBnClickedCancel,但是如果我改成下面这样,就会调用另外函数OnBnClickedCancel1111
BEGIN_MESSAGE_MAP(CDlgLogin, CDialog)
ON_WM_SYSCOMMAND()
ON_BN_CLICKED(IDCANCEL, &CDlgLogin::OnBnClickedCancel1111)
END_MESSAGE_MAP()
X和IDCANCEL已经绑定了,而不是IDCANCEL事件函数修改不了。我的方法是这样的:
X是发送WM_CLOSE进消息队列吧
那就到PreTranslateMessage消息里面的(MSG pMsg)
if(pMsg->message == WM_CLOSE)
截获消息处理吧
嗯,X默认应该会自动调用IDCANCEL事件的,现在情况好像是没有绑定,当我重写onCancel,但没在其中添加任何代码时,点击X也不会调用OnCancel(),仍然调用的我原先修改的Cancel按钮的单击事件,应该是没绑定上.修改Cancel按钮的ID不再是IDCANCEL后不是相当于普遍按钮了?
OnSysCommand(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if ( wParam == SC_CLOSE )
dosomethings;
}