G
Guest
начинаю осваивать MFC.. пока пытаюсь не пользовать Визард.. пишу все вручную..*думаю не стоит пояснять почему вручную когда есть визард*
возникли некоторые проблемы...
в MainWnd.h объявил переменную CListCtrl m_list;
в MainWnd.cpp
задача в том, чтобы по ходу выполнения программы вписывать в сей Лист некоторые переменные..
написал следуюющую функцию..
и тут началось...
1. Почему я обизательно должен заполнять LVITEM структуру, а не использовать
Пример:
2. привидение типов. Так, vi.cchTextMax принимает строку типа LPWSTR, а имеется CString.
Выкрутился ..
...но это же не выход...не заводить же мне беферную переменную каждый раз кода хочу преобразовать строку одного типа к другому...
3. непонятное
возникли некоторые проблемы...
в MainWnd.h объявил переменную CListCtrl m_list;
в MainWnd.cpp
Код:
m_list.Create(
WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_REPORT|LVS_SINGLESEL,
CRect(10,40,610,rtClient.Height()-50),this,ID_LISTCTRL
); //створив сам CListCtrl обєкт
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);
m_list.InsertColumn(0,_T("test1"),LVCFMT_LEFT,200);
m_list.InsertColumn(1,_T("test2"),LVCFMT_LEFT,200);
m_list.InsertColumn(2,_T("test3"),LVCFMT_LEFT,200);
задача в том, чтобы по ходу выполнения программы вписывать в сей Лист некоторые переменные..
написал следуюющую функцию..
Код:
void CMainWnd::UpdateList(){
for (int i=0; i<ob_arr.GetCount();++i)
{
CPerson*pers=(CPerson*)ob_arr[i];//CObArray ob_arr;
TCHAR *name;
name=new TCHAR[sizeof(pers->GetName())];
lstrcpy(name,pers->GetName());
LVITEM lvi;
lvi.pszText = name;
lvi.cchTextMax = wcslen(lvi.pszText);
lvi.iItem = i;
lvi.iSubItem = 0;
lvi.iImage = 0;
lvi.mask = LVIF_TEXT|LVIF_IMAGE;
m_list.InsertItem(&lvi);//left of '.InsertItem' must have class/struct/union type
//m_list.SetItemText(i,1,pers->GetPhone());
//m_list.SetItemText(i,2,pers->GetEmail());
}
}
и тут началось...
1. Почему я обизательно должен заполнять LVITEM структуру, а не использовать
Код:
BOOL SetItemText(
int nItem,
int nSubItem,
LPCTSTR lpszText
);
Код:
m_list.SetItemText(i,1,_T("i.1 test"));
2. привидение типов. Так, vi.cchTextMax принимает строку типа LPWSTR, а имеется CString.
Выкрутился ..
Код:
TCHAR *name;
name=new TCHAR[sizeof(pers->GetName())];
lstrcpy(name,pers->GetName());
...но это же не выход...не заводить же мне беферную переменную каждый раз кода хочу преобразовать строку одного типа к другому...
3. непонятное
Код:
m_list.InsertItem(&lvi);//left of '.InsertItem' must have class/struct/union type