Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
14 / 14 / 3
Регистрация: 03.03.2011
Сообщений: 435
1

WS_SYSMENU не даёт изменить размер окна CPropertySheet

04.05.2018, 12:10. Показов 1529. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Делаю cpropertysheet окно с возможностью resize, в oninitdialog добавляю
C++
1
ModifyStyle(WS_SYSMENU, WS_THICKFRAME);
и всё работает, но пропадает icon окна и button(x).

Если написать просто
C++
1
ModifyStyle(0, WS_THICKFRAME);
То при наведении на границу появляется указатель что можно resize, но при попытке resize ничего не происходит.
И в этом случае button(x) остаётся на месте.

Так же я проверил все стили которые передаются от CPropertySheet
C++
1
2
DWORD res;
res = GetStyle();
Там передаётся 8 флагов, но ничего что мешало бы изменению окна не заметил.

Подскажите как мне оставить button(x) и возможность resize.

Добавлено через 1 час 3 минуты
Передаются стили по умолчанию
WS_POPUP
WS_CLIPSIBLINGS
WS_BORDER
WS_DLGFRAME
WS_SYSMENU

DS_CONTEXTHELP
DS_MODALFRAME
DS_3DLOOK
DS_SETFONT

C++
1
GetStyleEx()
WS_EX_DLGMODALFRAME
WS_EX_WINDOWEDGE
WS_EX_CONTEXTHELP
WS_EX_CONTROLPARENT
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2018, 12:10
Ответы с готовыми решениями:

Изменить размер окна в Selenium
Не могу понять from selenium import webdriver import time driver = webdriver.Firefox()...

[Tkinter] Изменить размер окна
Какой функцыей изменить размер окна в tkinter

Изменить размер текущего окна
Подскажите, как изменить размер текущего окна. Вроде все правильно пишу, но не работает...

Как изменить размер окна
Как мне поменять размер окна в C#??? Есть кнопачъка, я на неё жмякаю, и моё окошко удлинняется в...

4
2376 / 834 / 317
Регистрация: 10.02.2018
Сообщений: 1,968
04.05.2018, 12:38 2
Предположительно, какие-то стили-флаги конфликтуют и вряд ли дело в WS_SYSMENU. Если запустить редактор ресурсов с обычным диалогом, попереключать в нём возможность ресайза и потом глянуть стили в файле ресурсов, то это выглядит как-то так:
Код
Resizing:     DS_SETFONT |                 WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
Dialog Frame: DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
Можно тоже попробовать DS_MODALFRAME убрать.
0
14 / 14 / 3
Регистрация: 03.03.2011
Сообщений: 435
04.05.2018, 13:25  [ТС] 3
Я уже всячески пробовал...
Единственный вариант это убирать WS_SYSMENU и как то кнопку (х) вернуть.
Или надо совсем по другому как то делать... Может сообщение получить о том что нужно resize
0
2376 / 834 / 317
Регистрация: 10.02.2018
Сообщений: 1,968
04.05.2018, 14:14 4
Leningradeс, методом научного тыка получается, что нужно убирать DS_MODALFRAME и WS_EX_DLGMODALFRAME.
C++
1
2
3
4
5
6
7
8
9
10
11
12
    CPropertySheet ps;
    CPropertyPage p1(IDD_DIALOG1);
    CPropertyPage p2(IDD_DIALOG2);
    //ps.Create(0, DS_SETFONT | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME, WS_EX_CONTEXTHELP);
    //ps.Create(0, WS_POPUP | WS_CLIPSIBLINGS | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_CONTEXTHELP | DS_MODALFRAME | DS_3DLOOK | DS_SETFONT, WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE | WS_EX_CONTEXTHELP | WS_EX_CONTROLPARENT);
    //ps.Create(0, WS_POPUP | WS_CLIPSIBLINGS | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_CONTEXTHELP | DS_MODALFRAME | DS_3DLOOK | DS_SETFONT | WS_THICKFRAME, WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE | WS_EX_CONTEXTHELP | WS_EX_CONTROLPARENT);
    //ps.Create(0, WS_POPUP | WS_CLIPSIBLINGS | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_CONTEXTHELP | /*DS_MODALFRAME |*/ DS_3DLOOK | DS_SETFONT | WS_THICKFRAME, WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE | WS_EX_CONTEXTHELP | WS_EX_CONTROLPARENT);
    //ps.Create(0, WS_POPUP | WS_CLIPSIBLINGS | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_CONTEXTHELP | DS_MODALFRAME | DS_3DLOOK | DS_SETFONT | WS_THICKFRAME, /*WS_EX_DLGMODALFRAME |*/ WS_EX_WINDOWEDGE | WS_EX_CONTEXTHELP | WS_EX_CONTROLPARENT);
    ps.Create(0, WS_POPUP | WS_CLIPSIBLINGS | WS_BORDER | WS_DLGFRAME | WS_SYSMENU | DS_CONTEXTHELP | /*DS_MODALFRAME |*/ DS_3DLOOK | DS_SETFONT | WS_THICKFRAME, /*WS_EX_DLGMODALFRAME |*/ WS_EX_WINDOWEDGE | WS_EX_CONTEXTHELP | WS_EX_CONTROLPARENT);
    ps.AddPage(&p1);
    ps.AddPage(&p2);
    ps.DoModal();
1
14 / 14 / 3
Регистрация: 03.03.2011
Сообщений: 435
04.05.2018, 17:30  [ТС] 5
Да это похоже на правду, но в моем случае это не работает... Видимо у меня где то ещё проблема.
Спасибо за помощь.

Добавлено через 2 часа 7 минут
Это действительно работает! Только у меня пропали кнопки ОК Отмена Справка... Думаю в этом случае их надо в ручную добавить.

Добавлено через 8 минут
Или как их вернуть? Создавать как то не охота.
0
04.05.2018, 17:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.05.2018, 17:30
Помогаю со студенческими работами здесь

Как изменить размер окна?
Крайне неудобно работать в маленьком окне компилятора. Вопрос - можно ли как-то растянуть окно ...

Как изменить размер окна правильно
Всем доброго времени суток, много уважаемые форумчани!Может вопрос окажется простеньким для...

Изменить размер окна для поиска
Подскажите возможно ли в 2007 access сделать шире стандартное окно для поиска на форме(которое...

Изменить размер и положение диалогового окна
Не совсем в тему но может кто в теме. Как в VBS изменить размер и положение диалогового окна.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru