// 唯一的一個 CLoaderApp 對象
CLoaderApp theApp;
// CLoaderApp 初始化
BOOL CModelDownLoaderApp::InitInstance()
{
// 如果一個運作在 Windows XP 上的應用程式清單指定要
// 使用 ComCtl32.dll 版本 6 或更高版本來啟用可視化方式,
//則需要 InitCommonControlsEx()。否則,将無法建立視窗。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它設定為包括所有要在應用程式中使用的
// 公共控件類。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
// 建立互斥量,檢查錯誤代碼
HANDLE m_hMutex = CreateMutex(NULL, FALSE, _T("model"));
DWORD nRet = GetLastError();
if (nRet == ERROR_ALREADY_EXISTS)
{
AfxMessageBox(_T("exe已經打開!"));
CloseHandle(m_hMutex);
m_hMutex = NULL;
return FALSE;
}
CWinApp::InitInstance();
AfxEnableControlContainer();
// 建立 shell 管理器,以防對話框包含
// 任何 shell 樹視圖控件或 shell 清單視圖控件。
CShellManager *pShellManager = new CShellManager;
// 标準初始化
// 如果未使用這些功能并希望減小
// 最終可執行檔案的大小,則應移除下列
// 不需要的特定初始化例程
// 更改用于存儲設定的系統資料庫項
// TODO: 應适當修改該字元串,
// 例如修改為公司或組織名
SetRegistryKey(_T("應用程式向導生成的本地應用程式"));
CLoaderDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此放置處理何時用
// “确定”來關閉對話框的代碼
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置處理何時用
// “取消”來關閉對話框的代碼
}
// 删除上面建立的 shell 管理器。
if (pShellManager != NULL)
{
delete pShellManager;
}
// 由于對話框已關閉,是以将傳回 FALSE 以便退出應用程式,
// 而不是啟動應用程式的消息泵。
return FALSE;
}