bsh*_*52s 5 command-line mfc arguments
我有一个现有的简单MFC应用程序,用户指定输入文件,输出文件,然后是"处理"按钮.我想添加功能,以便输入/输出文件是命令行参数.但是,如果它们存在,我不希望GUI出现.我只想要执行"进程".我看到我可以在哪里获得命令行参数(m_lpCmdLine)但是如何绕过GUI的显示?如果我进入应用程序,它会直接进入winmain.cpp并显示GUI而不会进入我的任何代码.
MFC 设置一个名为 C[您的应用程序名称]App 的类(例如 CExampleApp),存储在 [您的应用程序名称].h/.cpp(例如Example.h/.cpp)中。在这里,您将有一个名为“ InitInstance”(再次由 MFC 自动生成)。如果您创建了一个基于对话框的应用程序,那么您将在函数中看到一些如下所示的代码:
CExampleDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
Run Code Online (Sandbox Code Playgroud)
具体来说,“dlg.DoModal()”调用将调用您的对话框窗口。如果你避免这种情况,那么 GUI 将永远不会启动。
如果您使用的是 MDI 应用程序,那么您将拥有如下代码:
// create main MDI Frame window
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pMainFrame;
pMainFrame->ShowWindow(m_nCmdShow);
pMainFrame->UpdateWindow();
Run Code Online (Sandbox Code Playgroud)
这将创建并显示您的主窗口。避免这种情况,将不会创建任何窗口。然而,您必须从 InitInstance 函数返回 FALSE,否则它将进入应用程序消息泵。