我的程序自动生成了CLeftView(派生自CTreeView)和CMyView(派生自CListView),现在问题:
第一:我在CMainFrame类中改变了CLeftView中的数据库,因此,希望更新CLeftView中的树视图,同时更新CMyView的列表视图。说简单点是:我现在不知道应该在什么地方获得怎样获得CLeftView的指针和CMyView的指针?第二:我在CLeftView树视图中点击某一项目时,如何同时更新CMyView的列表视图?第三:有什么书可以帮助我更好的解决这些问题?
第一:我在CMainFrame类中改变了CLeftView中的数据库,因此,希望更新CLeftView中的树视图,同时更新CMyView的列表视图。说简单点是:我现在不知道应该在什么地方获得怎样获得CLeftView的指针和CMyView的指针?第二:我在CLeftView树视图中点击某一项目时,如何同时更新CMyView的列表视图?第三:有什么书可以帮助我更好的解决这些问题?
解决方案 »
- 如何根据COM组件里的菜单资源在客户程序里生成一个新菜单,前提是不使用CMenu指针或其句柄进行传递
- 求助!!
- 视音频难度问题:如何让media player播放自定义的asf格式流文件
- 再散分:关于对Media Player编程的几个问题。
- ODBC数据库控件MSFlexGrid中的数据如何居中显示
- 在线等待,程序忙的时候,显示一个等待的东西,有什么好的控件或类,或别的实现方法吗?
- VC++里debug 版设断点不能中断是什么原因?
- 请问该怎样实现细化后剪枝处理
- 请问BSTR*类型该如何使用?
- 哪位大哥知道用什么编辑wmf格式的文件(急用)
- 在activex控件中cwnd该怎么draw出来?
- 请教:关于判断用户是否安装SQL Server客户端或者服务器的最稳定的方法。谢谢!
2。由leftview向mainframe发送自定义消息,然后mainframe负责更新myview列表
-------------------------
代码就是和你的程序一样的一个demo
[email protected]
CMyListView* CMainFrame::GetRightPane()
{
CWnd* pWnd = wndSplitter.GetPane(0, 1);
CMyListView* pView = DYNAMIC_DOWNCAST(CMyListView, pWnd);
return pView;
}
and you can deal with it now...
1. 在CMainFrame中,调用GetActiveDocument()->UpdateAllViews();
2. 在LeftView中响应TVN_SELCHANGED消息,调用GetDocument()->UpdateAllViews();
3. 不知道,或许,MSDN和《深入浅出MFC》可以吧。
每次调用UpdateAllViews(CView* pSender, LPARAM lHint, CObject* pObject)时,可以设置不同的参数,在每个CView::OnUpdate()中,根据参数来判断是否需要更新,怎样更新。
我是这么做的。
2。得到了由视图(列表空间)后,在双击列表视图时,如何得到当前双击的项目的名称?
3。列表项目中的参数如何传递。
kingzai(studying C#)
多谢你已经为我解决了最初提出第二个问题...
2.use HitTest,this is my code example
void CProjectTreeView::OnLButtonDblClk(UINT nFlags, CPoint point)
{
CCDEApp*pApp=(CCDEApp*)AfxGetApp();
BOOL nSelect;
HTREEITEM hItem = HitTest(point, &nFlags);
if ((hItem != NULL) && (TVHT_ONITEM & nFlags))
{
nSelect=Select(hItem, TVGN_CARET);
}
CString ItemText;
ItemText=GetItemText(hItem);
if(nSelect == 1)
...
}
3.sendMessage ,use wparam and lparam.
kingzai(studying C#) 刚才忘了问一个问题:
单击列表控件的列时,如何对项目进行重新排序?多谢提供参考代码!!!
CMyView *pRightView=(CMyView*)wndSplitter.GetPane(0, 1);void CMyView ::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
int i=pNMListView->iItem;
if(-1!=i)
{
CListCtrl& lst=GetListCtrl();
MessageBox(lst.GetItemText(i,0));
}
*pResult=0;
}列表控件排序的问题可看下面的网页,里面有解释与代码.
http://www.copathway.com/vchelp/zart/sortl.asp?type_id=9&class_id=1&cata_id=1&article_id=73