如何判断非模态对话框已经创建了

2025-03-13 13:56:20
推荐回答(1个)
回答1:

在使用MFC做UI时,经常会进行不同界面(对话框)之间的切换。这时就需要去判断对话框是否已经被创建。创建非模态对话框的两种方式:类的对象与类的指针。
现有类 classCTestDialog : public CDialog { }.

1. 使用类的对象处理对话框
CTestDialog m_TestDialog; //定义类CTestDialog的对象

if(m_TestDialog.GetSafeHwnd()) //为TRUE 说明对话框已经被创建
{
m_TestDialog.ShowWindow(true);
}
else
{
m_TestDialog.Create(IDD_TEST_DIALOG);
}

2. 使用类的指针处理对话框
CTestDialog * p_TestDialog; //定义类CTestDialog的指针
p_TestDialog= NULL;

if (p_TestDialog== NULL) //直接判断指针是否为空来判断对话框是否被创建
{
p_TestDialog = new CTestDialog ();
p_TestDialog ->Create(IDD_TEST_DIALOG);
p_TestDialog->ShowWindow(SW_SHOWNORMAL);
}
else
{
p_TestDialog->ShowWindow(SW_SHOWNORMAL);
}