|
3 / 3 / 0
Регистрация: 11.10.2017
Сообщений: 12
|
|
В каком месте программы создаются элементы управления?11.10.2017, 21:52. Показов 1345. Ответов 23
Метки нет (Все метки)
Всем привет) Недавно изучаю винапи и не могу понять, в каком месте программы создаются элементы управления. Например, имеется tabControl с несколькими вкладками. На первой вкладке отображен один набор элементов, на второй - второй и т. д. Мне кажется, что если создать все в WM_CREATE а потом манипулировать ShowWindow() и HideWindow() в зависимости от того, какая вкладка открыта, то это будет затратно по памяти (постоянно в памяти все висит, даже когда оно не нужно и т. д.). Или в WM_NOTIFY в switch определять, какая вкладка открыта и там же все создавать, а при смене вкладки - разрушать и создавать новое в том же switch в WM_NOTIFY. Где и как лучше создавать элементы управления? Заранее спасибо)
0
|
|
| 11.10.2017, 21:52 | |
|
Ответы с готовыми решениями:
23
В каком месте программы описывается структура На каком месте титлы в оптимизации Set Form1=Nothing в каком месте? |
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
|
| 12.10.2017, 08:53 | |
|
Сколько же у вас элементов управления что начинаете опасаться за память?
Постоянное создание и удаление элементов не лучше. Оно может привести как минимум к фрагментации памяти, а то и к утечкам, если случайно пропустите операцию удаления.
1
|
|
|
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
|
|
| 12.10.2017, 11:07 | |
|
William BJ, Tab используется, когда может понадобиться несколько окон одновременно. Если удалять, то и данные, находящиеся во вкладке тоже потеряются. Теряется весь смысл Tab. Иначе, создавайте окна а не вкладки.
1
|
|
|
3 / 3 / 0
Регистрация: 11.10.2017
Сообщений: 12
|
|
| 12.10.2017, 11:49 [ТС] | |
|
COKPOWEHEU, Kukstyler, примерно понятно. Т. е. все создавать по мере необходимости, а затем хранить все это дело в статике. А если создать немодальные диалоговое окно (со своим набором элементов и своей процедурой), а затем отобразить нужное окно в нужной вкладке в tab'е, будет ли это лучшим решением?
0
|
|
|
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
|
|
| 12.10.2017, 11:56 | |
|
William BJ, на сегодняшний день, если там не "миллион" вкладок, никаких проблем быть не должно. Так что по усмотрению.
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
|
| 12.10.2017, 13:02 | |
|
Повторяю вопрос: неужели там настолько много окон или настолько мало ОЗУ что приходится об этом думать?
0
|
|
|
3 / 3 / 0
Регистрация: 11.10.2017
Сообщений: 12
|
|
| 12.10.2017, 14:16 [ТС] | |
|
COKPOWEHEU, думал риторический вопрос был) 7 вкладок, на каждой несколько кнопок, есть таблицы и прочий зверинец. Думал, как бы разделить все это хозяйство, чтобы не хранить много статиков в оконной процедуре главного окна. Сейчас для каждой вкладки делаю своё диалоговое окно, и в каждой оконной процедуре для этих окон храню элементы именно того окна, на которое эта вкладка ссылается. Да и ОЗУ 1 Гиг на W10 не располагает ее растрачивать налево-направо)
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
|
||
| 12.10.2017, 14:26 | ||
|
Сомневаюсь что хранение окон займет хотя бы пару десятков килобайт. Фрагментация ОЗУ и возможность утечки на мой взгляд хуже.
0
|
||
|
6 / 6 / 0
Регистрация: 13.05.2012
Сообщений: 593
|
|
| 16.10.2017, 00:19 | |
|
А как нарисовать свою кнопку? Что бы не использовать CreateWindow "button".
0
|
|
| 16.10.2017, 11:26 | |
|
Не по теме: oleg rus, а для чего?
0
|
|
|
6 / 6 / 0
Регистрация: 13.05.2012
Сообщений: 593
|
|
| 16.10.2017, 22:52 | |
|
Kukstyler, Хочу создать свою кнопку и вообще интерфейс свой разработать.
Добавлено через 35 минут Kukstyler, Не устраивает меня кнопка CreateWindow "button" Не современо это как то.
0
|
|
|
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
|
||
| 17.10.2017, 09:53 | ||
|
Ну а если Вы про продвинутый свой GUI, то без рисовки не обойтись.
0
|
||
|
6 / 6 / 0
Регистрация: 13.05.2012
Сообщений: 593
|
|||
| 17.10.2017, 21:07 | |||
|
Kukstyler,
0
|
|||
|
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
|
||||||
| 17.10.2017, 21:32 | ||||||
|
oleg rus, это xml файл, который надо добавить как ресурс:
Добавлено через 1 минуту
0
|
||||||
|
6 / 6 / 0
Регистрация: 13.05.2012
Сообщений: 593
|
|
| 17.10.2017, 21:41 | |
|
Kukstyler, У меня компилятор не создаёт файлы ресурса.
Добавлено через 29 секунд Kukstyler, А примерчика своей кнопки нету?
0
|
|
|
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
|
||||
| 17.10.2017, 22:05 | ||||
|
Тут вроде по этому поводу есть: https://stackoverflow.com/ques... ing-winapi Добавлено через 5 минут
1
|
||||
|
3 / 3 / 0
Регистрация: 11.10.2017
Сообщений: 12
|
||||||
| 19.10.2017, 03:53 [ТС] | ||||||
|
oleg rus, все компиляторы работают с файлами ресурсов, но иногда среда не предоставляет функционала для работы с ними. Для этого скачиваете любой редактор ресурсов (ResEd, например). В этом редакторе создаете проект (имеет расширение .rc) и в нем работаете с формочками. Далее подключаете этот ресурс в проект вашей программы + создаете заголовочный файл, в котором будут перечислены с помощью #define имена всех элементов, которые вы создали. Например:
0
|
||||||
|
Заблокирован
|
|
| 19.10.2017, 03:56 | |
|
William BJ, а в какой среде вы работаете?
0
|
|
|
3 / 3 / 0
Регистрация: 11.10.2017
Сообщений: 12
|
|
| 19.10.2017, 16:47 [ТС] | |
|
Gagoose, работаю в codeBlocks
0
|
|
|
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
|
||||||
| 19.10.2017, 17:14 | ||||||
|
William BJ, стиль BS_OWNERDRAW и сообщение WM_DRAWITEM Вам в помощь (для создания своей кнопки)
И примерчик:
2
|
||||||
| 19.10.2017, 17:14 | |
|
Помогаю со студенческими работами здесь
20
Запрос. На каком месте пользователь В каком месте документа HTML вставлять JS в каком месте правильнее объявлять переменную? Узнать в каком месте выполняется код
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|