スクリーンセーバーのオプションを調べる。
スクリーンセーバーの起動スイッチの判定の仕方。
VC++に付いているSAVERはバグがあってこれが正しい。
|
// スイッチを比較する関数 BOLL CXXXApp::MatchOption(LPTSTR lpsz, LPTSTR lpszOption) { if (lpsz[0] == _T('-') || lpsz[0] == _T('/')) lpsz++; lpsz[1] = '\0'; if (lstrcmpi(lpsz, lpszOption) == 0) return TRUE; //一致したらTRUEを返す。 return FALSE; //それ以外ならFALSE。 } |
呼び出し。 |
BOOL CXXXApp::InitInstance() { : : // スイッチが"/c"か無い場合、設定ダイアログへ if (__argc == 1 || MatchOption(__argv[1], _T("c"))) { CXXXDlg dlg; if (dlg.DoModal() == IDOK) { // OKを押した時の処理。 } } // "/p"でプレビュー else if (MatchOption(__argv[1], _T("p"))) { CWnd* pParent = CWnd::FromHandle((HWND)atol(__argv[2])); ASSERT(pParent != NULL); CDrawWnd* pWnd = new CDrawWnd(); CRect rect; pParent->GetClientRect(&rect); pWnd->Create(NULL, WS_VISIBLE|WS_CHILD, rect, pParent, 0, NULL); m_pMainWnd = pWnd; return TRUE; } // "/s"スクリーンセーバー実行 else if (MatchOption(__argv[1], _T("s"))) { CSaverWnd* pWnd = new CSaverWnd; pWnd->Create(); m_pMainWnd = pWnd; return TRUE; } return FALSE; } |
[ 戻る ]