windows-nt/Source/XPSP1/NT/shell/themes/test/ctlperf/ctlperf.cpp
2020-09-26 16:20:57 +08:00

129 lines
3.4 KiB
C++

//------------------------------------------------------------------------
//
// File: shell\themes\test\ctlperf\CtlPerf.cpp
//
// Contents: Main source file for CtlPerf.exe
// This file was generated by the WTL app wizard.
//
// Classes: None
//
//------------------------------------------------------------------------
#include "stdafx.h"
#include <atlframe.h>
#include "resource.h"
#include "CtlPerfView.h"
#include "aboutdlg.h"
#include "MainFrm.h"
CAppModule _Module;
//------------------------------------------------------------------------
//
// Function: Run
//
// Synopsis: Create main window and start message loop
//
//------------------------------------------------------------------------
int Run(LPTSTR lpstrCmdLine = NULL, int /*nCmdShow*/ = SW_SHOWDEFAULT)
{
CMessageLoop theLoop;
_Module.AddMessageLoop(&theLoop);
CMainFrame wndMain;
if(wndMain.CreateEx() == NULL)
{
ATLTRACE(_T("Main window creation failed!\n"));
return 0;
}
wndMain.ShowWindow(SW_MAXIMIZE);
//** Parse command line
if (lpstrCmdLine)
{
::CharLower(lpstrCmdLine);
LPTSTR p = _tcsstr(lpstrCmdLine, _T("/l"));
TCHAR pszLogFileName[_MAX_PATH + 1];
if(p) // Copy the log file name
{
_tcscpy(pszLogFileName, p + 2);
p = pszLogFileName;
while (*p && *p != _T(' '))
{
p++;
}
if (*p)
{
*p = _T('\0');
}
}
// We communicate by messages with the main frame (the only thing we know from here)
// that will forward to the view
if (_tcsstr(lpstrCmdLine, _T("1pass")))
{
wndMain.PostMessage(WM_COMMAND, IDM_BATCH1, p ? (LPARAM) pszLogFileName : 0);
}
else if (_tcsstr(lpstrCmdLine, _T("2pass")))
{
if(_tcsstr(lpstrCmdLine, _T("/s")))
{
wndMain.PostMessage(WM_COMMAND, IDM_BATCH3, p ? (LPARAM) pszLogFileName : 0);
}
else
{
wndMain.PostMessage(WM_COMMAND, IDM_BATCH2, p ? (LPARAM) pszLogFileName : 0);
}
}
}
int nRet = theLoop.Run();
_Module.RemoveMessageLoop();
return nRet;
}
//------------------------------------------------------------------------
//
// Function: _tWinMain
//
// Synopsis: Main entry point
//
//------------------------------------------------------------------------
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow)
{
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));
#if (_WIN32_IE >= 0x0300)
INITCOMMONCONTROLSEX iccx;
iccx.dwSize = sizeof(iccx);
//iccx.dwICC = ICC_COOL_CLASSES | ICC_BAR_CLASSES;
iccx.dwICC = 0x3FFF;
BOOL bRet = ::InitCommonControlsEx(&iccx);
bRet;
ATLASSERT(bRet);
#else
::InitCommonControls();
#endif
hRes = _Module.Init(NULL, hInstance);
ATLASSERT(SUCCEEDED(hRes));
int nRet = Run(lpstrCmdLine, nCmdShow);
_Module.Term();
::CoUninitialize();
return nRet;
}