BOOL CDBMApp::InitInstance()
{
//系统代码
hMutexApp=::CreateMutex(NULL,FALSE,"Only One");
if(hMutexApp!=NULL)
{
UINT WM_ACT=::RegisterWindowMessage("ACTIVEWINDOW");
if(GetLastError()==ERROR_ALREADY_EXISTS)
{
//OpenMutex(NULL,FALSE,"Only One");
DWORD dwFlag=BSF_IGNORECURRENTTASK; //不向本进程发送消息
DWORD dwRecip=BSM_APPLICATIONS;
::BroadcastSystemMessage(dwFlag,&dwRecip,WM_ACT,0,0);
return FALSE; // 关闭本进程
}
}
在 CDBMDlg.h 公共部分加入
1. static UINT WM_ACT; //互斥消息定义
2.//{{AFX_MSG(CDBMDlg)
virtual BOOL OnInitDialog();
...................
afx_msg LRESULT OnActive(WPARAM wParam ,LPARAM lParam);
//}}AFX_MSG
在CDBMDlg.cpp add a custom MessageMap function.....
1.BEGIN_MESSAGE_MAP(CDBMDlg, CDialog)
//{{AFX_MSG_MAP(CDBMDlg)
ON_REGISTERED_MESSAGE(WM_ACT,OnActive)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
2.LRESULT CDBMDlg::OnActive(WPARAM wParam ,LPARAM lParam)
{
return 0;
}