| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Доступ к элементам windows диалога |
| Автор: Godfree 8.3.2010, 13:13 | ||
| Второй вопрос по трабле 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" в линуксе? |
| Автор: bsa 8.3.2010, 17:37 | ||
|
| Автор: Godfree 8.3.2010, 23:37 | ||||
| Так как же получить доступ? В MSDN написано
Каким образом мне получить, ну, скажем в обработчике кнопки этот самый checkedListBox1, у которого есть дитятко Items с методом Insert?
Это не прокатывает... |
| Автор: Earnest 9.3.2010, 09:15 |
| Godfree, учебник неплохо бы до конца долистать. По твоим претензиям видно человека, испорченного слишком интегрированными ИДЕ и прочими бейсиками. Но здесь вам не тут. На самом деле виндоус устроена совсем не так, как тебе показывают бейсиковые среды. Нет там никаких свойств и даже с объектами не очень. Окна, да, есть. И сообщения для доступам к ним. Все. Остальное - обман и томление духа. Когда ты на форму кладешь лист-контрол, не создается никакого CListCtrl, а создается контрол класса лист-вью, доступный для ощущений в виде своего HWND. А CListCtrl - это мирах, тонкая-претонкая обертка вокруг это HWND. И все в таком духе. Чтобы доступиться до лист-контрола в виде указателя на CLictCtrl есть 2 способа: 1) GetDlgItem + приведение к CListCtrl 2) завести объект класса CListCtrl самому (и хранить его в диалоге) и сделать подстановку в DoDataExchange (DDX_Control) |