DDX и ListView

Тема в разделе "WASM.WIN32", создана пользователем verelex, 21 май 2009.

  1. verelex

    verelex New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2006
    Сообщения:
    90
    Привет.
    Как установить текст в ListView?
    Код (Text):
    1. void CResultDlg::DoDataExchange(CDataExchange* pDX)
    2. {
    3.     CDialog::DoDataExchange(pDX);
    4.     //DDX_LBStringExact(pDX,IDC_LIST1,m_str);
    5.     DDX_LBString(pDX,IDC_LIST1,m_str); // <--- error
    6.     //DDX_Text(pDX,IDOK,m_str); // <--- worked
    7. }
    По идее надо сначала вставить колонки:
    Код (Text):
    1. void CResultDlg::InsertColumnInList()
    2. {
    3. LV_COLUMN lvc;
    4. LPWSTR szColumns[3] = { L"zzz",L"xxx",L"yyy" };
    5.    
    6.     lvc.mask = LVCF_TEXT+LVCF_WIDTH;
    7.     lvc.cx = 100; //width of the column in px
    8.     for (int i=0; i<3; i++)
    9.     {
    10.         lvc.pszText = szColumns[i];
    11.         m_wndList->InsertColumn(i,&lvc);
    12.     }
    13. }
    InsertColumnInList() до вызова DoModal() смысла нет.
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Код (Text):
    1. void CResultDlg::DoDataExchange(CDataExchange* pDX)
    2. {
    3.   CDialog::DoDataExchange(pDX);
    4.   DDX_Control(pDX, IDC_LIST1, m_wndList);
    5. }
    6.  
    7. BOOL CResultDlg::OnInitDialog() {
    8.   LPCTSTR szColumns[] = { _T("xxx"), _T("yyy"), _T("zzz") };
    9.   int width = 100;
    10.   for (size_t i = 0; i < sizeof(szColumns) / sizeof(szColumns[0]); ++i) {
    11.     m_wndList.InsertColumn(i, szColumns[i], LVCFMT_LEFT, width);
    12.   }
    13.   m_wndList.SetColumnWidth(i - 1, LVSCW_AUTOSIZE);
    14.   ...
    15.   std::vector<my_data> v;
    16.   ...
    17.   int index = 0;
    18.   BOOST_FOREACH(const my_data &data, v) {
    19.      int nItem = m_wndList.InsertItem(index++, data.xxx.c_str());
    20.      ASSERT(nItem != -1);
    21.      m_wndList.SetItemText(nItem, 1, data.yyy.c_str());
    22.      m_wndList.SetItemText(nItem, 2, data.zzz.c_str());
    23.      m_wndList.SetItemData(nItem, reinterpret_cast<DWORD_PTR>(&data));
    24.   }
    25.   return TRUE;
    26. }
     
  3. verelex

    verelex New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2006
    Сообщения:
    90
    Спасибо!