当前位置: 首页>>代码示例>>C++>>正文


C++ CAppModule::FindOneOf方法代码示例

本文整理汇总了C++中CAppModule::FindOneOf方法的典型用法代码示例。如果您正苦于以下问题:C++ CAppModule::FindOneOf方法的具体用法?C++ CAppModule::FindOneOf怎么用?C++ CAppModule::FindOneOf使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CAppModule的用法示例。


在下文中一共展示了CAppModule::FindOneOf方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: _tWinMain

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow)
{
	//MessageBox(NULL, lpstrCmdLine, "Command line", MB_OK);
	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));

	// don't allow multiple instances, wait for previous to terminate
	HANDLE mutex = ::CreateMutex(NULL, TRUE, _T("MoleculesInitMTX"));
	if(mutex && ::GetLastError() == ERROR_ALREADY_EXISTS)
	{
		DWORD state = WaitForSingleObject(mutex, 500);
		if(state == WAIT_TIMEOUT || state == WAIT_FAILED)
		{
			_Module.Term();
			::CoUninitialize();
			return 0;
		}
	}

	// find out where our binary (.scr) is located
	// this is used to locate molecules folder later
	std::unique_ptr<TCHAR[]> mod(new TCHAR[MAX_PATH]);
	::GetModuleFileName(NULL, mod.get(), MAX_PATH-1);
	*(_tcsrchr(mod.get(), '\\')+1) = '\0';
	TCHAR drive;
	if(islower((int)mod[0]))
		drive = _toupper(mod[0]);
	else
		drive = mod[0];
	int drv = (int)drive-64;
	_chdrive(drv);
	_tchdir(mod.get());

	int nRet = 0;
  TCHAR szTokens[] = _T("-/");
  HWND hwndParent = NULL;

	// check reason for a call
	ECallReason cr = eSettings; // when no parameter given, show settings
  LPCTSTR lpszToken = _Module.FindOneOf(::GetCommandLine(), szTokens);
  if (lpszToken != NULL)
  {
		// XXX this flag is no longer used by windows?
    //if(_tcsnicmp(lpszToken, _T("c"), 1) == 0)
    //{
			// settings (configuration dialog)
		//	cr = eSettings;
     // hwndParent = GetForegroundWindow();
    //}
    if(_tcsnicmp(lpszToken, _T("p "), 2) == 0)
    {
			// preview
			cr = ePreview;
      int n = 0;
      _stscanf_s(lpszToken+1, _T("%i%n"), &hwndParent, &n);
      lpszToken += n+1;
    }
    else if(_tcsnicmp(lpszToken, _T("s"), 1) == 0)
    {
			// normal screen saver mode
			cr = eRun;
    }
    // lpszToken = _Module.FindOneOf(lpszToken, szTokens);
  }

	switch (cr)
	{
	default:
	case eRun:
		nRet = Run(lpstrCmdLine, nCmdShow);
		break;
	case ePreview:
		nRet = Preview(hwndParent);
		break;
	case eSettings:
#ifdef DEBUG
		// in debug builds run saver instead of settings when launched
		nRet = Run(lpstrCmdLine, nCmdShow);
#else
		nRet = Settings(hwndParent);
#endif
		break;
	}

	_Module.Term();
	::CoUninitialize();

	return nRet;
}
开发者ID:ebutusov,项目名称:Molecules,代码行数:100,代码来源:Molecules.cpp


注:本文中的CAppModule::FindOneOf方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。