![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Kipter |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 2.5.2006 Репутация: нет Всего: нет |
Изучаю Win32 API...
Во всех примерах я встречаю проверку на то - зарегестрирован ли оконный класс и создано ли само окно...
Так вот, насколько это действительно нужно уже в релизе программы? могут ли быть случаи невозможности создания окна или регистрации класса зависящие от каких то других обстоятельств? например система не дала это сделать или еще что.... Если же эти проверки критически необходимы то что лучше делать в них для удобства? просто выводить сообщения что окно не могло быть создано или класс не смог зарегестрироваться? Почему заинтересовала данная проблема.... ну допустим я пишу программу чисто без диалогов... Я создаю в окне программы по 10 кнопок, 10 строк ввода, и т д и делать проверку была ли создана кнопка, строка ввода или еще что... ужас.... Это сообщение отредактировал(а) Kipter - 19.4.2007, 18:31 |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Проверять надо, потому что раз в год и палка стреляет. Особенно, если код промышленный.
Что делать, если окно не создалось, зависит от программы, это тебе решать. Ужас ![]() А зачем, если все это можно нарисовать в редакторе ресурсов, а потом создать диалог? Но если серьезно, то руками делается так: Все дочерние окна лучше создавать в обработчике OnCreate родительского окна. Если какое-то из окон не создалось - можно, скажем, вернуть -1 и родительское окно просто не создастся. А если это не критично - можно и игнорировать, и будет пустое место вместо контрола. Конечно, писать 25 раз if (hWnd == 0) - не стоит. Можно это дело обернуть, чтобы проверить в одном месте, и скажем, сгенерировать исключение. Классы для кнопок и прочих стандартных контролов регистрировать не нужно - они есть. -------------------- ... |
|||
|
||||
Kipter |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 2.5.2006 Репутация: нет Всего: нет |
Впринципе понятно...
Да можно было бы нарисовать все это дело в редакторе диалогов, но суть моего задания - все сделать руками... включая кнопки.... кнопки да и другие контролы я рисую также сам... поэтому регистрация класса тоже нужна.... В одном месте проверить сразу все впринципе можно... но получится просто большой If? if(!(hWndButton1 && hWndButton2.... hWndButton356)) { ..... } Конечно можно засунуть все в массив... и потом просто по нему пробегать.... но толга будет сложно вспоминать а в каком элементе массива у меня хендл нужной мне кнопки в 13 или 15? а так по названию можно запомнить hWButtonAdd или hWEditName можно конечно использовать константы #define BUTTON_ADD 1 #define BUTTON_EDIT 2 а потом в массиве их использовать ... HandleArray[BUTTON_ADD] .... а в обработчике событий как case WM_USER + BUTTON_ADD: допустим... как такое изощрение норм? Это сообщение отредактировал(а) Kipter - 19.4.2007, 20:48 |
|||
|
||||
GremlinProg |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
грамотнее будет все же заводить массив, а вместо дефайнов, использовать энум:
естественно, это только пример... -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
Kipter |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 114 Регистрация: 2.5.2006 Репутация: нет Всего: нет |
||||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |