首页 > 代码库 > 线程互斥

线程互斥

////////////////////////////////////////////////////////////////
 HINSTANCE hInsta=::LoadLibrary("language\\XSelf.dll");
 if(hInsta!=NULL) AfxSetResourceHandle(hInsta);
/////////////////////////////////////////////////////////////////////////
 char pszExeName[32]="OnXDC XSelf";
 ::CreateMutex(NULL, TRUE, m_pszExeName);
 if (GetLastError()==ERROR_ALREADY_EXISTS) 
 {
  //Find our previous application‘s main window
  CWnd *pPrevWnd=CWnd::GetDesktopWindow()->GetWindow(GW_CHILD);
  while (pPrevWnd)
  {
   //Does this window have the previous instance tag set?
   if (::GetProp(pPrevWnd->GetSafeHwnd(), m_pszExeName))
   {
    //found window,now set focus to the window
    //first restore window if it is currently iconic
    if (pPrevWnd->IsIconic())
     pPrevWnd->ShowWindow(SW_RESTORE);
    //set focus to main window
    pPrevWnd->SetForegroundWindow();
    //if window has a pop-up window, set focus to pop-up
    pPrevWnd->GetLastActivePopup()->SetForegroundWindow();
    return FALSE;
   }
   //Did not find window,get next window in list
   pPrevWnd = pPrevWnd->GetWindow(GW_HWNDNEXT);
  }
  return FALSE;
 }

 

线程互斥