魔幻使者Jack 发表于 2015-11-26 13:48:31

MFC隐藏你的窗体?

MFC怎么隐藏你的窗体呢?简单,重载OnWindowPosChanging:void CdebugDlg::OnWindowPosChanging(WINDOWPOS* lpwndpos)
{
        CDialogEx::OnWindowPosChanging(lpwndpos);
        lpwndpos->flags &= ~SWP_SHOWWINDOW;//不显示窗口
}

admin 发表于 2015-11-26 13:57:42

嗯,但任务栏上应该没隐藏吧!!
为什么在WindowPosChanging消息响应函数里隐藏呢?也可以在WinApp的InitInstance里窗口初始化后直接隐藏!

gxm771208 发表于 2015-11-26 14:02:07

本帖最后由 gxm771208 于 2015-11-26 14:07 编辑

或在OnInitDialog里隐藏,看是模式对话框还是非模式对话框

风火石 发表于 2015-11-26 21:15:09

一般如果不要求在任务栏上也隐藏的话,只在OnInitDialog里加入ShowWindow(SW_HIDE)就可以了

魔幻使者Jack 发表于 2015-12-23 13:44:30

InitInstance或OnInitDialog里加入ShowWindow(SW_HIDE)是无效的,InitInstance创建窗体,OnInitDialog创建控件,完毕之后还会调用RunModalLoop,对话框的消息循环。只要你的对话框里有WS_VISIBLE属性,在此消息循环中就会显示窗体

Xiaoxue 发表于 2015-12-23 21:07:09

为啥在OnInitDialog里加这段代码行呢?
WINDOWPLACEMENT wp;
wp.length=sizeof(WINDOWPLACEMENT);
wp.flags=WPF_RESTORETOMAXIMIZED;
wp.showCmd=SW_HIDE;
SetWindowPlacement(&wp);
求答案!!!

linux 发表于 2015-12-23 21:22:48

非模态对话框直接的创建后调用ShowWindow(SW_HIDE)就可以了

魔幻使者Jack 发表于 2015-12-25 14:53:16

Xiaoxue 发表于 2015-12-23 21:07
为啥在OnInitDialog里加这段代码行呢?

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

页: [1]
查看完整版本: MFC隐藏你的窗体?