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

时间:2013-05-25 12:20:35

标签: c++ visual-c++ mfc sdi

您好,感谢您阅读:)

我正在MFC / SDI中编写应用程序。我在两个视图中拆分窗口。左边的那个是从Cree右边的CTreeView派生的。我还创建了一个看不见的分离器来分开它们。这是显示它的图片:http://i.imgur.com/hdKqArZ.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,这不是我的决定。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以在左窗格中使用CFormView代替CTreeView。在此窗体视图(使用对话框模板)上为图片添加了CTreeCtrl和CStatic。