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