Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.90/40: Рейтинг темы: голосов - 40, средняя оценка - 4.90
2 / 2 / 0
Регистрация: 27.10.2016
Сообщений: 48

SetWindowLong и Стили

30.11.2016, 18:57. Показов 8832. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется окно:

C++
1
2
3
4
5
6
7
8
9
g1_r1_des = CreateWindowEx(0, "Window1", "Окно 1",
                               WS_CHILD|WS_CLIPSIBLINGS,
                               350,
                               0,
                               1000, 650,
                               firstdes,
                               NULL,
                               hThisInstance,
                               NULL);
сделал смену стиля с WS_CHILD на WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_M INIMIZEBOX|WS_MAXIMIZEBOX|WS_CLIPCHILDRE N чтоб можно было вынести окно за пределы окна родителя, реализация по CheckDlgButton. Проблема в том что окно все равно не выходит за пределы родителя. Если сделать наоборот то тоже самое только CHILD не прилепляется к родителю.

Первоначальное отображение окна
C++
1
2
3
4
5
6
7
8
 case WM_COMMAND:
            switch (LOWORD(wparam))
            {
                case BTN_G1_R1:
                SetWindowPos(g1_r1_des, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); // задаем расположение выше всех окон, остальное по default (настройки  при создании окна)
                ShowWindow(g1_r1_des, SW_SHOWNORMAL); // показываем окно в координатах и размерах по default (настройки  при создании окна)
                UpdateWindow(g1_r1_des);
                break;


Задаем смену стиля по чекбоксу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
case WM_COMMAND:
        {
            BOOL checked1 = IsDlgButtonChecked(hwnd, ID_CHECKBOX1);
 
            if (LOWORD(wparam) == ID_CHECKBOX1) {
                if (checked1) {
                    CheckDlgButton(hwnd, ID_CHECKBOX1, BST_UNCHECKED);
 
                    SetWindowLong (g1_r1_des,GWL_STYLE,(LONG) WS_CHILD|WS_CLIPSIBLINGS);
                    SetWindowPos(g1_r1_des, HWND_TOP,350, 0, 1000, 650, SWP_SHOWWINDOW);
 
                    UpdateWindow(g1_r1_des);
                }
                else {
                    CheckDlgButton(hwnd, ID_CHECKBOX1, BST_CHECKED);
 
                    SetWindowLong (g1_r1_des,GWL_STYLE,(LONG) WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_CLIPCHILDREN);
                    ShowWindow(g1_r1_des, SW_SHOW);
                    UpdateWindow(g1_r1_des);
                }
            }
 
            break;
        }






Пробывал всяко.. ничего не выходит. Подскажите плизз как открепить его от родительского окна.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.11.2016, 18:57
Ответы с готовыми решениями:

SetWindowLong и GWL_WNDPROC
Надо сменить процедуру дочернего окна, чтобы лучше обрабатывать сообщения (нужна универсальность, WM_COMMAND не достаточно). Однако, если...

SetWindowLong, метод класса третьим параметром
Всем доброе время суток. Необходимо использовать функцию SetWindowLong для замены процедуры дочернего окна. Если вызывать в обычных...

Как сделать активной кнопку сворачивания приложения (используя SetWindowLong)?
У приложения не активна кнопка сворачивания окна, нужно сделать ее обратно активной. говорят, что с помощью SetWindowLong можно поменять...

20
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
26.04.2021, 01:55
Студворк — интернет-сервис помощи студентам
Последовательность действий:
1.Запускаю программу.
2. Жду открытие блокнота, сначала он открывается в нормальном виде.
3. Я сам включаю другое окно чтобы он не был на переднем плане.
4. Далее жду и получается блокнот без рамки закрыть на крестик его нельзя но хотя бы работает. Честно говоря меня так не устраивает.

Добавлено через 1 минуту
Значит действительно повязано на стилях но я не знаю что. Я пробовал Мозилу и Ворд не работает почему не знаю.

Добавлено через 3 минуты
Цитата Сообщение от Morgot Посмотреть сообщение
Так а откуда вы взяли эти стили? И зачем? Что вы хотите сделать-то?
Для меня в приоритете открытие Браузера но это на первых порах но конечно я хотел бы чтобы работало всё т.е. речь не идёт о чём-то конкретном.
Цитата Сообщение от Morgot Посмотреть сообщение
p.s. потестируйте именно на блокноте или чем-то подобном (самописная прога с 1 окном). Возможно, фаерфокс имеет какие-то нюансы, не знаю там защиту от инжекта или еще что. Могу завтра поставить лисичку и тестануть , если надо именно там что-то делать
Посмотрите что можно сделать, странно это всё конечно.
Цитата Сообщение от Morgot Посмотреть сообщение
фаерфокс имеет какие-то нюансы, не знаю там защиту от инжекта или еще что
А что за защита?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.04.2021, 01:55

Встроенные стили элементов или стили в отдельном файле
Здравствуйте. Вопрос чисто из интереса, хотелось бы знать, как лучше с теоретической точки зрения. У CSS и HTML есть общие свойства(к...

Передача дополнительных параметров в обработчик WndProc через свой класс функциями Get/SetWindowLong
Все доброго здоровья. Задумываю для себя небольшое удобство в виде разработки классов (формы-контролы), однако столкнулся с такой...

Новые стили не применяются, удалил все стили а они все равно работают
Всем здравствуйте. У меня катастрофа!!! Мозг уже разплавился! Вообщем что случилось: Вчера решил изменить немного шрифт каталога (не...

Стили
Только ,что узнал о стилях Joomla супер вещь теперь такой вопрос , где происходит обертка содержимого в такое <div...

Стили?
Подскажите - на одной машине (сотрудник божиться ничего не делал) если выгружать из программы (наша специфическая) текст (шрифт таймс нью...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru