前言
在我们日常编程中,会遇见需要开启软件时不显示界面的情况,而MFC的对话框在OnInitDialog
函数中使用,this->ShowWindow(SW_HIDE);
函数是不起作用的。设置Dialog的属性可见为False
也是无效的,所以这里详细说明以下,MFC中如何解决启动时完美隐藏窗口。
解决问题
介绍:这里的问题主要为MFC中Dialog窗口的属性可见在模态对话框中是无效的,所以我们需要将对话框改为非模态,并设置可见属性为False
就可以完美的解决我们的问题了。下面为具体操作。
1、在MFC程序的BOOL CDemoApp::InitInstance()
函数将模态对话框改为非模态对话框。下列为示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| BOOL CDemoApp::InitInstance() { INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
AfxEnableControlContainer();
CShellManager *pShellManager = new CShellManager;
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
CDemoApp dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.Create(IDD_DEMO_DIALOG); dlg.RunModalLoop(); if (nResponse == IDOK) { } else if (nResponse == IDCANCEL) { } else if (nResponse == -1) { TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n"); TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n"); }
if (pShellManager != nullptr) { delete pShellManager; }
#if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS) ControlBarCleanUp(); #endif
return FALSE; }
|
2、修改Dialog的可见属性为False
。
结束语
经过上述代码,我们就做好了启动时隐藏对话框了。如果本文章对你有用,请点赞加评论哦~