在View中用Create创建的CListCtrl和CTreeCtrl怎么判断用户单击树的哪个子项或者列表的哪条记录
我在View的OnLButtonDown()中尝试根本不触发.
我在View的OnLButtonDown()中尝试根本不触发.
解决方案 »
- 关于MFC的程序,启动就报错的问题。
- 请有经验的进,两个小错误
- 关闭线程时,如何把线程中申请的内存都释放掉
- 如何将CTreeCtrl的滚动条替换为自绘制的滚动条?
- MDI程序手动改成SDI程序后,单击New或Open程序退出是怎么回事?
- 急急急!!巨难的XML读取问题!! 100分求解!!
- 谁能帮我解释一下C++BUILDER 中主线程与工作线程的含义与区别,100分说到做到
- MFC MDI 分割窗口总是出现断言操作,但是在SDI中是正确的?请问大神~~
- CBCGPTabWnd创建的tab窗口的子窗口刷新出现问题
- 我有一帧PCM数据流,应该调用什么函数将其播放出来?
- 发布了一个新软件,希望大家支持一下,谢谢!
- 如何调用OnCreateClient函数
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; if(pNMListView->iItem != -1) { CString strtemp; strtemp.Format("单击的是第%d行第%d列", pNMListView->iItem, pNMListView->iSubItem); AfxMessageBox(strtemp); }
因为是用Create直接在view中创建的所以无法直接处理控件消息
LPNMHDR pnmh;
pnmh = (LPNMHDR) lParam;
NMHDR *my=(NMHDR *)lParam;
if((my->code==NM_CLICK))
{
HTREEITEM item = m_wndTree.GetSelectedItem();
}
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; TV_ITEM tvItem = pNMTreeView->itemNew;
HTREEITEM m_hSelItem = tvItem.hItem;
MessageBox(m_pTreeList->GetItemText(m_hSelItem));//m_pTreeList是指向CTreeList的指针
*pResult = 0;
}
if(pNMTreeView->hdr.hwndFrom==m_wndContentTree.m_hWnd)
ptree=&m_wndContentTree;
else if(pNMTreeView->hdr.hwndFrom==m_wndCustomTree.m_hWnd)
ptree=&m_wndCustomTree;
else if.... UINT uFlags;
CPoint pt;
GetCursorPos(&pt);
ptree->ScreenToClient(&pt); HTREEITEM hItem = ptree->HitTest(pt, &uFlags);
if ((hItem != NULL))//...
{
if(ptree->Select(hItem, TVGN_CARET))
{
...//hItem即是用户单击(或右击)的条目,处理它就行了
}
}
....
ON_NOTIFY(NM_CLICK, IDC_CONTENTTREE, OnClickTree)//add by hands
ON_NOTIFY(NM_CLICK, IDC_CUSTOMTREE, OnClickTree)//add by hands