Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Вниз

Нерастяжимое окно. WS_SIZEBOX vs WS_SYSMENU.   Найти похожие ветки 

 
GrayFace ©   (2005-09-24 09:55) [0]

Есть диалоговое окно. Не мое. Добавляю ему WS_SIZEBOX. После этого курсор, при наводе на рамку, меняется, но окно не растягивается. Но если убрать WS_SYSMENU, растягивание начинает работать! Поигрался с другими оконными флагами - без разницы.
WM_SIZING не обрабатывается - внедрялся, игнорировал - не помогает.
Приложение написано на C++. Не на Билдере. Из флагов можно отметить, разве что, WS_POPUP, в котором тоже нет ничего примечательного. Да и, вообще, ничего примечательного не заметно - диалог, как диалог.
Вопрос в том, как заставить его растягиваться, сохранив "крестик"?


 
wicked ©   (2005-09-24 22:26) [1]

WS_THICKFRAME?


 
y-soft ©   (2005-09-24 23:06) [2]

>GrayFace ©   (24.09.05 09:55)

Диалог - в смысле тот, который создается функцией DialogBoxXXXXXX?

Не меняйте стиль окна такого диалога через SetWindowLong, устанавливаетсе его еще до вызова DialogBoxXXXXXXX, напрямую в шаблоне диалога, загруженного в память, тогда стиль WS_SIZEBOX (или WS_THICKFRAME, что тоже самое) будет обрабатываться функцией диалога правильно...

P.S. Шаблон диалога, загруженного в память (на него указывает результат LockResource), начининается со следующей структуры (вроде бы она не документирована):

type
 PDlgTemplateEx = ^TDlgTemplateEx;
 TDlgTemplateEx = packed record
   dlgVer: word;                       //Версия структуры, всегда 1
   signature: word;                   // Если $FFFF, то шаблон хранится в расширенном формате
   HelpID: DWORD;                   //Контекст помощи
   ExStyle: DWORD;                  //Расширенный стиль окна
   Style: DWORD;                     //Стиль окна
   cDlgItems: word;                  //Кол-во элементов диалога
   x: smallint;                          //Координаты верхнего левого угла (в диалоговых единицах)
   y: smallint;                          
   cx: smallint;                        //Размеры окна в диалоговых единицах
   cy: smallint;
   Data: array[0..0] of word;     //Далее идут записи элементов диалога, выравненные по границам DWORD
 end;


Модифицируйте поле Style


 
GrayFace ©   (2005-09-27 09:41) [3]

y-soft, не помогает.
Спасибо за структуру.


 
y-soft ©   (2005-09-27 10:18) [4]

>GrayFace ©   (27.09.05 09:41) [3]

Я такие трюки делал - срабатывает. Может быть у Вас в поле Style несовместимые флаги? ...

Кстати, ресурс может быть и в документированном формате TDlgTemplate:

type
 PDlgTemplate = ^TDlgTemplate;
 TDlgTemplate = packed record
   style: DWORD;
   dwExtendedStyle: DWORD;
   cdit: Word;
   x: SHORT;
   y: SHORT;
   cx: SHORT;
   cy: SHORT;
   Data: array[0..0] of word;          //Items data (DWORD aligned)
 end;


(проверяйте по значению поля signature...


 
GrayFace ©   (2005-09-27 10:22) [5]

Я не менял template в памяти, просто заменил в exe-шке. Буду дома - напишу список флагов.


 
GrayFace ©   (2005-10-06 14:16) [6]

262 DIALOG 0, 0, 260, 210
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUPWINDOW | WS_DLGFRAME


 
Игорь Шевченко ©   (2005-10-06 14:24) [7]

Собстна, не составит труда написать такое окно, которое будет игнорировать изменения стилей и не позволять менять размер.


 
y-soft ©   (2005-10-06 15:12) [8]

>GrayFace ©   (06.10.05 14:16) [6]

А где WS_THICKFRAME ?


 
y-soft ©   (2005-10-06 15:14) [9]

>Игорь Шевченко ©   (06.10.05 14:24) [7]

Так, Игорь, здесь задача как раз обратная :)

Да и вообще - написать можно все что угодно, но зачем, если можно проще? :)


 
Игорь Шевченко ©   (2005-10-06 16:12) [10]

y-soft ©   (06.10.05 15:14) [9]

Я к тому говорю, что в чужом окне могут быть заложены какие-то ограничения уже :)


 
y-soft ©   (2005-10-06 16:15) [11]

>Игорь Шевченко ©   (06.10.05 16:12) [10]

Да, неплохо бы услышать что-то более конкретное про проблему, а не только то, что окно создается из шаблона...

Да и вообще, если сделать окно с возможностью изменять размеры, то все равно придется отлавливать по крайней мере WM_SIZE хотя бы для того, чтобы выравнивать контролы...


 
GrayFace ©   (2005-10-07 16:49) [12]

ОЙ... Это только средняя часть диалога. Рамка, похоже, берется из чего-то типа MessageBox"а. Так что, придется довольствоваться исчезающим на время растягивания крестиком.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.12.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.036 c
3-1130395760
Карелин Артем
2005-10-27 10:49
2005.12.11
Как получить список серверов MS SQL в сети?


8-1120604738
ronyn
2005-07-06 03:05
2005.12.11
Загрузка файла в проигрыватель при открытии(файла)


3-1130058026
darklord
2005-10-23 13:00
2005.12.11
update тока одной записи


14-1132678609
YurikGL
2005-11-22 19:56
2005.12.11
Формат MS офиса будет открытым


2-1132643044
Juice
2005-11-22 10:04
2005.12.11
Как закрыть форму из ее же метода ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский