Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Фиксированный размер окна


Автор: PIT 9.10.2007, 15:06
Создаю через CreateWindows(...) .
Как сделать что бы у окна был фиксированный размер? т.е. нельзя бало его мышкой растянуть.
 smile 

Автор: SenkraD 9.10.2007, 16:37
PIT,  ну так посмотри доступные стили которые через третий параметр передаёш.
Или лови WM_GETMINMAXINFO и блочь изминения размеров там

Автор: Mihhail 9.10.2007, 18:08
PIT убери в третьем параметре стили  WS_SIZEBOX или/и WS_THICKFRAME.

Автор: PIT 10.10.2007, 07:54
Я хочу что бы у окна размер не менялся, а в верхнем левом углу остались кнопки свернуть и крестик.

Перепробовал кучу разных сочетаний стилей, никак не могу найти подходящего (( Не подскажите сочетание?

SenkraD, а как блочить WM_GETMINMAXINFO? Я break сразу ставил, ничего не получается ((

Автор: SenkraD 10.10.2007, 08:36
PIT, не блочить, а в обработке этого сообщения можно задать минимальный и максимальнвй размеры окна - в lParam приходит указатель на стуркуту MINMAXINFO, там заполняеш нужные поля и всё

Автор: PIT 10.10.2007, 10:17
SenkraD, что то никак не получается у меня ((

Создаю окно:
Код

hWnd = CreateWindow(szWindowClass, szTitle,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 760,500, NULL, NULL, hInstance, NULL);


Код

case WM_GETMINMAXINFO: //Получили сообщение от Винды
{
    MINMAXINFO *pInfo = (MINMAXINFO *)lParam;
    POINT Min = { 759, 499 };
    POINT  Max = {761, 501 };
    pInfo->ptMinTrackSize = Min; // Установили минимальный размер
    pInfo->ptMaxTrackSize = Max; // Установили максимальный размер
    return 0;
}


И он мне выдает ошибку на енту строку pInfo->ptMinTrackSize = Min;

Unhandled exception at 0x0040268a in timer_win32.exe: 0xC0000005:Access violation location 0x00000020

Понять не могу в чем дело smile 

Автор: pDaunis 10.10.2007, 13:09
Цитата

WS_OVERLAPPEDWINDOW   Creates an overlapped window with the WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX, and WS_MAXIMIZEBOX styles.


При создании юзай не WS_OVERLAPPEDWINDOW, а WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU и WS_MINIMIZEBOX
И не нужно будет с событиями извращаться 

Автор: PIT 10.10.2007, 15:10
pDaunis, прям в точку  smile 
Цитата(PIT @  10.10.2007,  10:17 Найти цитируемый пост)
Unhandled exception at 0x0040268a in timer_win32.exe: 0xC0000005:Access violation location 0x00000020


А про что эта ошибка? А то вроде как все по примеру делаю, и не работает smile 

Хоть проблема основная и решилась, но уж очень любопытно.

Автор: PIT 11.10.2007, 13:56
Ошибка была из за того что не туда код засунул  smile  Тупая невнимательност.

Всем спасибо! 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)