树形结构-急!MFC单文档多视图的CTreeView不能正常使用

问题描述

急!MFC单文档多视图的CTreeView不能正常使用

class TreeView : public CTreeView
是我自建的树形结构C++类

void TreeView::OnInitialUpdate()
{
CTreeView::OnInitialUpdate();
TVINSERTSTRUCT ti = { 0 };
HTREEITEM hParent, Parent;

//TreeView* m_pMyView = (TreeView*)m_wndSplitter.GetPane(0, 0);
HIMAGELIST himl;   //加入图标
himl = ImageList_Create(16, 16, ILC_COLOR24, 1, 12);
ImageList_Add(himl, LoadBitmap(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDB_BITMAP1)), NULL);
SendMessage(TVM_SETIMAGELIST, TVSIL_NORMAL, (LPARAM)himl);

ti.item.mask = TVIF_TEXT | TCIF_IMAGE | TVIF_SELECTEDIMAGE;
ti.item.iImage = 0;
ti.item.iSelectedImage = 0;
ti.item.pszText = _T("127.0.0.1: C0400");
ti.hParent = NULL;
ti.hInsertAfter = TVI_ROOT;
Parent = hParent = (HTREEITEM)SendMessage(TVM_INSERTITEM, 0, (LPARAM)&ti);

ti.hParent = hParent;
ti.hInsertAfter = TVI_LAST;//TVI_LAST表示节点添加在最后
ti.item.iImage = 0;
ti.item.iSelectedImage = 0;
ti.item.pszText = _T("Slot0");
hParent = (HTREEITEM)SendMessage(TVM_INSERTITEM, 0, (LPARAM)&ti);
// TODO:  在此添加专用代码和/或调用基类

}

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: 在此添加专用代码和/或调用基类
if (!m_wndSplitter.CreateStatic(this, 1, 2))
{
return FALSE;
}
CRect rect;
GetClientRect(&rect);

m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(TreeView), CSize(rect.Width() / 3 - 170, rect.Height()), pContext);

if (!m_wndSplitter2.CreateStatic(&m_wndSplitter, 1, 2, WS_CHILD | WS_VISIBLE, m_wndSplitter.IdFromRowCol(0, 1))
    || !m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(RichEditView), CSize(rect.Width() / 3 - 50, rect.Height()), pContext)
    || !m_wndSplitter2.CreateView(0, 1, RUNTIME_CLASS(RichEditView), CSize(rect.Width() / 3, rect.Height()), pContext))
{
    return FALSE;
}
return TRUE;
//return CFrameWnd::OnCreateClient(lpcs, pContext);

}

用的是单文档,代码如上。但是创建的树形结构不能正常打开,鼠标双击也不打开,而且选中时的高亮只出现一下就恢复了。一直不知道咋解决,求帮助啊

而且相同代码在新建的单文档能正常实现
但是我这个只是把非客户区重绘了,边框去掉了,其他也没变什么,然后就不能正常使用了。。万分不解。。

解决方案


这是实际图。

解决方案二:


这是实际图。

解决方案三:

yexu fghrefdhdfsdfgfhgfh

时间: 2024-09-30 08:07:21

树形结构-急!MFC单文档多视图的CTreeView不能正常使用的相关文章

c++-求助!MFC单文档多视图的各视图的问题

问题描述 求助!MFC单文档多视图的各视图的问题 如果我只用系统最初建好的文档类来储存数据,而各视图显示的是数据的不同部分,1.首先这样是否能实现?还是说必须每个视图要建一个文档?2.如果可以.那么我怎么获得其中某个视图的指针?(比如我这里用到的有CTreeView,CRichEditView,并且CRichView的视图块有两个,需要让他们独立显示,而不是共同显示一个数据) 目前只是把视图单纯地分割了,代码如下 BOOL CMainFrame::OnCreateClient(LPCREATES

c++-MFC 单文档 多视图中各视图的创建顺序能否改变?

问题描述 MFC 单文档 多视图中各视图的创建顺序能否改变? 每个视图OnInitialupdate()的顺序能否改变? 我每个视图的创建顺序先后会互相影响,所以需要各视图能按我希望的顺序创建 我之前猜测CMainFrame::OnCreateClient中各视图的分割语句顺序可能影响其创建顺序,但是刚才调试发现貌似不是的.. 解决方案 将那些涉及顺序的代码从OnInitialupdate()提取出来,作为独立的函数. 定义一个全局变量,比如int steps=0 每个OnInitialupda

ceditview-求助!MFC 单文档多视图 CEditView加载的背景图片被挡住的问题

问题描述 求助!MFC 单文档多视图 CEditView加载的背景图片被挡住的问题 貌似是加载的背景图片被输入的那一行的背景覆盖了.. 如图,其中圈起来的就是CEditView,视图底部还能看见背景图片的一部分,但光标所在的那一行就没有图片的显示了,而且我如果按了回车换行,下面一行也会被覆盖..以下代码. 视图类中相关变量: CEdit* m_pCtrlREdit;// 内嵌的CEditCtrl控件指针 CImage m_ImageLogo; // 图片 UINT widthPic height

c++-MFC单文档 CRichEditView如何设置光标的位置

问题描述 MFC单文档 CRichEditView如何设置光标的位置 MFC 单文档 多视图,自继承的CRichEditView如何设置编辑时光标的位置准备在视图中前部分加载一个小图标,然后每次编辑时在小图标的右边开始,即每次输入时光标是在小图标的右边的,因此我想通过设置光标的位置实现有没有相关函数啥的.. 解决方案 SetSel()/ReplaceSel() 解决方案二: http://www.xuebuyuan.com/2085617.html 解决方案三: 段落格式可以设置列表(PFN__

【数字图像处理】 二.MFC单文档分割窗口显示图片

本文是讲述<数字图像处理>系列文章,继上篇讲述BMP格式图片和显示后,该篇讲述如何对单文档进行分割.主要是采用CSplitterWnd静态分割窗口显示图片等相关知识.本文主要结合自己的课程及常用图片软件讲解. 一. CSplitterWnd静态分割窗口 1.CSplitterWnd类基础知识(该部分引用:百度百科和麦田里的稻草人博客)CSplitterWnd类提供一个分离器窗口的功能,分隔器窗口是一个包含有多个窗格的窗口.窗格通常是应用程序特定的由CView派生的对象,但它也可以是具有适当子窗

注册表-mfc单文档文件嵌入word的文档,运行后报错

问题描述 mfc单文档文件嵌入word的文档,运行后报错 我是按照这个链接做的.https://support.microsoft.com/zh-cn/kb/238611 但运行后就出现了未能创建新对象,请确保对象已输入注册表的错误. 我用的是vs2012和office2013 请问各位大牛该如何解决这个问题

cformview-VC/MFC 单文档工程,如何动态创建CFormView并显示出来?

问题描述 VC/MFC 单文档工程,如何动态创建CFormView并显示出来? 大家好.我问这个问题,是经过独立思考的.想通过好心人回答,彻底解决. 我有个基于单文档的程序,我想在菜单响应函数中,动态去创建CFormView并显示.1我添加了继承CFormView的自定义类,并把无框的对话框资源,在CFormView构造函数中传递了IDD_资源进去.2 在菜单响应函数中,我写了如下代码,去创建CFormView:CCreateContext context; context.m_pNewView

MFC单文档应用程序显示图像

1 利用VS2010向导创建一个MFC单文档应用程序MFCTest 2 在MFCTestView.h中引用<atlimage.h>,并创建一个CImage对象 #include <atlimage.h> private: CImage image; 3 打开资源文件,选中Menu下面的IDR_MAINFRAME,添加一个新的菜单项"打开图像",修改其ID为IDM_OPEN,再点击鼠标右键,添加事件处理程序,在弹出的对话框的列表中选择CMFCTestView 4

数据-MFC 单文档视图切分视图调用问题

问题描述 MFC 单文档视图切分视图调用问题 在MainFrm.cpp 里对主视图进行了切分 BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { // TODO: Add your specialized code here and/or call the base class // CRect rc; // 获取框架窗口客户区的CRect对象 GetClientRect(&rc); /