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

本文介绍了一种使用GUID创建唯一窗口标题的方法,并演示了如何通过该唯一标识来查找并显示相应的窗口。这种方法可以确保每个窗口都有独一无二的标题,从而便于在程序中进行精确的窗口定位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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 ;
  }
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值