以下是 CWinApp::RestartInstance 的基本用法:
BOOL CMyApp::InitInstance()
{
// 检查是否已经有实例在运行
CWnd* pPrevInstance = CWnd::FindWindow(NULL, m_pszAppName);
if (pPrevInstance)
{
// 如果已经有实例在运行,激活该实例并退出当前实例
if (pPrevInstance->IsIconic())
pPrevInstance->ShowWindow(SW_RESTORE);
pPrevInstance->SetForegroundWindow();
return FALSE;
}
// 其他初始化代码...
return TRUE;
}
int CMyApp::ExitInstance()
{
// 保存应用程序状态,例如窗口位置、大小等
// 重新启动应用程序实例
if (m_pMainWnd != nullptr)
{
AfxGetApp()->RestartInstance();
}
return CWinApp::ExitInstance();
}
在上述代码中,InitInstance 函数用于检查是否已经有实例在运行。如果已经有实例在运行,就激活该实例并退出当前实例。在 ExitInstance 函数中,通过调用 RestartInstance 方法重新启动应用程序实例。这样,当用户尝试启动第二个实例时,它会激活已经在运行的实例而不是创建新的实例。
请注意,具体的单实例处理逻辑可能因应用程序的需求而有所不同,上述代码只是一个简单的示例。
转载请注明出处:http://www.zyzy.cn/article/detail/23100/MFC/CWinApp