![]() |
|
![]() ![]() ![]() |
|
Godfree |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
Второй вопрос по трабле mfc vs C++.
Работаю с MS VS 2008. Создаю по учебнику класс окна, привинчиваю диалог. Далее - редактирую диалог в едиторе и естественно файлы resources.h и resources.rc генерятся студией. Анализирую код и понимаю, что добавление элементов диалога инкапсулировано в классах родителях и если я начну двигаться вверх по дереву, я сломаю мозг. Вопрос в следующем: можно ли доступаться к элементам диалога (кнопки, листбоксы и т.д.) другим, отличным от GetDlgItem(IDD_XXX) способом. Создал в студии чекбокс - в палитре свойств нет параметра состояния чекбокса (т.е. основного его параметра!). Через несколько часов тырканий-мырканий я обнаружил функции (очень даже неявные) которыми можно было считать и записать состояние чекбокса. При разборе конкретного элемента через интернет или MSDN вижу объект, который можно использовать в чистом C++, но при использовании связки MFC + редактор ресурсов я не всегда получаю доступ к объектам, которые создаю. Мало того, я даже не знаю где их искать. Когда я добавляю, допустим CListCtrl в свой диалог, то где-то в глубине ООП (вдали от меня) создается объект CListCtrl. Как мне получить доступ конкретно к нему и через оператор "." увидеть методы для этого объекта, а не перебирать всю ту кашу, которую мне выдает VS после операторов ".", "->", "::" ? Вспоминая Java - там было все строже - создали объект, доступились к паблик методам и членам даже чисто интуитивно, и они будут работать, так как среда предлагает выбрать именно те, с которыми этот объект работает. Очень не хочется писать диалог ручками, а использовать наработанные mfc-классы, но на стыке самогенерирующегося кода и написания своего возникают проблемы.
Описание вижу, а кому эти ресурсы идут на растерзание не могу догнать ![]() И еще хочу ругнуться на MSDN. Информации много, но бестолково и отрывочно каталогизирована (расположена) - куча рефренов, бестолковая фильтрация и т.д. Фильтрую только по C++, так ведь вывалит и по C# и Web development. Есть ли альтернатива сему чудесному мануалу, типа "man" в линуксе? Это сообщение отредактировал(а) Godfree - 8.3.2010, 19:37 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
|
|||
|
||||
Godfree |
|
||||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 19.11.2007 Репутация: нет Всего: нет |
Так как же получить доступ?
![]() В MSDN написано
Каким образом мне получить, ну, скажем в обработчике кнопки этот самый checkedListBox1, у которого есть дитятко Items с методом Insert?
Это не прокатывает... ![]() Это сообщение отредактировал(а) Godfree - 9.3.2010, 02:09 |
||||
|
|||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Godfree, учебник неплохо бы до конца долистать. По твоим претензиям видно человека, испорченного слишком интегрированными ИДЕ и прочими бейсиками. Но здесь вам не тут. На самом деле виндоус устроена совсем не так, как тебе показывают бейсиковые среды. Нет там никаких свойств и даже с объектами не очень. Окна, да, есть. И сообщения для доступам к ним. Все. Остальное - обман и томление духа.
![]() Когда ты на форму кладешь лист-контрол, не создается никакого CListCtrl, а создается контрол класса лист-вью, доступный для ощущений в виде своего HWND. А CListCtrl - это мирах, тонкая-претонкая обертка вокруг это HWND. И все в таком духе. Чтобы доступиться до лист-контрола в виде указателя на CLictCtrl есть 2 способа: 1) GetDlgItem + приведение к CListCtrl 2) завести объект класса CListCtrl самому (и хранить его в диалоге) и сделать подстановку в DoDataExchange (DDX_Control) -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |