MFC 只啟動一個程序實例


問題描述: 我們開發過程中可能會經常遇到,只啟動一個程序實例。即一個程序啟動之后,如果再次執行該程序,將會恢復之前打開的程序,而不是打開一個新的程序。

實現原理:利用FindWindow/FindWindowEx查找指定窗口的句柄,如果找到,則當前程序已經執行,只需重新顯示到最前面即可;如果沒有找到,表示程序沒有運行, 繼續執行程序初始化。

程序示例:

BOOL SingletonInstance()
{
    HWND hPreWnd;

    if ( hPreWnd = ::FindWindow(NULL, APP_NAME) )
    {
        if ( IsIconic(hPreWnd) )  // IsIconic: Is Minisized? IsZoomed: Is Maxisized?
         {
            ::ShowWindow( hPreWnd, SW_SHOWNORMAL );
            SetForegroundWindow(hPreWnd);
        }
        else
        {
            ::ShowWindow( hPreWnd, SW_RESTORE );
            SetForegroundWindow(hPreWnd);
        }

        return TRUE;
    }

    return FALSE;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM