|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Авг 21, 2003 16:31:34 Подскажите пожалуйста простой способ как разместить окно в центре экрана или как узнать разрешение экрана. |
|
|
Дата: Авг 21, 2003 17:08:03 void CenterWindow(HWND hwnd_parent, HWND hwnd_child) { RECT ChildRect, ParentRect; POINT pt; int nWidth, nHeight; GetWindowRect(hwnd_child, &ChildRect); GetWindowRect(hwnd_parent, &ParentRect); nWidth = ChildRect.right - ChildRect.left; nHeight = ChildRect.bottom - ChildRect.top; pt.x = (ParentRect.right - ParentRect.left)/2; pt.y = (ParentRect.bottom - ParentRect.top)/2; ClientToScreen(hwnd_parent, &pt); pt.x -= nWidth/2; pt.y -= nHeight/2; MoveWindow(hwnd_child, pt.x, pt.y, nWidth, nHeight, FALSE); } А потом CenterWindow(GetDesktopWindow(), hwnd); |
|
|
Дата: Авг 21, 2003 17:09:31 profi_r Размеры экрана можно узнать при помощи функции Возвращающей метрики системы. А как по центур разместить :)) Это уже вопрос математики :) |
|
|
Дата: Авг 21, 2003 17:21:38 А я так и подумал. Просто вдруг есть более простой способ или свойство у окна... .ELSEIF uMsg == WM_CREATE ;center window invoke GetSystemMetrics,SM_CXFULLSCREEN shr eax,1 mov ecx,WinSX shr ecx,1 sub eax,ecx mov wrect.left,eax invoke GetSystemMetrics,SM_CYFULLSCREEN shr eax,1 mov ecx,WinSY shr ecx,1 sub eax,ecx invoke MoveWindow,hWnd,wrect.left,eax,WinSX,WinSY,TRUE |
|
|
Дата: Авг 22, 2003 02:15:04 profi_r или свойство у окна Есть, конечно! DS_CENTER, но только для диалоговых шаблонов. |
|
|
Дата: Авг 22, 2003 11:23:53 Вот, пожалуй самый простой способ узнать разрешение экрана и расположить окно по центру: .data WndX dd 640 ;здесь должны быть размеры WndY dd 480 ;вашего окна .data? rcScreen RECT<> hWnd dd ? .code invoke GetDesktopWindow invoke GetClientRect,eax,offset rcScreen ;вот в структуре RECT в полях right и bottom находятся ;соответственно ширина и высота экрана mov eax,rcScreen.right ;получаем размеры mov edx,rcScreen.bottom sub eax,WndX ;получаем разницу между размерами окна sub edx,WndY ;и размерами экрана shr eax,1 ;делим всё на 2 shr edx,1 ;в eax и edx мы получили координаты верхней левой точки ;окна. Теперь передаём всё в MoveWindow invoke MoveWindow,hWnd,eax,edx,WndX,WndY,TRUE |
|
|
Дата: Авг 22, 2003 13:24:05 Спасибо SolidCode - так конечно лучше, еще + : invoke CreateWindowEx, ... eax, edx, WinSX, WinSY, ... |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.066 |