スクリーンセーバーのオプションを調べる。
スクリーンセーバーの起動スイッチの判定の仕方。
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;
}
|
[ 戻る ]