CTreeCtrl — изменение своей позиции без перемещения всей области

Привет и спасибо за чтение 🙂

Я пишу заявку в MFC / SDI. Я разделил окно на две части. Один слева является производным от CTreeView, а другой справа от CView. Я также создал невидимый сплиттер, чтобы разделить их. Вот картинка, показывающая это: 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, это было не мое решение.

0

Решение

Я бы не стал рисовать ваше изображение на дереве. Попробуйте использовать отдельное представление, которое содержит древовидное представление и статический элемент управления с древовидным представлением, перемещенным ниже.

0

Другие решения

Вместо CTreeView вы можете использовать CFormView для левой панели. В этом виде формы (который использует шаблон диалога) поместите CTreeCtrl и CStatic для изображения.

0

По вопросам рекламы [email protected]