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


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、付费专栏及课程。

余额充值