gpt4 book ai didi

c++ - 使用单例创建对话框

转载 作者:太空宇宙 更新时间:2023-11-04 11:50:19 25 4
gpt4 key购买 nike

我正在尝试使用单例创建非模态对话框。

CMyDlg& CMyDlg::GetInstance()
{
static CMyDlg myDlg;
return myDlg;
}

然后在某个按钮上按下我调用 Create

CMyMain::OnSomeButtonPress()
{
CMyDlg::GetInstance().Create( CMyDlg::IDD );
}

但问题是当我尝试调用 Create 两次时它失败了(wincore.cpp 第 638 行中的内容)

我做错了什么,为什么

CMyDlg::GetInstance().Create( CMyDlg::IDD );

不能调用两次吗?

最佳答案

CMyDlg 最终派生自 CWnd,它包装了一个 HWND 句柄。 Create() 方法从“这个实例不代表任何物理窗口,m_hWndNULL”状态到“这个实例对应一个物理窗口,m_hWnd 是该窗口状态的句柄。自然地,Create() 首先断言 m_hWnd 确实是 NULL

如果你想让两个对话框同时出现在屏幕上,那么你需要两个CMyDlg实例来表示它们;你不能使用单例。如果您不想要两个对话框,那么为什么还要两次调用 Create()

关于c++ - 使用单例创建对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18634733/

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