说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

送分啦,关于Windows消息的问题.

编辑:说三道四文库 发布时间:2018-04-20 05:46
HTML文档下载 WORD文档下载 PDF文档下载
请问大哥们,我可不可以用SendMessage函数,或别的手动发送TreeCtrl控件的双击左健消息到他的父窗体.即我不想通过鼠标双击来实现,想在一个函数里实现这个功能.请大家赐教
不用SendMessage,父窗口也能得到消息,在WM_NOTIFY消息里面
idCtrl = (int) wParam; 
pnmh = (LPNMHDR) lParam;
TreeCtrl的idCtrl有以下消息:
TVN_BEGINDRAG
TVN_BEGINLABELEDIT
TVN_BEGINRDRAG
TVN_DELETEITEM
TVN_ENDLABELEDIT
TVN_GETDISPINFO
TVN_ITEMEXPANDED
TVN_ITEMEXPANDING
TVN_KEYDOWN
TVN_SELCHANGED
TVN_SELCHANGING
TVN_SETDISPINFO
to ringhone 假如我要在一个函数里用代码实现一个类似于鼠标双击TreeCtrl Item的操作,怎么实现呢?
直接调用双击函数。
那参数怎么设:OnDblclkTree(NMHDR* pNMHDR, LRESULT* pResult)
假设我现在要实现单击第二项?
高手救命呀!!!!!!!!!!!!!!!!!!!!!!11
期待大家的关注呀,没人知道这个问题嘛?
先要得到选中项的句柄
HTREEITEM hitem = TreeView_GetSelection(hwnd);
然后TreeView_Expand(hwnd,hitem,TVE_TOGGLE);
对树中选中的项有效。
以上是宏,对应的消息是:
TVM_GETNEXTITEM
TVM_EXPAND
wait...
{    在你的函数当中
         LRESULT rs;
NMHDR mh;
         ...
         mh.hwndFrom=this->m_hWnd;//发送者句柄
mh.code=NM_DBLCLK;       //发送代码
mh.idFrom=IDC_BUTTON1;   //发送者ID
CPoint pt(5,35);         //相对TreeView左上角的位置
CTreeCtrl * pTree=(CTreeCtrl *)GetDlgItem(IDC_TREE1);//得到你的CTreeCtrl指针
pTree->SelectItem(pTree->HitTest(pt));//选中pt位置的项目
           //如果你不想通过位置来选,就只能先得到所要选项的handle,然后再选中他
         ...
OnDblclkTree(&mh,&rs); //执行你的双击函数
}
ok!
随便写一个用户消息,只要他的响应函数是你的函数就行了。
Windows消息的时效性怎么样?
 

 
感谢大家的回答了,请问一下我昨天用函数 CTreeCtrl::SetCheck(我要选中项的句柄);然后再用CTreeCtrl::GetSelectedItem()返回的句柄居然为NULL,不知道是怎么搞得,我先试试hongv的方法了,和和,分数一定送上
SetCheck()并不是用来选中当前选项的!它不会改变当前选项!
那SetCheck是用来干什么的呢?
只是用来加标记的!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘