Cancel 按钮问题

Tony Tian TL 2012-08-14 09:52:34
采用MFC编写非模态对话框时,想直接改变Cancel按钮的ID,定义单击事件,做成其他按钮使用。但是改变后点击右上角X时依然自动调用该按钮的事件,并且不会调用onCancel事件,窗口也无法关闭。删除该按钮,重新添加一个按钮,改ID和原来一样时依然无效,请高手指导原因!谢谢
...全文
364 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kevin 2012-08-14
  • 打赏
  • 举报
回复
添加WM_SYSCOMMAND的消息映射,自己处理SC_CLOSE
OnSysCommand(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
if ( wParam == SC_CLOSE )
dosomethings;
}
Tony Tian TL 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

楼主的意思是:
X和IDCANCEL已经绑定了,而不是IDCANCEL事件函数修改不了。

我的方法是这样的:
X是发送WM_CLOSE进消息队列吧
那就到PreTranslateMessage消息里面的(MSG pMsg)
if(pMsg->message == WM_CLOSE)
截获消息处理吧
[/Quote]

嗯,X默认应该会自动调用IDCANCEL事件的,现在情况好像是没有绑定,当我重写onCancel,但没在其中添加任何代码时,点击X也不会调用OnCancel(),仍然调用的我原先修改的Cancel按钮的单击事件,应该是没绑定上.修改Cancel按钮的ID不再是IDCANCEL后不是相当于普遍按钮了?
Tony Tian TL 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

不需要Cancel按钮,直接删掉它就可以了。
[/Quote]
我把原先自带的Cancel改了ID,定义了一些操作,删掉这些操作也没有了。
Tony Tian TL 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

点击右键调用某个事件处理函数是在类的消息映射函数设置的,如下
BEGIN_MESSAGE_MAP(CDlgLogin, CDialog)
ON_WM_SYSCOMMAND()
ON_BN_CLICKED(IDCANCEL, &CDlgLogin::OnBnClickedCancel)
END_MESSAGE_MAP()
像我的这个设置,点X的话会调用OnBnClickedCan……
[/Quote]
onCancel的处理应该是系统定义的,我并没有重写onCancel,应该不是这个问题,重写OnCancel时也不需要在消息映射中添加映射。
看不见的裂痕 2012-08-14
  • 打赏
  • 举报
回复
楼主的意思是:
X和IDCANCEL已经绑定了,而不是IDCANCEL事件函数修改不了。

我的方法是这样的:
X是发送WM_CLOSE进消息队列吧
那就到PreTranslateMessage消息里面的(MSG pMsg)
if(pMsg->message == WM_CLOSE)
截获消息处理吧
ouyh12345 2012-08-14
  • 打赏
  • 举报
回复
不需要Cancel按钮,直接删掉它就可以了。
小马喝水 2012-08-14
  • 打赏
  • 举报
回复
点击右键调用某个事件处理函数是在类的消息映射函数设置的,如下
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()

16,547

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧