本文整理汇总了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;
}