Установка окна поверх всех других окон бывает удобна, когда надо привлечь внимание пользователя к важной информации, или окно с какими-либо данными должно находиться всегда перед глазами. Такое свойство окна можно прописать сразу в ресурсах, а можно изменять динамически, например при нажатии на кнопку-чекбокс "Always on top" или при изменении каких-нибудь внутренних настроек вашей программы.
Для создания окна поверх всех других окон, оно должно быть описано в ресурсах с флагом DS_SYSMODAL. Для динамического изменения используется функция
SetWindowPos с флагами SWP_NOMOVE и SWP_NOSIZE. Флаги нужны для того, чтобы не изменять размеры и положение окна.
; Идентификатор чекбокса в ресурсах
ID_ONTOP = 101
; Сегмент кода
section '.code' code readable executable
...
; Процедура обработчика окна
proc DialogProc hwnddlg,msg,wparam,lparam
; Обработка нажатия на кнопку-чекбокс
cmp [wparam],BN_CLICKED shl 16 + ID_ONTOP
je .ontop
...
.ontop:
; Получить состояние чекбокса
invoke IsDlgButtonChecked,[hwnddlg],ID_ONTOP
cmp eax,BST_CHECKED
; По умолчанию будем считать что галочка поставлена
mov eax,HWND_TOPMOST
je @f
; Галочка не поставлена, убрать атрибут "поверх всех окон"
mov eax,HWND_NOTOPMOST
@@:
; Установить параметр окна "поверх всех окон", изменение размера
; и положения окна не производится, это установлено флагами
invoke SetWindowPos,[hwnddlg],eax,0,0,0,0,SWP_NOMOVE+SWP_NOSIZE
jmp .processed
...
; Секция ресурсов
section '.rsrc' resource data readable
; Диалог описан со стилем DS_SYSMODAL - поверх всех окон
dialog demonstration, 'Always on top Demo', 0, 0, 190, 55,\
WS_CAPTION+WS_SYSMENU+DS_CENTER+DS_SYSMODAL
...
; Кнопка-чекбокс, которая будет управлять положением окна
dialogitem 'BUTTON','Always on top', ID_ONTOP, 5, 150, 63, 13,\
WS_VISIBLE+BS_AUTOCHECKBOX+BS_FLAT
...
В приведенном примере при поставленной галочке "Always on top" окно будет находиться поверх других окон. Исходник с откомпилированным файлом прилагается.