text: // Chess.cpp : main source file for Chess.exe
  //
  
  #include "stdafx.h"
  
  #include "resource.h"
  #include "MainFrm.h"
  
  CAppModule _Module;
  
  int Run(LPTSTR /*lpstrCmdLine*/ = NULL, int nCmdShow = SW_SHOWDEFAULT)
  {
  	CMessageLoop theLoop;
  	_Module.AddMessageLoop(&theLoop);
  
  	CMainFrame wndMain;
  
  	wndMain.m_max.cx = 512;
  	wndMain.m_max.cy = 512;
  	wndMain.m_min.cx = 320;
  	wndMain.m_min.cy = 240;
  
  	RECT rc = {0};
  	rc.right = wndMain.m_max.cx;
  	rc.bottom = wndMain.m_max.cy;
  
  	if(wndMain.CreateEx(0, rc) == NULL)
  	{
  		ATLTRACE(_T("Main window creation failed!\n"));
  		return 0;
  	}
  	wndMain.CenterWindow(HWND_DESKTOP);
  
  	wndMain.ShowWindow(nCmdShow);
  
  	int nRet = theLoop.Run();
  
  	_Module.RemoveMessageLoop();
  	return nRet;
  }
  
  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));
  
  	// this resolves ATL window thunking problem when Microsoft Layer for Unicode (MSLU) is used
  	::DefWindowProc(NULL, 0, 0, 0L);
  
  	AtlInitCommonControls(ICC_COOL_CLASSES | 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;
  }
  