您的位置:首页 > 其它

另一种方法实现弹出自身实例的子窗体

2009-06-17 14:21 387 查看
CString CFindWindowExDlg::CreateNewTitle()
{
// 拿这个当唯一标示,在全球都找不到重样的,哈哈
OLECHAR olechar[255];
CString str;
GUID guid;
CoCreateGuid(&guid);
StringFromGUID2(guid, olechar, 255);
str = olechar;
return str;
}

void CFindWindowExDlg::OnBnClickedButton1()
{
static bool bFirst = FALSE;
static CString strDlgTitle;
if (!bFirst)
{
bFirst = TRUE;
strDlgTitle = CreateNewTitle();

Cat *dlg = new Cat;
dlg->Create(IDD_DIALOG1, CWnd::GetDesktopWindow());
dlg->SetWindowText(strDlgTitle);
dlg->ShowWindow(SW_SHOW);
}
else
{
HWND hWnd = ::FindWindowEx(NULL, NULL, NULL, strDlgTitle);
if(hWnd != NULL)
{
::ShowWindow(hWnd, SW_SHOWNORMAL);
::SetForegroundWindow(hWnd);
return ;
}
else
{
return ;
}
}
}

void CFindWindowExDlg::OnBnClickedButton2()
{
static bool bFirst = FALSE;
static CString strDlgTitle;
if (!bFirst)
{
bFirst = TRUE;
strDlgTitle = CreateNewTitle();

Cat *dlg = new Cat;
dlg->Create(IDD_DIALOG1, CWnd::GetDesktopWindow());
dlg->SetWindowText(strDlgTitle);
dlg->ShowWindow(SW_SHOW);
}
else
{
HWND hWnd = ::FindWindowEx(NULL, NULL, NULL, strDlgTitle);
if(hWnd != NULL)
{
::ShowWindow(hWnd, SW_SHOWNORMAL);
::SetForegroundWindow(hWnd);
return ;
}
else
{
return ;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: