CTreeCtrl -改变其位置而不移动整个区域

CTreeCtrl - changing its position without moving the whole area

本文关键字:移动 区域 改变 位置 CTreeCtrl      更新时间:2023-10-16

大家好,感谢大家的阅读。

我正在用MFC/SDI编写一个应用程序。我将窗口分成两个视图。左边的那个是从CTreeView派生的,右边的那个是从CView派生的。我还创建了一个无形的分离器来分离它们。这是显示它的图片:https://i.stack.imgur.com/WFZsz.png(左边的区域是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,这不是我的决定。

我会避免在树视图上绘制您的图像。尝试使用一个单独的视图,其中包含树视图和一个静态控件,树视图移动到下面。

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