mirror of
https://github.com/T800G/CBXShell.git
synced 2026-06-17 01:50:28 +00:00
63 lines
1.6 KiB
C++
63 lines
1.6 KiB
C++
#include "stdafx.h"
|
|
#include "resource.h"
|
|
|
|
#include "tools.h"
|
|
#include "MainDlg.h"
|
|
|
|
CAppModule _Module;
|
|
|
|
int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT)
|
|
{
|
|
CMessageLoop theLoop;
|
|
_Module.AddMessageLoop(&theLoop);
|
|
|
|
CMainDlg dlgMain;
|
|
|
|
if(dlgMain.Create(NULL) == NULL)
|
|
{
|
|
ATLTRACE(_T("Main dialog creation failed!\n"));
|
|
return 0;
|
|
}
|
|
|
|
dlgMain.ShowWindow(nCmdShow);
|
|
|
|
int nRet = theLoop.Run();
|
|
|
|
_Module.RemoveMessageLoop();
|
|
return nRet;
|
|
}
|
|
|
|
|
|
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow)
|
|
{
|
|
// one manager instance per user
|
|
CHandle mtx(CreateMutex(NULL, FALSE, CBX_MGRMUTEX));
|
|
if (GetLastError()==ERROR_ALREADY_EXISTS)
|
|
{
|
|
MessageBox(HWND_DESKTOP, _T("CBX Shell Manager is already running\n"), _T("Warning"),
|
|
MB_OK | MB_ICONWARNING | MB_SYSTEMMODAL);
|
|
return 0;
|
|
}
|
|
|
|
|
|
HRESULT hRes = ::CoInitialize(NULL);
|
|
// If you are running on NT 4.0 or higher you can use the following call instead to
|
|
// make the EXE free threaded. This means that calls come in on a random RPC thread.
|
|
// HRESULT hRes = ::CoInitializeEx(NULL, COINIT_MULTITHREADED);
|
|
ATLASSERT(SUCCEEDED(hRes));
|
|
|
|
// this resolves ATL window thunking problem when Microsoft Layer for Unicode (MSLU) is used
|
|
::DefWindowProc(NULL, 0, 0, 0L);
|
|
|
|
AtlInitCommonControls(ICC_BAR_CLASSES); // add flags to support other controls
|
|
|
|
hRes = _Module.Init(NULL, hInstance);
|
|
ATLASSERT(SUCCEEDED(hRes));
|
|
|
|
int nRet = Run(lpstrCmdLine, nCmdShow);
|
|
|
|
_Module.Term();
|
|
::CoUninitialize();
|
|
|
|
return nRet;
|
|
}
|