Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Не запускается проект CListView


Автор: torero 17.6.2006, 14:34
    Я совершенно путаюсь с понятиями: указатель, дескриптор и хэндл.
 Создал проект на основе класса CListView.
 Использую нечёткий пример из книги-Мешков, Тихомиров "Visual C++ и MFC" часть II.
 Сразу в конструкторе "вида" устанавливаю стиль окна:

      CListCtrl &m_List=GetListCtrl();
      ASSERT(::IsWindow(m_List.m_hWnd));
      SetWindowLong(m_List.m_hWnd,GWL_STYLE,LVS_REPORT);

 Ну и конечно же ASSERT говорит, что указатель (или скорее handl) 
 m_List.m_hWnd равен нулю. Но где же взять этот указатель?
   
     Если же в конструкторе ничего не писать, а в OnInitialUpdate:

    CRect rect;
    GetClientRect(rect);
    CListCtrl &m_List=GetListCtrl();
    m_List.InsertColumn(0,_T("NAME"),LVCFMT_LEFT,rect.Width()/3);

то, хотя код завершения InsertColumn нормальный, но окно остаётся пустое.
  Нет заголовка NAME.  Может у кого примерчик есть небольшой со стилем REPORT.
   

Автор: Bukmop 17.6.2006, 15:21
В конструкторе, окна ещё нет, поэтому и хендл нулевой.

Стиль тоже устанавливай в OnInitialUpdate:

m_List.ModifyStyle(LVS_TYPEMASK,LVS_REPORT);
 

Автор: DeadSoul 18.6.2006, 17:29
Цитата(Bukmop @  17.6.2006,  15:21 Найти цитируемый пост)
Стиль тоже устанавливай в OnInitialUpdate:
m_List.ModifyStyle(LVS_TYPEMASK,LVS_REPORT);

И там же делай InsertColumn
 

Автор: torero 19.6.2006, 14:13
  Спасибо за советы.  Этот этап получился.  Двигаюсь дальше. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)