对话框动态按钮消息响应

toplcx 2010-12-20 05:09:08
对话框的界面不好看 想着用贴图的方式美化一下 因为很多对话框 所以想自己写个对话框的类 所有的对话框都继承该类。

对话框设置为无边框 所以右上角的关闭按钮需要自己添加。

在基类中动态创建一个按钮。并为其添加响应函数 去调用CDialog::OnClose();
实验:一个对话框工程 主对话框就是派生在该自定义的基类,按钮创建成功了 但是点击的时候没反应。

按钮创建代码:
m_btnClose=new CButtonST();
m_btnClose->Create(NULL,WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTON,rcClose,this,IDC_CLOSE_RIGHT);
消息响应
afx_msg void OnBnClickedCloseRight();

ON_BN_CLICKED(IDC_CLOSE_RIGHT,OnBnClickedCloseRight)
void CBaseDlg::OnBnClickedCloseRight()
{
CDialog::OnClose();//在此处打断点 发现根本没进入 是不是消息没有送到基类来 应该怎么改
}
...全文
166 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
toplcx 2010-12-21
  • 打赏
  • 举报
回复
试过了 当我吧重载的OnNcHitTest注释掉 这个时候截获的命令消息高字节就变成了按钮消息 结贴 多谢各位帮忙
toplcx 2010-12-21
  • 打赏
  • 举报
回复
多谢 我发现问题了 现在是这样解决的
BOOL CBaseDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
// TODO: 在此添加专用代码和/或调用基类
switch (LOWORD(wParam))
{
case IDC_CLOSE_RIGHT:
::PostMessage(m_hWnd,WM_CLOSE,0,0);
break;
}
return CDialog::OnCommand(wParam, lParam);
}

我检查过这个参数HIWORD(wParam) 结果是0,是不是因为我重载了
LRESULT CBaseDlg::OnNcHitTest(CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CRect rc;
GetClientRect(&rc);
ClientToScreen(&rc);
return rc.PtInRect(point) ? HTCAPTION : CDialog::OnNcHitTest(point);
}
的缘故。一会验证一下 应该是
Eleven 2010-12-21
  • 打赏
  • 举报
回复
你想在父窗口处理按钮点击的话,你可以重载OnCommand类,在你的对话框类中

BOOL CXXXDlg::OnCommand(WPARAM wParam, LPARAM lParam)
{
// TODO: Add your specialized code here and/or call the base class

if((BN_CLICKED == HIWORD(wParam)))
{
if(IDC_CLOSE_RIGHT == LOWORD(wParam))
{
AfxMessageBox(_T("MessageBox"));
}
}
return CDialog::OnCommand(wParam, lParam);
}
Eleven 2010-12-21
  • 打赏
  • 举报
回复
CButtonST里处理了=BN_CLICKED了?
muzizongheng 2010-12-21
  • 打赏
  • 举报
回复
ON_CONTROL_REFLECT 。

toplcx 2010-12-21
  • 打赏
  • 举报
回复
哈哈 厉害吧 结贴率超过100%
toplcx 2010-12-20
  • 打赏
  • 举报
回复
试过了还是不行 但是我在基类的oncommand里面有截获到那个消息 但是不知道为什么却近不到消息响应里
Jimmy_Xia 2010-12-20
  • 打赏
  • 举报
回复
没试过这种方式,你试试把Click消息放到CButtonST类里面处理,然后再PostMessage到父窗口。

神啊,结贴率103.57%!
toucheme 2010-12-20
  • 打赏
  • 举报
回复
用ON_COMMAND代替ON_BN_CLICKED

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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