Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save sinitcin/8665034 to your computer and use it in GitHub Desktop.
Save sinitcin/8665034 to your computer and use it in GitHub Desktop.
section '.data' data readable writable
class.form db 'STORAGE',0
title.form db 'Главное окно',0
hinstance dd ?
rc RECT
msg MSG
wc WNDCLASS
section '.code' code readable executable
start:
; инициализируем структуру WNDCLASS и регистрируем его, а дальше задаём
; Размеры окна
mov [rc.right],500
mov [rc.bottom],390
; Выравниваем окно по Х координате
aligne_x:
invoke GetSystemMetrics,SM_CXSCREEN ; Узнаем расширение Х экрана
mov ecx, eax
shr ecx, 1 ; Делим Х на 2
mov eax, [rc.right]
shr eax, 1 ; Делим ширину формы на 2
sub ecx, eax ; Отнимаем от половины ширины экрана половину ширины окна
mov [rc.left], ecx
; Выравниваем окно по Y координате
aligne_y:
invoke GetSystemMetrics,SM_CYSCREEN ; Узнаем расширение Y экрана
mov ecx, eax
shr ecx, 1 ; Делим Y на 2
mov eax, [rc.bottom]
shr eax, 1 ; Делим высоту формы на 2
sub ecx, eax ; Естественно отнимаем от половины высоты экрана половину высоты окна
mov [rc.top], ecx
invoke CreateWindowEx, 0, class.form, title.form, WS_VISIBLE+WS_OVERLAPPEDWINDOW, [rc.left], [rc.top], [rc.right], [rc.bottom], 0, 0, [hinstance], 0
@sinitcin
Copy link
Author

И не сомненно меня бесит в первую очередь когда главное окно приложения создается с константами CW_USEDEFAULT - это просто бред, окно появляется в любом месте экрана по принципу фазы луны 0_О Самый простой вариант — это исправить вписать следующий код:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment