如何隐藏显示在任务栏中的对话框程序
2010-06-29 20:42:32 来源:WEB开发网核心提示:以上是主要的源代码清单,下面对关键部分作一说明:在常规的 MFC 应用中,如何隐藏显示在任务栏中的对话框程序(2),CMyApp::CInitInstance 的作用是加载框架窗口,但这里创建的窗口时不可见的,这说明 WS_EX_TOOLWINDOW对隐不隐藏对话框没用太大关系,这方面谁有更好的经验,创建了主框架之后,
以上是主要的源代码清单,下面对关键部分作一说明:
在常规的 MFC 应用中,CMyApp::CInitInstance 的作用是加载框架窗口,但这里创建的窗口时不可见的。创建了主框架之后,我用它作为对话框的父窗口,即便它是不可见的,也应该在资源文件中给它一个菜单,否则 MFC 会很不爽。
CMainFrame::PreCreateWindow 是在创建窗口之前由框架调用的函数,因此可以在这里设置窗口的扩展属性 WS_EX_TOOLWINDOW,这样就将它丛任务栏隐藏了,因为框架是不可见的,所以不用关心标题栏的大小问题。
此外,对话框的扩展式样必须关闭。可以设置这个扩展式样看看效果:
ModifyStyleEx(0,WS_EX_APPWINDOW);
如果在代码中加上这行,那么对话框无法隐藏。这一点是一般想不到的诀窍,在默认的情况下,VC++ 的 IDE 在工程资源文件中会有这样一行式样描述:
EXSTYLE WS_EX_APPWINDOW
直接编辑.rc文件删除这行。
从理论上讲,之所以要创建隐藏的父窗口(WS_EX_TOOLWINDOW),是因为必须让对话框具备常规标题的缘故;如果你愿意要小标题,完全可以不设置 WS_EX_TOOLWINDOW,但 WS_ EX_APPWINDOW 一定要关闭。我试了一下没问题。这说明 WS_EX_TOOLWINDOW对隐不隐藏对话框没用太大关系。这方面谁有更好的经验,欢迎来信交流。
最后祝大家身体健康!
本文配套源码
更多精彩
赞助商链接