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