87 if ( hWnd == NULL || ! ::IsWindow(hWnd) || m_uniquelyText.
IsEmpty() )
89 ASSERT0(
false,
"COnlyWindowChecker::IsOnly()",
"パラメータの設定が不正です。" );
93 m_pMutex =
new CSyncMutex(
true, m_uniquelyText + _T(
"_mx"));
94 if ( ! m_pMutex->
Lock(0) )
98 ::EnumWindows(ms_EnumFunc,
reinterpret_cast<LPARAM
>(
this));
102 VERIFY( ::SetProp(hWnd, m_uniquelyText,
reinterpret_cast<HANDLE
>(TRUE)) );
115 if ( ::IsWindowVisible(hWnd) )
117 ::ShowWindow(hWnd, SW_SHOWNORMAL);
118 ::SetForegroundWindow(hWnd);
119 FLASHWINFO fi = {
sizeof(FLASHWINFO) };
121 fi.dwFlags = FLASHW_ALL;
123 fi.dwTimeout = 1000 / (3 * 2);
124 ::FlashWindowEx(&fi);
130 void m_DeleteMutex(
void)
132 if ( m_pMutex != NULL )
139 BOOL m_EnumFunc(HWND hWnd)
141 if ( m_hWnd != hWnd )
143 HANDLE h = ::GetProp(hWnd, m_uniquelyText);
153 static BOOL CALLBACK ms_EnumFunc(HWND hWnd, LPARAM lParam)
156 return P->m_EnumFunc(hWnd);
virtual bool Lock(DWORD dwTime=INFINITE) const
[排他] ロック
~COnlyWindowChecker(void)
デストラクタ
virtual void OnFound(HWND hWnd)
[通知] 同じウィンドウ発見.
bool IsOnly(HWND hWnd)
[確認] チェック.
COnlyWindowChecker(LPCTSTR lpszUniquelyText)
コンストラクタ.
bool IsEmpty(void) const
[確認] 空チェック