首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

启动MFC程序后,若没关闭,再启动就打开不了,应该如何做?多谢

2013-01-23 
启动MFC程序后,若没关闭,再启动就打开不了,应该怎么做?谢谢例如做了个MFC程序A,打开A 正常启动。未关闭,打

启动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();

热点排行