【发布时间】:2014-12-25 06:03:10
【问题描述】:
我目前正在尝试在我的 MDI 应用程序的视图部分中创建一个 listctrl,因为我正在链接一个 listctrl 指针,所以我需要在视图上绘制一次,但是我无法做到,因为我是初学者,谁能给我答案
int CDB_DOC_VIEW_MYView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
CDB_DOC_VIEW_MYDoc *pDoc = GetDocument();
CRect WndRect, ListRect;
this->GetWindowRect(&WndRect);
//CListCtrl *pListCtrl = new CListCtrl();
CListCtrl &pListCtrl = GetListCtrl();
/*ListRect.top = WndRect.top - 5;
ListRect.left = WndRect.left - 5;
ListRect.bottom = WndRect.bottom - 5;
ListRect.right = WndRect.right - 5;*/
pListCtrl.Create( WS_CHILD | WS_VISIBLE | WS_BORDER | LVS_REPORT , ListRect, this, ID_LIST_CTRL);
for( int col = 0; col < 5; col++ )
{
pListCtrl.InsertColumn(col, _T("1"));
}
pListCtrl.ShowWindow(SW_SHOW);
return 0;
}
这就是我做的?
【问题讨论】:
-
也许是我,但我认为你的问题没有任何意义。
-
@JonathanPotter 不仅仅是你。我认为 OP 正在尝试使用 ListView as MDI 子窗口;不像大多数人会编码的那样,作为完全包含 MDI 子客户区的子控件。可能是错的。这确实很难说。
-
i,只是,对代码稍作修改,nw,它可以工作,,,,但是,只有在将此代码放入onsize()函数后才会显示listctrl,,void CDB_DOC_VIEW_MYView::OnSize(UINT nType , int cx, int cy) { CListView::OnSize(nType, cx, cy); // TODO: 在此处添加您的消息处理程序代码 if(::IsWindow(m_listCtrl.m_hWnd)) m_listCtrl.MoveWindow(0,0,cx,cy,TRUE); }但我不知道,为什么当我得到 getwindowrect() 视图时需要这个声明,并且我将它放置在 create function() 中
-
GetWindowRect 返回屏幕坐标。这需要转换为客户端坐标才能在窗口内创建一些东西。您可以使用 ScreenToClient 来做到这一点。
-
ScreenToClient(&WndRect);不工作,还需要写MoveWindow(),我只是想知道没有MoveWindow()它去了哪里,如果创建了,那么,,,,为什么不显示?
标签: c++ c visual-c++ mfc mdi