Моргание окна на Ассемблере
Наверняка вы не раз сталкивались с тем, что приложение, которое свернуто или работает в фоновом режиме, но хочет привлечь внимание пользователя, использует эффект моргания окна. Это может быть оповещение об окончании длительного процесса или просто информация для пользователя, с которой ему надо как можно быстрее ознакомиться. И действительно, такой способ работает. В этой статье я вам расскажу, как такой эффект реализуется.Самый простой способ моргнуть окном - использовать стандартную функцию FlashWindow. Для ее использования нужно только знать хэндл окна, которое должно моргнуть, вот и все. Это не обязательно должно быть окно именно вашего приложения, вы можете легко моргать любым окном, доступным в системе. Вызов простейший:
Code (Assembler) : Убрать нумерацию
- ; hwnd - хэндл окна, которое должно моргнуть
- invoke FlashWindow,[hwnd],FALSE
Если требуется иметь полный контроль над параметрами моргания, то надо использовать более продвинутую функцию FlashWindowEx. Но сперва придется самостоятельно описать используемые структуры и константы, так как FASM в стандартной комплектации их не знает.
Code (Assembler) : Убрать нумерацию
- ; Описание структуры для моргания окна
- struct FLASHWINFO
- cbSize dd ?
- hwnd dd ?
- dwFlags dd ?
- uCount dd ?
- dwTimeout dd ?
- ends
- ; Флаги режимов моргания окна
- FLASHW_CAPTION = 0x00000001
- FLASHW_TRAY = 0x00000002
- FLASHW_ALL = 0x00000003
- flash FLASHWINFO ; Структура для моргания окна
Code (Assembler) : Убрать нумерацию
- ; Заполнить структуру FLASHWINFO
- mov [flash.cbSize],sizeof.FLASHWINFO
- ; Хэндл окна, которое должно моргнуть
- mov ecx,[hwnd]
- mov [flash.hwnd],ecx
- ; Режим моргания - заголовок и кнопка окна в панели задач
- mov [flash.dwFlags],FLASHW_ALL
- ; Количество морганий, в моем примере 10 итераций
- mov [flash.uCount],10
- ; Частота морганий
- mov [flash.dwTimeout],80
- ; Вызвать функцию
- invoke FlashWindowEx,flash
В приложении пример программы с исходным текстом, демонстрирующей моргание окна приложения каждым из описанных в статье способом.
Просмотров: 1610 | Комментариев: 0
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Комментариeв нет
Добавить комментарий
Заполните форму для добавления комментария