我在程序里加了DialogBar,并在上面加了TreeControl,想实现右键弹出菜单,在RClick消息响应函数里加如下代码:
CMenu m_menu;
m_menu.LoadMenu(IDR_DIALOGBOXPOP);
CPoint pt;
GetCursorPos(&pt);
CMenu* m_sub = m_menu.GetSubMenu(0);
m_sub->TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
可以实现功能,然后我想添加一个功能就是左键选中一个Item后,如果右键选的不是左键选中的Item就return,就添加了下列代码:
CTreeCtrl* m_treeFrame = (CTreeCtrl*)m_wndMyDialogBar.GetDlgItem(IDC_TREEFRAME); HTREEITEM m_item = m_treeFrame->GetSelectedItem();
UINT uFlags;
HTREEITEM m_hititem = m_treeFrame->HitTest(pt,&uFlags);
if(m_item!=m_hititem) return;
结果就弹不出来菜单了,大家帮我看看为什么?
CMenu m_menu;
m_menu.LoadMenu(IDR_DIALOGBOXPOP);
CPoint pt;
GetCursorPos(&pt);
CMenu* m_sub = m_menu.GetSubMenu(0);
m_sub->TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
可以实现功能,然后我想添加一个功能就是左键选中一个Item后,如果右键选的不是左键选中的Item就return,就添加了下列代码:
CTreeCtrl* m_treeFrame = (CTreeCtrl*)m_wndMyDialogBar.GetDlgItem(IDC_TREEFRAME); HTREEITEM m_item = m_treeFrame->GetSelectedItem();
UINT uFlags;
HTREEITEM m_hititem = m_treeFrame->HitTest(pt,&uFlags);
if(m_item!=m_hititem) return;
结果就弹不出来菜单了,大家帮我看看为什么?
解决方案 »
- VC2005,怎么看Release版的反汇编?
- installshield 如何实现驱动自动安装
- 请教大家怎样把自定义类类型的变量跟对话框上的控件关联起来?
- 如何重绘cbutton按钮?
- 急!ADO在WIN NT下,直接执行文件一切正常,但采用桌面快捷方式打开却无法连接数据库!!!
- 关于GetCurrentTime,郁闷
- 一个简单而重要的问题:VC6能用到多少年后不能用了?
- 求助:哪里可以找到NDIS-HOOK 的资料
- 谁有基于DirectShow接口的视频采集程序的源代码和相关书籍?
- 全局变量的定义应该放在哪里?
- 请问!用VC如何能得到 如:<user userid ="1" username = "test" />中的uerid的值
- 新手,LPCSTR和LPSTR有什么区别?
good luck!
单步跟踪时,发现m_hititem是0值。这是怎么回事阿?
GetCursorPos(&pt);
ScreenToClient(&pt);
CMenu m_menu;
m_menu.LoadMenu(IDR_DIALOGBOXPOP); CTreeCtrl* m_treeFrame = (CTreeCtrl*)m_wndMyDialogBar.GetDlgItem(IDC_TREEFRAME); HTREEITEM m_item = m_treeFrame->GetSelectedItem();
CPoint pt;
GetCursorPos(&pt);
ScreenToClient(&pt);
UINT uFlags;
HTREEITEM m_hititem = m_treeFrame->HitTest(pt,&uFlags);
if(m_item!=m_hititem) return;
CMenu* m_sub = m_menu.GetSubMenu(0); m_sub->TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
就是出不来,我快气死了!!
pt保存是其父窗口的位置坐标,需要在你的从新派生一个树形的控件然后在派生的类当中
对wm_rbuttondown从新加代码,设定pt ,不知道清楚不在控件的区域父窗口wm_rbuttondown
被分配到控件中去了
所以在父窗口中是无法实现该代码的执行
这种问题可能是处理鼠标消息时,鼠标的位置改变了,不再是点击时的位置。
"需要在你的从新派生一个树形的控件然后在派生的类当中
对wm_rbuttondown从新加代码" 不太明白。
我是把IDC_TREE加到了MainFrame里了,在MainFrame里响应控件的NM_RCLICK消息。
就以CBUTTON 作为基类派生一个新的类 然后在定义变量的时候,选择新定义的类定义成CONTRL形