Создание окон.
Модераторы: Duncon, Hawk, Romeo, Eugie
А это смотря какие окна. Если тебе нужна форма ввода с разными элементами (кнопки, текстовые поля, списки и т.д.), то конечно лучше диалог использовать. А если нужна просто оконная рамка для отображения картинки или текста, то можно обойтись и CreateWindow().
Поумнеть несложно, куда труднее от дури избавиться.
-
- Сообщения: 20
- Зарегистрирован: 13 фев 2011, 20:32
- Откуда: Russian Federation
- Контактная информация:
В описании функции CreateDialog() написано, что она использует тот же CreateWindowEx().
Мне кажется что если самому создавать все элементы через CreateWindowEx(), то будет лучше.
И еще, почему когда изменяю размер шрифта у диалогового окна, то меняется размер формы диалога? Не нравится мне это тем, что реальные размеры получаются совсем другие, не те что указываешь.
Мне кажется что если самому создавать все элементы через CreateWindowEx(), то будет лучше.
И еще, почему когда изменяю размер шрифта у диалогового окна, то меняется размер формы диалога? Не нравится мне это тем, что реальные размеры получаются совсем другие, не те что указываешь.
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
В редакторе ресурсов намного удобнее править интерфейс, чем поправляя циферки в последовательных вызовах CreateWindowEx и после каждой правки запуская программу на выполнение, чтобы узнать нормально ли выглядит изменённый UI, так что если нужна именно диалоговая форма, то вызывать CreateWindowEx и делать всю работу редактора ресурсов попросту глупо, хотя и возможно. По поводу того, почему меняется размер диалога при изменении шрифтов - за это отвечает системная функция DiaglogProc, которая по умолчанию вызывается в твоей оконной процедуре. Если тебе не нравится, как система показывает твой диалог, то путь один - перехватывать сообщения для отрисовки неклиентской части диалога(WM_NC* messages) и вносить необходимые визуальные поправки самостоятельно. Собственно, если инетересует именно размер, то достаточно обработки WM_NCCALRECT.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Могу предложить пару альтернативных вариантов для создания GUI.
1. Использовать редакторы GUI сторонних разработчиков, которые сохраняют визуальный образ окна диалога в XМL-файл. Тогда тебе нужно будет научиться парсить XML-файлы и по этим данным динамически создавать окно диалога с нужными элементами интерфейса.
2. Если использовать редактор ресурсов самой Visual Studio, то при создании окна диалога из программы можно не вызывать функции типа CreateDialog() или DialogBox(), а самому прочитать из ресурсов бинарный образ окна диалога и по этим данным динамически создать соответствующий визуальный интерфейс.
А размеры окна диалога и координаты элементов, которые создаются в редакторе ресурсов, действительно зависят от выбранного шрифта, поскольку их координаты записываются не в пикселях, а в так называемых диалог-юнитах (DLU), которые напрямую зависят от размеров шрифта.
1. Использовать редакторы GUI сторонних разработчиков, которые сохраняют визуальный образ окна диалога в XМL-файл. Тогда тебе нужно будет научиться парсить XML-файлы и по этим данным динамически создавать окно диалога с нужными элементами интерфейса.
2. Если использовать редактор ресурсов самой Visual Studio, то при создании окна диалога из программы можно не вызывать функции типа CreateDialog() или DialogBox(), а самому прочитать из ресурсов бинарный образ окна диалога и по этим данным динамически создать соответствующий визуальный интерфейс.
А размеры окна диалога и координаты элементов, которые создаются в редакторе ресурсов, действительно зависят от выбранного шрифта, поскольку их координаты записываются не в пикселях, а в так называемых диалог-юнитах (DLU), которые напрямую зависят от размеров шрифта.
Если вся проблема только в шрифте, то это можно решить гораздо проще. В редакторе ресурсов шрифт лучше вообще не трогать, пусть он останется таким, какой он задан по умолчанию. А вот при создании в программе окна диалога в процедуре инициализации (обработка сообщения WM_INITDIALOG) каждому элементу диалога присваивается нужный шрифт. В этом случае размер диалога и его элементов останется прежним, а шрифты будут такими, какие нужны.
Поумнеть несложно, куда труднее от дури избавиться.
-
- Сообщения: 20
- Зарегистрирован: 13 фев 2011, 20:32
- Откуда: Russian Federation
- Контактная информация:
Вы имеете в виду редактор ресурсов Visual Studio ? Если да, то Visual Studio мне вобще не нравиться!Romeo писал(а):В редакторе ресурсов намного удобнее править интерфейс, чем поправляя циферки в последовательных вызовах CreateWindowEx и после каждой правки запуская программу на выполнение, чтобы узнать нормально ли выглядит изменённый UI
Может потому, что не умею в нем работать.
1. Можно, но больше это к wxWidgets..WinMain писал(а):Могу предложить пару альтернативных вариантов для создания GUI.
1. Использовать редакторы GUI сторонних разработчиков, которые сохраняют визуальный образ окна диалога в XМL-файл. Тогда тебе нужно будет научиться парсить XML-файлы и по этим данным динамически создавать окно диалога с нужными элементами интерфейса.
2. Если использовать редактор ресурсов самой Visual Studio, то при создании окна диалога из программы можно не вызывать функции типа CreateDialog() или DialogBox(), а самому прочитать из ресурсов бинарный образ окна диалога и по этим данным динамически создать соответствующий визуальный интерфейс.
2. С Visual Studio не работаю.
Пользуюсь программой VISG, поэтому сказал что для меня проще динамически создавать окна.
К сожалению она не умеет создавать диалоговые окна (с использованием ресурсов). Вобщем буду на основе диалогов создавать. Смущает только то, что придется все позиции элементов считать вручную и каждый раз контролировать все ли четко смотрится.
-
- Сообщения: 263
- Зарегистрирован: 09 янв 2010, 04:14
- Контактная информация:
Файл ресурсов можно создавать не только в Visual Studio. Есть сторонние программы для этих целей.StIX писал(а): 2. С Visual Studio не работаю.
Пользуюсь программой VISG, поэтому сказал что для меня проще динамически создавать окна.
К сожалению она не умеет создавать диалоговые окна (с использованием ресурсов). Вобщем буду на основе диалогов создавать. Смущает только то, что придется все позиции элементов считать вручную и каждый раз контролировать все ли четко смотрится.
Вот например: Resourceeditor
А по большому счету программируя под Win и не пользуясь MSVS вы создаете себе много проблем.
-
- Сообщения: 263
- Зарегистрирован: 09 янв 2010, 04:14
- Контактная информация:
А в чем собственно проблема получения RC из RES?