在编写对话框程序时,增加了个子对话框,想使用主对话框的界面直接拿来修改,于是直接复在左边的资源管视图(ResourceView)里面直接按Ctrl键拖拉复制了一个,更改对话框标题、ID,一切顺利。
但是运行的时候问题出现了!其它的子对话框弹出时任务栏上是一个图标,当复制的子对话框弹出时任务栏上多了一个图标!!!
查看对话框的属性,跟其它的对话框也没有区别!更改对话框的Styles里面的Style、Border属性,More Styles里面的Visible属性都没有变化。没办法G之,在《MFC中子对话框没有显示如何让它在任务栏上显示》一文中倒是提到了让子对话框显示的方法是在OnInitDialog函数中加入以下两句:
- ModifyStyleEx(0,WS_EX_APPWINDOW);
- ShowWindow(SW_SHOW);
一切真相大白:原来在对话框里面有扩展属性WS_EX_APPWINDOW是在属性页里面看不到的,而引文中提到的修改窗体属性正是给需要在任务栏中显示的窗口在运行时加入此属性。其实最简单的办法就是在对话框代码第三行加入上面一行就可以了。
代码如下所示。
- IDD_XXX_DIALOG DIALOGEX 0, 0, 320, 200
- STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU
- EXSTYLE WS_EX_APPWINDOW //如果不需要在任务栏里面显示,则注释掉此行,反之则加入
- FONT 9, "宋体"
- BEGIN
- ...
- END