gpt4 book ai didi

command-line - 如果存在命令行选项,如何绕过 MFC 应用程序中的 GUI?

转载 作者:行者123 更新时间:2023-12-04 04:58:59 25 4
gpt4 key购买 nike

我有一个现有的简单 MFC 应用程序,用户指定输入文件、输出文件,然后是“处理”按钮。我只想添加功能,以便输入/输出文件是命令行参数。但是,如果它们存在,我不希望 GUI 出现。我只想执行“流程”。我知道在哪里可以获取命令行参数 (m_lpCmdLine),但是如何绕过 GUI 的显示?如果我进入应用程序,它会直接进入 winmain.cpp 并显示 GUI,而无需进入我的任何代码。

最佳答案

MFC 设置了一个名为 C[Your App Name]App(例如 CExampleApp)的类存储在 [Your App Name].h/.cpp(例如 Example.h/.cpp)中,在这里你将有一个名为“的函数” InitInstance”(再次由 MFC 自动生成)。如果您已经创建了一个基于 Dialog 的应用程序,那么您将在函数中看到一些如下所示的代码:

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
}

特别是“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();

这将创建并显示您的主窗口。避免这种情况,不会创建任何窗口。但是,您必须从 InitInstance 函数返回 FALSE,否则它将进入应用程序消息泵。

关于command-line - 如果存在命令行选项,如何绕过 MFC 应用程序中的 GUI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3062958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com