C++ CTreeCtrl-在不移动整个区域的情况下更改其位置

C++ CTreeCtrl-在不移动整个区域的情况下更改其位置,c++,visual-c++,mfc,sdi,C++,Visual C++,Mfc,Sdi,您好,谢谢您阅读:) 我正在用MFC/SDI编写一个应用程序。我把窗户分成两个视图。左边的一个来自CTreeView,右边的一个来自CView。我还创建了一个不可见的拆分器来拆分它们。这是显示它的图片:(左边的区域是CTreeView派生的,我的错)。我想移动CTreeCtrl,使其不覆盖图片。我在谷歌上搜索可能的解决方案,但我找到的唯一一个并没有像我预期的那样有效。使用GetWindowRect移动整个区域,不允许我在以前是矩形的一部分但现在不再是的区域上绘制。因此,当我移动CTreeCtrl

您好,谢谢您阅读:)

我正在用MFC/SDI编写一个应用程序。我把窗户分成两个视图。左边的一个来自CTreeView,右边的一个来自CView。我还创建了一个不可见的拆分器来拆分它们。这是显示它的图片:(左边的区域是CTreeView派生的,我的错)。我想移动CTreeCtrl,使其不覆盖图片。我在谷歌上搜索可能的解决方案,但我找到的唯一一个并没有像我预期的那样有效。使用GetWindowRect移动整个区域,不允许我在以前是矩形的一部分但现在不再是的区域上绘制。因此,当我移动CTreeCtrl时,我不能将图片放在它上面的区域。我在OnInitialUpdate()中做所有这些事情

以下是我在互联网上找到并尝试过的示例代码:

CTreeCtrl &list_recipes = this -> GetTreeCtrl();
list_recipes.GetWindowRect(&rect);
ScreenToClient(&rect);
rect.top += 100;
rect.bottom += 100;
list_recipes.MoveWindow(&rect);

// inserting items into the CTreeCtrl
// (...)

CImage image;
CDC dc;
image.LoadFromResource(AfxGetInstanceHandle(), IDB_CUPCAKE);
dc.CreateCompatibleDC(pDC);
CRect rect3(0,0,202,126);
image.Draw(pDC -> m_hDC,rect3);

任何帮助都将不胜感激,提前感谢:)我必须使用MFC,这不是我的决定。

我将避免在树视图上绘制您的图像。尝试使用包含treeview的单独视图和将treeview移到下面的静态控件。

您可以在左窗格中使用CFormView而不是CTreeView。在此表单视图(使用对话框模板)上,为图片放置一个CTreeCtrl和一个CStatic。

在阅读您的文章之前,我提出了相同的解决方案,它很有效,谢谢您的帮助:)