|
|
|
DDX трабл
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. У меня следующий вопрос. Допустим в программе (MFC Dialog) лежит компонент CListCtrl и есть несколько вкладок. При переходе в очередную вкладку, в списке должно что-то отображаться, т.е. надо хранить как бы несколько списков, для чего проще юзать объекты CListCtrl. Но КАК ОДНОМУ КОМПОНЕНТУ (IDC_LIST_FILES) ПРИВЯЗЫВАТЬ НЕСКОЛЬКО CONTROL-ПЕРЕМЕННЫХ? Конечно, возникает мысль о вмешательстве в DDX: void CMyDlg::DoDataExchange(CDataExchange* pDX) { DDX_Control(pDX, IDC_LIST_FILES, m_ListContent[m_CurTab]); CDialog::DoDataExchange(pDX); } Ясно, что в классе объявлено CListCtrl m_ListContent[MAX_TABS]. НО ВСЯ ЭТА ШТУКА НЕ РАБОТАЕТ! На строчке DDX_Control(pDX, IDC_LIST_FILES, m_ListContent[m_CurTab]); ПЕРВЫЙ раз (когда m_CurTab==0 и вызывается все это первый раз) ошибки не возникает, а ВТОРОЙ – ошибка. Словно нельзя «пересопоставить» control-переменную, но разве эти связи где-то прописаны, кроме как в DoDataExchange? Ведь задача очень типичная (один компонент, несколько его контентов), как обычно ее разрешают? Создавать массив структур накладно, там много разных столбцов.. Спасибо.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2006, 10:57 |
|
||
|
DDX трабл
|
|||
|---|---|---|---|
|
#18+
Должно быть: Код: plaintext 1. 2. 3. 4. 5. 6. Но КАК ОДНОМУ КОМПОНЕНТУ (IDC_LIST_FILES) ПРИВЯЗЫВАТЬ НЕСКОЛЬКО CONTROL-ПЕРЕМЕННЫХ? Это можно делать только попеременно, поэтому это надо делать динамически. Методы - Attach/Detach. но разве эти связи где-то прописаны, кроме как в DoDataExchange? Да, в данных объекта-контрола и в статических данных MFC. Каждое окно Windows в один момент времени может быть привязано не более чем к одному объекту типа CWnd. Посмотрите код CWnd::FromHandle например. (один компонент, несколько его контентов), как обычно ее разрешают? Если вы о закладках, то делают так обычно: ставять N независимых контролов, а по переключению Tab (или чего там еще) прячут (hide) все кроме одного нужного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2006, 13:03 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=344&tid=2030861]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 368ms |

| 0 / 0 |
