как вызвать эффект мигания окна - как это делает Spy++
мигания нужного дескриптора окна -
как это делает SPY++ при нажатии кнопки
Highlight - ведь функция FlashWindow -
не делает такого эффекта !!!
ф-ия FlashWindowEx()
такой же эффект - обсалютно - SPY++ делает
как-то по другому - а так не работает -
FLASHWINFO FI;
FI.cbSize = sizeof(FI);
FI.hwnd = wnd;
FI.dwFlags = FLASHW_ALL;
FI.uCount = 5;
FI.dwTimeout = 500;
FlashWindowEx(&FI);
подскажите пожалуйста как сделать эффект
мигания нужного дескриптора окна -
как это делает SPY++ при нажатии кнопки
Highlight - ведь функция FlashWindow -
не делает такого эффекта !!!
Правильно. FlashWindow не подходит. SPY++ использует DrawFocusRect:
///////////
CWnd* winPtr = NULL;
winPtr = this->FindWindow( "MSBLClass", "Windows Messenger");
CRect rect;
winPtr->GetWindowRect( &rect);
rect.right -= rect.left;
rect.bottom -= rect.top;
rect.top = 0;
rect.left = 0;
CDC* pdc;
pdc = winPtr->GetWindowDC();
pdc->DrawFocusRect( &rect);
rect.DeflateRect( 1, 1);
pdc->winPtr( &rect);
rect.DeflateRect( 1, 1);
pdc->DrawFocusRect( &rect);
///////////
Первый пуск рисует FocusRect в 3 пикс в границах окна, а второй - стирает FocusRect. Пусти эту парочку по таймеру и будет эффект SPY++. Можно поиграться с цветами:
/////
CBrush brush1;
brush1.CreateSolidBrush(RGB(255,0,0)); // Red brush.
pdc->FrameRect( &rect, &brush1);
//////
FrameRect вместо DrawFocusRect, но тогда нужно его перерисовывать, или дать фокус окну, чтобы он исчез.