返回列表 回复 发帖

MFC模态对话框启动时候自动隐藏窗体

本帖最后由 ghosthand 于 2014-2-25 00:11 编辑

1、声明窗体回调函数,在对话框的头文件中
  1. // Generated message map functions
  2.     //{{AFX_MSG(CHappyDlg)
  3.     afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);
  4.     //}}AFX_MSG
  5.     DECLARE_MESSAGE_MAP()
复制代码
2、在窗体实现文件中作消息映射
  1. BEGIN_MESSAGE_MAP(CHappyDlg, CDialog)
  2.     //{{AFX_MSG_MAP(CHappyDlg)
  3.     ON_WM_WINDOWPOSCHANGING()
  4.     //}}AFX_MSG_MAP
  5. END_MESSAGE_MAP()
复制代码
3、在消息处理中对窗体实现隐藏
  1. void CXXXDlg::OnWindowPosChanging(WINDOWPOS* lpwndpos)
  2. {
  3.     //启动隐藏
  4.     if(lpwndpos->flags&SWP_SHOWWINDOW)
  5.     {
  6.         lpwndpos->flags&=~SWP_SHOWWINDOW;
  7.         PostMessage(WM_WINDOWPOSCHANGING,0,(LPARAM)lpwndpos);
  8.         ShowWindow(SW_HIDE);
  9.     }
  10.     else
  11.         CDialog::OnWindowPosChanging(lpwndpos);
  12. }
复制代码
这个类似于微软Word加载的第一个窗口。显示加载完,就自动消失。
回复 2# fwbook

Word开始的窗口提示加载信息,加载完以后软件没必要再维护这个模态对话框的资源了,所以应该是被系统释放掉资源的。这帖子中的代码是将主对话框的属性修改后实现在不释放资源的情况下将模态对话框隐藏的。如果是非模态对话框的隐藏就比较容易了。
返回列表