MFC基于对话框程序启动时隐藏窗口的实现
对于基于对话框的MFC程序,如果想要程序启动时就隐藏主窗口,无法在该对话框类的OnInitialDialog()函数中实现隐藏窗口的功能。但是,可以通过对话框程序响应WM_WINDOWPOSCHANGING消息来实现隐藏窗口的功能。
1 OnInitialDialog()函数
OnInitialDialog()函数是CDialog类的成员函数,该函数用来响应WM_INITDIALOG消息的。当调用CDialog类的Create()、CreateIndirect()和DoModal()函数时,都会向对话框发送WM_INITDIALOG消息,对话框收到该消息后调用OnInitialDialog()函数。
在OnInitialDialog()函数中主要完成一些特殊的处理,这些处理将会在对话框初始化时起作用。例如,设置对话框的风格、标题等。需要注意的是,OnInitialDialog()函数是在显示对话框之前被调用的,因此,即使在该函数中使用了
ShowWindow(SW_HIDE);
代码来隐藏对话框,在该函数调用之后,显示对话框的函数还会被调用,所以对话框仍然会显示。
2 OnWindowPosChanging()函数
可以在WM_WINDOWPOSCHANGING消息的响应函数OnWindowPosChanging()中将对话框的显示属性去掉,达到隐藏对话框的目的。
当对话框的大小、位置或者排列层次即将发生变化时,系统会向该对话框发送WM_WINDOWPOSCHANGING消息,该消息的响应函数为OnWindowPosChanging(),该函数的格式为
afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos
);
参数lpwndpos 是 WINDOWPOS 结构的指针,该结构包含了窗口大小和位置的信息。其中有一个成员变量 flags 表示窗口位置的属性,该成员变量的值 SWP_SHOWWINDOW 表示显示窗口,我们只需将变量中的该值去掉即可。
为窗口添加WM_WINDOWPOSCHANGING消息的响应OnWindowPosChanging(),在该函数中添加如下代码
lpwndpos->flags &= ~SWP_SHOWWINDOW;
以上代码的功能即为将flags 中 SWP_SHOWWINDOW 属性去掉。
MFC基于对话框程序启动时隐藏窗口的实现相关推荐
- 2.实验室打卡精灵2.0-单实例化、开机启动、托盘操作、程序启动时隐藏主窗口
老规矩,上一张图片 最近对实验室打卡精灵做了一些优化,基本上达到了最初设想的功能. 现在的功能包括: 1.自定义早上.中午.下午.晚上的打卡时间 2.软件单实例化,即如果已经运行了一次再次运行会弹出& ...
- 如何使对话框程序启动以及主窗口最小化时不在任务栏上显示
时下流行的许多软件,如QQ,迅雷等,启动主程序以及主窗口最小化时,不在任务栏上显示按钮,这是怎么做到的呢? 首先说主窗口启动时不再任务栏上显示按钮的问题 方法1,将主窗口的属性设置为WS_EX_TOO ...
- [VC/MFC]一条语句实现程序运行时隐藏窗口
因为受到经济危机的影响,我在 bokee.com 的博客可能随时出现无法访问的情况:因此将2005年到2006年间在 bokee.com 撰写的博客文章全部迁移到 csdn 博客中来,本文正是其中一篇 ...
- 启动时隐藏窗口及恢复
---------------------------------------------OnInitDialog------------------------------------------- ...
- winform7、(c#) 窗口启动时隐藏主窗口
winform7.(c#) 窗口启动时隐藏主窗口 隐藏窗口用的是this.Hide();,但是在主窗口构造函数里使用并不生效. 让C#让窗体在启动时直接隐藏最完美的解决办法,不闪烁.思路为:首先将窗体 ...
- 程序启动时,vc2015设置哪个窗体先打开,优先启动,设置方法
程序启动时,vc2015设置哪个窗体先打开,设置方法 工程名对应的APP文件中 InitInstance中 //Caccess_mdb_operationDlg dlg; //可以设置这里,首先启动 ...
- 如何在ASP.NET Core程序启动时运行异步任务(2)
原文:Running async tasks on app startup in ASP.NET Core (Part 2) 作者:Andrew Lock 译者:Lamond Lu 在我的上一篇博客中 ...
- WinForm程序启动时不显示主窗体的实现方法
望程序启动时不显示主窗体,而只是在SystemTray显示一个图标:当用户点击该图标时,才第一次显示出主窗体来. 作者在文章中已经说得很清楚,将Form的Visible属性设置为false是不行的,因 ...
- linux c 启动程序吗,Linux下C程序启动时的系统调用
写程序跟踪发现,在Linux i386中,一个程序体完全为空的C语言程序启动时要进行近100个系统调用,如下所示. [ 1]syscall: 11 //execve [ 2]syscall: 45 / ...
- VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题)
VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题) 参考文章: (1)VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题) (2)https://www.cnblogs.com/ ...
最新文章
- Oracle数据库导入导出命令!
- 微信公众平台消息接口PHP版
- 47 jQuery文本内容值
- 【转】C++面试题(四)——智能指针的原理和实现
- 做一个快乐的产品经理
- 济南python工资一般多少钱-济南python开发培训机构哪个好
- 差分定位中控软件_【最佳实践】海口美兰国际机场车辆定位管理系统应用
- 第六章:面向对象(二)
- Windows® CE 系统中的同步机制
- ECshop 快捷登录插件 支持QQ 支付宝 微博
- 可以学习的国外课件链接地址(自己收集)
- increment java_post-increment, pre-increment. JAVA
- saltstack 快速入门
- “云时代架构”经典文章阅读感想十三
- $.post 提交文件_PHP表单提交
- ECharts设置双x轴
- CCL2022 中文语法纠错评测
- Python入门学习笔记17(sqlalchemyd的使用)
- 【java】数组的定义以及初级运用精讲(起点闭关计划)
- 遗传算法(GA/NSGA)优化神经网络 GA-BP