![]() |
|
|
![]()
|
|
| Fighter |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
Проблема вот в чем. Пусть есть диалог, который называется CMyDlg. В этом CMyDlg есть объявление переменной:
Этот CMyDlg вызывается из CView класса, ну, в данном случае из CMyView.
Проблема вот в чем. Нужно перед выводом модального диалога заполнить CListBox. Как это сделать? |
||||
|
|||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
можно, например, в класс CWordListDlg добавить метод, заполняющий лист-бокс, и вызывать его перед DoModal(); Или заполнять лист-бокс в InitDialog(), все зависит от того чем, и откуда заполнять.
|
|||
|
||||
| Fighter |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
Чем? - Ну, наверное строками. Откуда - а вот этому вопросу как раз и посвящен другой мой топик (http://forum.vingrad.ru/index.php?showtopic=113533). Добавлено @ 05:10 И вообще, ну почему же везде есть свой геморой. Почему нельзя было сделать так, чтобы можно было писать что-то вроде
|
|||
|
||||
| xTr1m |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: нет Всего: 1 |
вот довольно простой способ.
и потом в OnInitDialog() CMyDlg пишем
и все |
||||
|
|||||
| Athlon |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 15.1.2006 Где: Украина:: Запорож ье Репутация: нет Всего: нет |
А в чем собственно проблема? Сделай m_ListBox public,а не private вот и все дела |
||||
|
|||||
| xTr1m |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 692 Регистрация: 9.2.2005 Где: Москва Репутация: нет Всего: 1 |
вот так вот нельзя писать не из-за private. В данном случае происходит обращение к еще не существуещему m_ListBox, он создается в OnInitDialog (ну не совсем в нем, но в этом сейчас суть) |
|||
|
||||
| zkv |
|
||||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
создавай диалог Creat'ом, и потом можешь работать с элементами управления этого диалога напрямую. Ну а если уж очень хочется передать указатель на класс в диалог, который в этом классе создается, то сделать это можно например так (насколько это изящно судить не берусь в файле-хидере диалога пишем:
в файле-cpp диалога пишем:
и теперь можно передавать указатель, в твоем примере так:
PS повторюсь, что не знаю, насколько этот способ "изящен", и стоит ли вообще к нему прибегать, буду рад, если кто-нибудь выскажет мнение. |
||||||
|
|||||||
| Athlon |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 15.1.2006 Где: Украина:: Запорож ье Репутация: нет Всего: нет |
2 zkv - нормальный способ если не хватило времени или желания перенести логику задачи в документ(если я все правильно понимаю, то речь идет о SDI приложении). Касательно же изящности - такой финт выглядит вполне нормально, нужно только контролировать когда переданый в диалог класс будет уничтожатся.
2 xTr1m - согласен, я не уточнил, что когда я использую в SDI приложении диалоги для ввода чего-нибудь, то делаю их членами класса представления. При таком подходе есть существенное преимущество - диалог инициализируется один раз, а при n-м вызове на диалоге остаются данные введеные пользователем при (n-1)-м вызове. Может с точки зрения стиля это и не лучший подход, но мне он кажется довольно удобным. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |