如题,我SDI分割后是这样的:
------------------------------- ¦
------------------------------- ¦
¦ ¦
TreeView ¦ ListView(b) ¦
¦ ¦
(a) ¦ ¦
¦-------------------- ¦
¦ ¦
¦ FormView(c) ¦
¦ ¦
¦ ¦
------------------------------- ¦ 我在CMainFrame::OnCreatClient()中填了如下代码:
m_wndSplitter.CreateStatic(this,1,2);
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(C*TView),CSize(rect.Width()/4,rect.Height()),pContext);
m_wndSplitter1.CreateStatic(&m_wndSplitter,2,1,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0,1));
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(C*LView),CSize(rect.Width(),3*rect.Height()/4),pContext);
m_wndSplitter1.CreateView(1,0,RUNTIME_CLASS(C*BView),CSize(rect.Width(),rect.Height()/4),pContext);
在(a)TreeView中OnInitialUpdate()中的调用函数初始化TreeCtrl,目录是从mdb文件中用Ado读取的,我希望所有叶节点和ListView中ListCtrl中每一行(报表型List)关联起来,界面操作起来效果是:当单击每一Tree叶节点时,ListCtrl中只有与之关联的那一行处于高亮选中状态. 我还想在TreeView中右键菜单选择增加删除节点,增加删除节点后ListCtrl也要及时增加或删除一项作为响应. 有人做过这种界面吗?我是新手,欢迎各位积极发言,分不够可以再加.
------------------------------- ¦
------------------------------- ¦
¦ ¦
TreeView ¦ ListView(b) ¦
¦ ¦
(a) ¦ ¦
¦-------------------- ¦
¦ ¦
¦ FormView(c) ¦
¦ ¦
¦ ¦
------------------------------- ¦ 我在CMainFrame::OnCreatClient()中填了如下代码:
m_wndSplitter.CreateStatic(this,1,2);
m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(C*TView),CSize(rect.Width()/4,rect.Height()),pContext);
m_wndSplitter1.CreateStatic(&m_wndSplitter,2,1,WS_CHILD|WS_VISIBLE,m_wndSplitter.IdFromRowCol(0,1));
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(C*LView),CSize(rect.Width(),3*rect.Height()/4),pContext);
m_wndSplitter1.CreateView(1,0,RUNTIME_CLASS(C*BView),CSize(rect.Width(),rect.Height()/4),pContext);
在(a)TreeView中OnInitialUpdate()中的调用函数初始化TreeCtrl,目录是从mdb文件中用Ado读取的,我希望所有叶节点和ListView中ListCtrl中每一行(报表型List)关联起来,界面操作起来效果是:当单击每一Tree叶节点时,ListCtrl中只有与之关联的那一行处于高亮选中状态. 我还想在TreeView中右键菜单选择增加删除节点,增加删除节点后ListCtrl也要及时增加或删除一项作为响应. 有人做过这种界面吗?我是新手,欢迎各位积极发言,分不够可以再加.
解决方案 »
- 串口通信程序 数据传输?
- VC6.0中在win32 application程序中使用MFC问题
- 请教accept和AcceptEx的区别
- 用NetShareDel删除c$返回错误2310,共享资源不存在
- #define ENGLISH 语句代表什么意思?
- 请问如何让一个基于对话框程序每次运行时2秒钟后(运行且仅仅运行2秒种)自动退出?
- 如何把一个字符串变为一个常量的定义?
- SysInfo等2个问题
- 不知大家在用vc++时是否遇到过这样的问题?
- 我刚看完<VC++技术内幕>,请问VC基本上用来做什么的?我应该学他的哪方面?
- SetWindowsHookEx 的问题
- 求助:怎么动态地向ListCtrl填加一行?
pContext 这个参数 好好设计一下.在里面做点手脚.或者 最简单的办法就是设一个全局变量.
2、通过CMainFrame中转,都把消息投递给这个框架,然后由框架来转发。
m_ctrlList.SetItemState(1, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);
m_ctrlList.EnsureVisible(1, false);
m_ctrlList.SetFocus(); 但是并没有使ListCtrl一行高亮选中,怎么在消息中指定ListCtrl的某一项呢?
http://www.vckbase.com/document/viewdoc/?id=13362、定义了消息以后,就涉及到要传些什么参数了。根据你的描述,可以把选中的叶结点的字符串当作参数传递给该消息,然后在消息处理函数中查找与该字符串关联的行,并将它高亮显示。
::SendMessage(m_wndView, WM_TREE_SELCHANGE, WPARAM(chText), 0);
上面这句要确保窗口句柄为LISTVIEW的窗口句柄.
在LISTVIEW中处理:
LRESULT CYourListView::OnTreeSelChange(WPARAM wParam, LPARAM lParam)
{
char *pSelText = (char*)wParam;
// 这里根据pSelText来确定哪一行该选中:
return 0L;
}