四联光电智能照明论坛

标题: MFC隐藏你的窗体? [打印本页]

作者: 魔幻使者Jack    时间: 2015-11-26 13:48
标题: MFC隐藏你的窗体?
MFC怎么隐藏你的窗体呢?简单,重载OnWindowPosChanging:
  1. void CdebugDlg::OnWindowPosChanging(WINDOWPOS* lpwndpos)
  2. {
  3.         CDialogEx::OnWindowPosChanging(lpwndpos);
  4.         lpwndpos->flags &= ~SWP_SHOWWINDOW;  //不显示窗口
  5. }
复制代码



作者: admin    时间: 2015-11-26 13:57
嗯,但任务栏上应该没隐藏吧!!
为什么在WindowPosChanging消息响应函数里隐藏呢?也可以在WinApp的InitInstance里窗口初始化后直接隐藏!
作者: gxm771208    时间: 2015-11-26 14:02
本帖最后由 gxm771208 于 2015-11-26 14:07 编辑

或在OnInitDialog里隐藏,看是模式对话框还是非模式对话框
作者: 风火石    时间: 2015-11-26 21:15
一般如果不要求在任务栏上也隐藏的话,只在OnInitDialog里加入ShowWindow(SW_HIDE)就可以了
作者: 魔幻使者Jack    时间: 2015-12-23 13:44
InitInstance或OnInitDialog里加入ShowWindow(SW_HIDE)是无效的,InitInstance创建窗体,OnInitDialog创建控件,完毕之后还会调用RunModalLoop,对话框的消息循环。只要你的对话框里有WS_VISIBLE属性,在此消息循环中就会显示窗体
作者: Xiaoxue    时间: 2015-12-23 21:07
为啥在OnInitDialog里加这段代码行呢?
  1. WINDOWPLACEMENT wp;
  2. wp.length=sizeof(WINDOWPLACEMENT);
  3. wp.flags=WPF_RESTORETOMAXIMIZED;
  4. wp.showCmd=SW_HIDE;
  5. SetWindowPlacement(&wp);
复制代码

求答案!!!
作者: linux    时间: 2015-12-23 21:22
非模态对话框直接的创建后调用ShowWindow(SW_HIDE)就可以了
作者: 魔幻使者Jack    时间: 2015-12-25 14:53
Xiaoxue 发表于 2015-12-23 21:07
为啥在OnInitDialog里加这段代码行呢?

求答案!!!

加入代码后效果见图,这也叫隐藏窗体?






欢迎光临 四联光电智能照明论坛 (http://5xhome.com/) Powered by Discuz! X3.2