www.pudn.com > CYDEMO.zip > CYDEMO.cpp, change:2012-05-30,size:4356b


// CYDEMO.cpp : Defines the class behaviors for the application. 
// 
 
#include "stdafx.h" 
#include "CYDEMO.h" 
#include "CYDEMODlg.h" 
#include <initguid.h> 
#include "CYDEMO_i.c" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CCYDEMOApp 
 
BEGIN_MESSAGE_MAP(CCYDEMOApp, CWinApp) 
	//{{AFX_MSG_MAP(CCYDEMOApp) 
		// NOTE - the ClassWizard will add and remove mapping macros here. 
		//    DO NOT EDIT what you see in these blocks of generated code! 
	//}}AFX_MSG 
	ON_COMMAND(ID_HELP, CWinApp::OnHelp) 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CCYDEMOApp construction 
 
CCYDEMOApp::CCYDEMOApp() 
{ 
	// TODO: add construction code here, 
	// Place all significant initialization in InitInstance 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// The one and only CCYDEMOApp object 
 
CCYDEMOApp theApp; 
 
///////////////////////////////////////////////////////////////////////////// 
// CCYDEMOApp initialization 
 
BOOL CCYDEMOApp::InitInstance() 
{ 
	if (!InitATL()) 
		return FALSE; 
 
	AfxEnableControlContainer(); 
 
	CCommandLineInfo cmdInfo; 
	ParseCommandLine(cmdInfo); 
 
	if (cmdInfo.m_bRunEmbedded || cmdInfo.m_bRunAutomated) 
	{ 
		return TRUE; 
	} 
 
 
 
	// Standard initialization 
	// If you are not using these features and wish to reduce the size 
	//  of your final executable, you should remove from the following 
	//  the specific initialization routines you do not need. 
 
#ifdef _AFXDLL 
	Enable3dControls();			// Call this when using MFC in a shared DLL 
#else 
	Enable3dControlsStatic();	// Call this when linking to MFC statically 
#endif 
 
	CCYDEMODlg dlg; 
	m_pMainWnd = &dlg; 
//	ñɫ 
	SetDialogBkColor(RGB(210,210,220), RGB(0, 0, 0));// 
 
	int nResponse = dlg.DoModal(); 
	if (nResponse == IDOK) 
	{ 
		// TODO: Place code here to handle when the dialog is 
		//  dismissed with OK 
	} 
	else if (nResponse == IDCANCEL) 
	{ 
		// TODO: Place code here to handle when the dialog is 
		//  dismissed with Cancel 
	} 
 
	// Since the dialog has been closed, return FALSE so that we exit the 
	//  application, rather than start the application's message pump. 
	return FALSE; 
} 
 
	 
CCYDEMOModule _Module; 
 
BEGIN_OBJECT_MAP(ObjectMap) 
END_OBJECT_MAP() 
 
LONG CCYDEMOModule::Unlock() 
{ 
	AfxOleUnlockApp(); 
	return 0; 
} 
 
LONG CCYDEMOModule::Lock() 
{ 
	AfxOleLockApp(); 
	return 1; 
} 
LPCTSTR CCYDEMOModule::FindOneOf(LPCTSTR p1, LPCTSTR p2) 
{ 
	while (*p1 != NULL) 
	{ 
		LPCTSTR p = p2; 
		while (*p != NULL) 
		{ 
			if (*p1 == *p) 
				return CharNext(p1); 
			p = CharNext(p); 
		} 
		p1++; 
	} 
	return NULL; 
} 
 
 
int CCYDEMOApp::ExitInstance() 
{ 
	if (m_bATLInited) 
	{ 
		_Module.RevokeClassObjects(); 
		_Module.Term(); 
		CoUninitialize(); 
	} 
 
	return CWinApp::ExitInstance(); 
 
} 
 
BOOL CCYDEMOApp::InitATL() 
{ 
	m_bATLInited = TRUE; 
 
#if _WIN32_WINNT >= 0x0400 
	HRESULT hRes = CoInitializeEx(NULL, COINIT_MULTITHREADED); 
#else 
	HRESULT hRes = CoInitialize(NULL); 
#endif 
 
	if (FAILED(hRes)) 
	{ 
		m_bATLInited = FALSE; 
		return FALSE; 
	} 
 
	_Module.Init(ObjectMap, AfxGetInstanceHandle()); 
	_Module.dwThreadID = GetCurrentThreadId(); 
 
	LPTSTR lpCmdLine = GetCommandLine(); //this line necessary for _ATL_MIN_CRT 
	TCHAR szTokens[] = _T("-/"); 
 
	BOOL bRun = TRUE; 
	LPCTSTR lpszToken = _Module.FindOneOf(lpCmdLine, szTokens); 
	while (lpszToken != NULL) 
	{ 
		if (lstrcmpi(lpszToken, _T("UnregServer"))==0) 
		{ 
			_Module.UpdateRegistryFromResource(IDR_CYDEMO, FALSE); 
			_Module.UnregisterServer(TRUE); //TRUE means typelib is unreg'd 
			bRun = FALSE; 
			break; 
		} 
		if (lstrcmpi(lpszToken, _T("RegServer"))==0) 
		{ 
			_Module.UpdateRegistryFromResource(IDR_CYDEMO, TRUE); 
			_Module.RegisterServer(TRUE); 
			bRun = FALSE; 
			break; 
		} 
		lpszToken = _Module.FindOneOf(lpszToken, szTokens); 
	} 
 
	if (!bRun) 
	{ 
		m_bATLInited = FALSE; 
		_Module.Term(); 
		CoUninitialize(); 
		return FALSE; 
	} 
 
	hRes = _Module.RegisterClassObjects(CLSCTX_LOCAL_SERVER,  
		REGCLS_MULTIPLEUSE); 
	if (FAILED(hRes)) 
	{ 
		m_bATLInited = FALSE; 
		CoUninitialize(); 
		return FALSE; 
	}	 
 
	return TRUE; 
 
}