读书人

启动MFC程序后若没关闭再启动就打

发布时间: 2013-01-23 10:44:49 作者: rapoo

启动MFC程序后,若没关闭,再启动就打开不了,应该怎么做?谢谢
例如做了个MFC程序A,打开A 正常启动。未关闭,打开A,不在弹出。已关闭,打开A,正常打开
[解决办法]

//创建命名信标对象。

HANDLE hSem=CreateSemaphore(NULL,1,1,"维新");

if(hSem) //信标对象创建成功。

{

//信标对象已经存在,则程序已有一个实例在运行。

if(ERROR_ALREADY_EXISTS==GetLastError())

{

CloseHandle(hSem); //关闭信号量句柄。



//获取桌面窗口的一个子窗口。

HWND hWndPrev=::GetWindow(::GetDesktopWindow(),GW_CHILD);



while(::IsWindow(hWndPrev))

{

//判断窗口是否有我们预先设置的标记,如有,则是我们寻找的窗口,并将它激活。

if(::GetProp(hWndPrev,"维新"))

{

//如果主窗口已最小化,则恢复其大小。

if (::IsIconic(hWndPrev))

::ShowWindow(hWndPrev,SW_RESTORE);



//将应用程序的主窗口激活。

::SetForegroundWindow(hWndPrev);

return FALSE; //退出实例。

}



//继续寻找下一个窗口。

hWndPrev = ::GetWindow(hWndPrev,GW_HWNDNEXT);

}



AfxMessageBox("已有一个实例在运行,但找不到它的主窗口!");

}

}

else

{

AfxMessageBox("创建信标对象失败,程序退出!");

return FALSE;

}


[解决办法]
你加的地方不对啊。都int nResponse = dlg.DoModal();对话框都出来了....


引用:
你敢不敢把代码加在
BOOL CThreaderTestApp::InitInstance()
{
//这里
AfxEnableControlContainer();

读书人网 >VC/MFC

热点推荐