对于基于对话框的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基于对话框程序启动时隐藏窗口的实现相关推荐

  1. 2.实验室打卡精灵2.0-单实例化、开机启动、托盘操作、程序启动时隐藏主窗口

    老规矩,上一张图片 最近对实验室打卡精灵做了一些优化,基本上达到了最初设想的功能. 现在的功能包括: 1.自定义早上.中午.下午.晚上的打卡时间 2.软件单实例化,即如果已经运行了一次再次运行会弹出& ...

  2. 如何使对话框程序启动以及主窗口最小化时不在任务栏上显示

    时下流行的许多软件,如QQ,迅雷等,启动主程序以及主窗口最小化时,不在任务栏上显示按钮,这是怎么做到的呢? 首先说主窗口启动时不再任务栏上显示按钮的问题 方法1,将主窗口的属性设置为WS_EX_TOO ...

  3. [VC/MFC]一条语句实现程序运行时隐藏窗口

    因为受到经济危机的影响,我在 bokee.com 的博客可能随时出现无法访问的情况:因此将2005年到2006年间在 bokee.com 撰写的博客文章全部迁移到 csdn 博客中来,本文正是其中一篇 ...

  4. 启动时隐藏窗口及恢复

    ---------------------------------------------OnInitDialog------------------------------------------- ...

  5. winform7、(c#) 窗口启动时隐藏主窗口

    winform7.(c#) 窗口启动时隐藏主窗口 隐藏窗口用的是this.Hide();,但是在主窗口构造函数里使用并不生效. 让C#让窗体在启动时直接隐藏最完美的解决办法,不闪烁.思路为:首先将窗体 ...

  6. 程序启动时,vc2015设置哪个窗体先打开,优先启动,设置方法

    程序启动时,vc2015设置哪个窗体先打开,设置方法 工程名对应的APP文件中 InitInstance中 //Caccess_mdb_operationDlg dlg;  //可以设置这里,首先启动 ...

  7. 如何在ASP.NET Core程序启动时运行异步任务(2)

    原文:Running async tasks on app startup in ASP.NET Core (Part 2) 作者:Andrew Lock 译者:Lamond Lu 在我的上一篇博客中 ...

  8. WinForm程序启动时不显示主窗体的实现方法

    望程序启动时不显示主窗体,而只是在SystemTray显示一个图标:当用户点击该图标时,才第一次显示出主窗体来. 作者在文章中已经说得很清楚,将Form的Visible属性设置为false是不行的,因 ...

  9. linux c 启动程序吗,Linux下C程序启动时的系统调用

    写程序跟踪发现,在Linux i386中,一个程序体完全为空的C语言程序启动时要进行近100个系统调用,如下所示. [ 1]syscall: 11 //execve [ 2]syscall: 45 / ...

  10. VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题)

    VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题) 参考文章: (1)VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题) (2)https://www.cnblogs.com/ ...

最新文章

  1. Oracle数据库导入导出命令!
  2. 微信公众平台消息接口PHP版
  3. 47 jQuery文本内容值
  4. 【转】C++面试题(四)——智能指针的原理和实现
  5. 做一个快乐的产品经理
  6. 济南python工资一般多少钱-济南python开发培训机构哪个好
  7. 差分定位中控软件_【最佳实践】海口美兰国际机场车辆定位管理系统应用
  8. 第六章:面向对象(二)
  9. Windows® CE 系统中的同步机制
  10. ECshop 快捷登录插件 支持QQ 支付宝 微博
  11. 可以学习的国外课件链接地址(自己收集)
  12. increment java_post-increment, pre-increment. JAVA
  13. saltstack 快速入门
  14. “云时代架构”经典文章阅读感想十三
  15. $.post 提交文件_PHP表单提交
  16. ECharts设置双x轴
  17. CCL2022 中文语法纠错评测
  18. Python入门学习笔记17(sqlalchemyd的使用)
  19. 【java】数组的定义以及初级运用精讲(起点闭关计划)
  20. 遗传算法(GA/NSGA)优化神经网络 GA-BP

热门文章

  1. windows电脑版便签工具哪款好用?
  2. 实对称阵的正交相似对角化
  3. 实对称矩阵一定可以相似对角化
  4. MATLAB实现遥感图像分类——K均值算法
  5. 牛客网笔试输入输出的一堆坑。。(Python)
  6. MATLAB数据类型结构
  7. RFID定位技术下的智能养老系统具有哪些优势呢?--新导智能
  8. 多源信息融合与多视角学习
  9. 神经网络模型如何使用的,神经网络模型是干嘛的
  10. 论文总结(3):Intelligent Traffic Monitoring Systems for Vehicle Classification: A Survey