BOOL XXXApp::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。 否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
AfxEnableControlContainer();
//--------------------------------------------------------------------------------------------------------------
HANDLE m_hMutex = ::CreateMutex(NULL, FALSE, "NewIdApp");
//如果此事件(互斥量)已存在,则关闭程序。(禁止同时运行两个实例)
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
AfxMessageBox("The App has been run!");
return false; // 程序退出
}
// 释放互斥对象(句柄),并复位互斥量
if (m_hMutex)
{
ReleaseMutex(m_hMutex);
m_hMutex = NULL;
}
//-----------------------------------------------------------------------------------------------------------------
// 创建 shell 管理器,以防对话框包含
// 任何 shell 树视图控件或 shell 列表视图控件。
CShellManager *pShellManager = new CShellManager;
.....
}