也谈如何隐藏显示在任务栏中的对话框程序

2016-01-29 11:56 6 1 收藏

也谈如何隐藏显示在任务栏中的对话框程序,也谈如何隐藏显示在任务栏中的对话框程序

【 tulaoshi.com - C语言心得技巧 】

也谈如何隐藏显示在任务栏中的对话框程序


作者:1.5kg

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

下载源代码

介绍
  在 VCKBASE Online Journal 第21期中,NorthTibet 写了“如何隐藏显示在任务栏中的对话框程序”一文,颇为巧妙,而且非常好用,唯一不爽的是有点麻烦。踩在他的肩膀上,我找到了一个比较简单的方法。

实现
  隐藏这个Main Dialog的思路就是把这个Dialog看成一个子窗口,然后再把WS_EX_APPWINDOW属性去掉。
WS_EX_APPWINDOW不大常用,MSDN的解释是:

Forces a top-level window onto the taskbar when the window is visible. 
把顶层的并且可见的窗口放到任务栏上,移除 WS_EX_APPWINDOW 很容易:
ModifyStyleEx(WS_EX_APPWINDOW, 0);
就可以了。

那么什么办法能够最简单的实现创建一个父窗口呢?CFrameWnd 就有点笨了,干脆就用自己好了。在
BOOL CHideApp::InitInstance()中:
CHideDlg dlgParent;dlgParent.Create(IDD_HIDE_DIALOG);dlgParent.ShowWindow(SW_HIDE);//dlgParent.ShowWindow(SW_SHOW);CHideDlg dlg(&dlgParent);m_pMainWnd = &dlg;int nResponse = dlg.DoModal();dlgParent.DestroyWindow();
在BOOL CHideDlg::OnInitDialog()中:
this->ModifyStyleEx(WS_EX_APPWINDOW, 0);
只短短几行,就实现了对话框在任务栏的隐藏。

结束语
  如果使用 CDialog 的话,ALT+TAB 图标就不对了:) 之前我也试过用 CWnd,可恨的是它还要去注册窗口类,相比之下还是CHideDlg 最经济,你说呢?祝大家身体健康,每天都有新发现!

E-Mail : webmaster@sanjin.51.net QQ : 923452

来源:http://www.tulaoshi.com/n/20160129/1483924.html

延伸阅读
无 标题栏对话框的拖动 编译/NorthTibet 下载源代码     很多基于对话框的应用程序都是不带框架的,也就是说对话框没有标题栏。众所周知,窗口的移动都是通过鼠标点住标题栏拖动窗口实现的,那么现在没有了标题栏,如何移动对话框呢?本文拟针对这个问题提出...
如何在基于对话框的程序中动态设置鼠标指针 赵湘宁 本文范例程序     本文旨在示范在对话框的按钮上(或其它控制上)使用单独的鼠标指针。Windows编程中有两种方法改变指针:一种是当应用的主窗口类注册时,为WNDCLASS结构提供一个全程光标指针(HCU...
标签: 电脑入门
效率一向是多数人使用电脑的一个目标,怎样提高电脑操作的效率一直是很多用户的追求。在Win10系统上,我们可以快速从任务栏打开一个网站,只需要添加地址工具栏就行。 操作方法 1.右键点击任务栏,选择属性。 2.跳转到工具栏。 3.将地址前面的方框勾选,点击确定。 4.任务栏上出现了地址输入框,输入网址就能打开网站。 如果...
Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As LongDeclare Function ShowWindow Lib "user32" Alias "ShowWindow" _ (ByVal hwnd As Long, ByVal nCmdShow As Long) As LongPublic Const SW_SHOW = 5Publ...
问:程序是基于对话框的,我显示两个对话框,一个在另一个后面,下面是我的做法: CMyApp::InitInstance () { ... CMyDialog1 dlg1; m_hMainWnd = &dlg1; int result = dlg1.DoModal (); CMyDialog2 dlg2; result = dlg2.DoModal (); ... } 在上面的代码中,首先一个对话框得到了适当地调用...

经验教程

618

收藏

64
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部