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 属性去掉。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值