|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.05.2020, 23:21 | #1 |
Пользователь
Регистрация: 21.05.2019
Сообщений: 25
|
mfc list control
Здравствуйте.
Имеется диалоговое окно в нём находится list control. В него необходимо ввести данные и затем открыть. Zadanie -класс диалога, listb - переменная ctrl list. Код кнопки вызывающей диалоговое окно: [CPP] Zadanie dll ; ModifyStyle(LVS_TYPEMASK, LVS_REPORT); dll.Zadanie::listb.InsertColumn(0, L"f", LVCFMT_LEFT, 150); dll.Zadanie::listb.InsertColumn(1, L"i", LVCFMT_LEFT, 150); dll.Zadanie::listb.InsertColumn(2, L"o", LVCFMT_LEFT, 150); dll.Zadanie::listb.InsertColumn(3, L"Year", LVCFMT_LEFT, 150); dll.Zadanie::listb.DeleteAllItems() ; Student* st = GetDocument()->m_list.GetFirst(); for (; st != NULL; st = GetDocument()->m_list.GetNext()) { int nPos = dll.Zadanie::listb.InsertItem(dll.Z adanie::listb.GetItemCount(), st->Getf(), 0); dll.Zadanie::listb.SetItemText(nPos , 1, st->Geti()); dll.Zadanie::listb.SetItemText(nPos , 2, st->Geto()); CString sYear; sYear.Format(L"%d", st->GetYear()); dll.Zadanie::listb.SetItemText(nPos , 3, sYear); dll.Zadanie::listb.SetItemData(nPos , (DWORD_PTR)st); } dll.DoModal(); [/CPP] Ошибка: Вызывается исключение из-за m_Hwnd и this равного null на insertcolumn. Я подумал, что проблема в том что переменной контрола не сопоставлено его ид. Я хотел бы узнать способ сделать это. Я знаю что это делается в программе после вызова DoModal в DoDataExchange. [CPP]DDX_Control(pDX, IDC_LIST1, listb);[/CPP] Но мне надо сделать это до domodal. |
15.05.2020, 08:29 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
15.05.2020, 10:21 | #3 |
Пользователь
Регистрация: 21.05.2019
Сообщений: 25
|
Спасибо за ваш ответ. Из OnInitDialog() не знаю как вызвать DodataExchange(pdx), так как не знаю как передать параметр CDataExchange* pDX. Если без его вызова, то ошибка та же:
Код:
|
15.05.2020, 14:02 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
15.05.2020, 15:54 | #5 |
Пользователь
Регистрация: 21.05.2019
Сообщений: 25
|
Что это за функция? Есть UpdateDialogControls, она не подходит
|
15.05.2020, 16:05 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Опечатался - UpdateData(FALSE).
Только вызывать ее не надо, ее OnInitDialog сам вызывает по умолчанию. |
15.05.2020, 16:18 | #7 |
Пользователь
Регистрация: 21.05.2019
Сообщений: 25
|
Простите мне мое тугоумие, что должно находиться в oninitdialog()? Если там ничего нет, то dodataexchange не вызывается. Если я пытаюсь её вызвать через UpdateData(false); то выпадает исключение опять h_Wnd равен нулю.
|
15.05.2020, 16:49 | #8 |
Пользователь
Регистрация: 21.05.2019
Сообщений: 25
|
там лежит CDialog:ninitdialog(). На нем тоже исключение.
|
15.05.2020, 18:08 | #9 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
|
15.05.2020, 20:41 | #10 |
Пользователь
Регистрация: 21.05.2019
Сообщений: 25
|
Спасибо всё получилось. Остался один глупый вопрос. При попытке использования оператора =. Появляется нелепая ошибка.
Код:
Код:
List:perator=: должна возвращать значение. Код операции присваивание: Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Списки контроля доступа Access Control List (ACL) | Бодя21 | Visual C++ | 0 | 20.09.2013 17:52 |
Не удается добавить сортировку в List Control: Error 64 error C2504: 'CHeaderCtrl' : base class undefined | vaan.sk | Общие вопросы C/C++ | 2 | 29.11.2012 09:48 |
Вопрос List Control | sawyer1988 | Win Api | 3 | 29.05.2012 15:43 |
Вопрос List Control | sawyer1988 | Общие вопросы C/C++ | 1 | 28.05.2012 22:54 |
List Control. Ввод данных с клавиатуры | juky88 | Общие вопросы C/C++ | 1 | 01.05.2011 18:51 |