Не могу создать список в окне
затем добавил колонку в ListBox:
FileBox.InsertColumn(0,_T("name"),LVCFMT_LEFT,rect.Width() /3);
Проблема в том что ListControl не появляется.Вылазит только чистое окно без контрола.
Вот код:
/////////////////////////////////////////////////////////////////
class FileWnd:public CMDIChildWnd
{
public:
FileWnd();
virtual ~FileWnd();
private:
afx_msg int OnCreate(LPCREATESTRUCT);
afx_msg void OnPaint();
afx_msg void OnSize(UINT,int,int);
afx_msg void OnDestroy();
virtual void OnInitialUpdate( );
virtual BOOL PreCreateWindow( CREATESTRUCT& cs );
CListCtrl FileBox;
DECLARE_MESSAGE_MAP();
};
FileWnd::FileWnd()
{
}
FileWnd::~FileWnd()
{
}
BEGIN_MESSAGE_MAP(FileWnd,CMDIChildWnd)
ON_WM_CREATE()
ON_WM_PAINT()
ON_WM_SIZE()
ON_WM_DESTROY()
END_MESSAGE_MAP()
BOOL FileWnd::PreCreateWindow( CREATESTRUCT& cs )
{
cs.lpszName = "hello";
//cs.dwExStyle = WS_EX_CLIENTEDGE;
//cs.lpszClass = AfxRegisterWndClass(0);
return CMDIChildWnd::PreCreateWindow(cs);;
}
int FileWnd::OnCreate(LPCREATESTRUCT lpc)
{
if(CMDIChildWnd::OnCreate(lpc)==-1)
return -1;
CRect rect;
GetClientRect(&rect);
FileBox.Create(LVS_LIST|LVS_REPORT|LVS_EDITLABELS|WS_VISIBLE|WS_CHILD,rect,this,1000);
FileBox.InsertColumn(0,_T("name"),LVCFMT_LEFT,rect.Width() /3);
return 0;
}
void FileWnd::OnPaint()
{
CMDIChildWnd::OnPaint();
}
void FileWnd::OnSize(UINT Code,int cx,int cy)
{
CMDIChildWnd::OnSize(Code,cx,cy);
}
void FileWnd::OnDestroy()
{
}
Нет вру.. создается.. Только его на белом не видно :).
Короче вот так его видно:
Код:
FileBox.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_ICON,CRect(50,5,150,150),this,2);
но все-таки он продолжает вести себя как-то странно..
Мда :) Все-таки изначально я был прав! Создавай на View-е.
class FileView:public CListView
{
public:
FileView();
virtual ~FileView();
private:
afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct );
virtual BOOL PreCreateWindow( CREATESTRUCT& cs );
DECLARE_MESSAGE_MAP();
};
затем в классе окна создаю FileView* pFileBox;
а в функции OnCreate:
pFileBox = new FileView;
pFileBox->Create(NULL,"test",WS_VISIBLE|WS_CHILD,rect,this,1);
CListCtrl& ListCtrl = pFileBox->GetListCtrl();
ListCtrl.Create(WS_CHILD|WS_VISIBLE|WS_BORDER|LVS_ICON,CRect(10,10,150,150),pFileBox,2);
возникает ошибка ASSERT на последней строчке.
Вторую тему можно сносить создал по ошибке.
ПыСы. Воспользуйся визардом студии