如何使用 MFC 从控制台正确弹出非模式对话框
我需要创建一个具有 main() 函数的控制台应用程序并弹出一个无模式对话框,因此控制台仍然可以与无模式对话框并行工作(做其他工作,就像与非模式对话框通信一样)。
无论我尝试什么,我都只能弹出一个模式对话框。 (控制台处于保持状态,直到模式对话框自行关闭)。
当使用 Create() 和 ShowWindow() 切换到无模式对话框时,该对话框将在没有控件的情况下显示,并且冻结/阻止(您可以看到沙漏光标)。
1) 我尝试从 main() 函数中弹出非模式对话框:
void main()
{
AfxWinInit(GetModuleHandle(NULL), NULL, GetCommandLine(), SW_SHOW);
TestGUI * gui;
gui = new TestGUI();
gui->Create(TestGUI::IDD);
gui->ShowWindow(SW_SHOW);
// just to see if the modeless dialog responses
Sleep(10000);
}
2) 我尝试从 CWinApp 派生类的 InitInstance() 中弹出非模式对话框:
extern int AFXAPI AfxWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow);
class MyApp : public CWinApp
{
public:
virtual BOOL InitInstance()
{
gui = new TestGUI();
gui->Create(TestGUI::IDD);
gui->ShowWindow(SW_SHOW);
return TRUE;
}
private:
TestGUI * gui;
};
MyApp my_app;
void main()
{
AfxWinMain(GetModuleHandle(NULL), NULL, GetCommandLine(), SW_SHOW);
// just to see if the modeless dialog responses
Sleep(10000);
}
在所有情况下,非模式对话框都会冻结。
我相信这是一个单行解决方案。
请帮忙。
TNX,
Vertilka
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
以下代码片段解决了问题:
另请参阅以下链接:
Following code snippet solves the problem:
Also look at the following link: microsoft newsgroups