对话框激活问题

frazer 2009-08-04 04:45:10
基于对话框的程序,使用WIN32 API。

我自绘了对话框的边框,在对话框回调函数中用到了以下代码:

if(uMsg == WM_MOVE || uMsg == WM_PAINT || uMsg == WM_NCPAINT || uMsg == WM_NCACTIVATE || uMsg == WM_ACTIVATE)
{
hdcNc = GetWindowDC(hwndDlg);

if(hdcNc)
{
badaDialogMng.DrawFrame(hdcNc); /*绘制边框函数*/
ReleaseDC(hwndDlg,hdcNc);
}
return (INT_PTR)TRUE;
}

绘画正常,然后我又在此对话框的基础上生成一个子对话框,用来设置参数用,但是子对话框无法被激活,标题栏总是灰蓝色,鼠标点也没用。
后来我发现是因为在响应了WM_NCACTIVATE后,return (INT_PTR)TRUE 造成的。可是我如果不return TRUE,标题栏会被重新画成默认的。

这个问题困扰我很久了,麻烦各位高手给与耐心的解答!
...全文
181 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
frazer 2009-08-05
  • 打赏
  • 举报
回复
没查到有二楼说的这个消息,再顶下
zhangchaokun 2009-08-04
  • 打赏
  • 举报
回复
采用#2楼的,使用发送消息的方式
frazer 2009-08-04
  • 打赏
  • 举报
回复
我补充下,其实不是子对话框,用以下的语句生成

CreateDialog(hInst,MAKEINTRESOURCE(IDD_SET_PARAM),NULL,ParamDialogProc);
oyljerry 2009-08-04
  • 打赏
  • 举报
回复
http://blog.csdn.net/commandos/archive/2007/11/27/1904558.aspx
frazer 2009-08-04
  • 打赏
  • 举报
回复
是非模态对话框
雪影 2009-08-04
  • 打赏
  • 举报
回复
在响应对话框激活消息是,向子对话框发送WM_ACTIVATETOPLEVEL消息。
雪影 2009-08-04
  • 打赏
  • 举报
回复
你创建的应该是非模态对话框吧?

子对话框不能获取WM_ACTIVATE和WM_NCACTIVATE消息,都被父窗口处理完了。

15,979

社区成员

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

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