visual studio MFC编程中,创建了一个多文档应用程序,如何给左侧的文档视图节点添加双击和右击事件呢
亲,我记得您曾经回答过以上问题。您的回答我按着做了,很好,但是,我想做的是添加双击响应事件后,在其函数里写代码,使双击能使影像在右边显示出来,该怎么做。在打开第i幅影像之...
亲,我记得您曾经回答过以上问题。您的回答我按着做了,很好,但是,我想做的是添加双击响应事件后,在其函数里写代码,使双击能使影像在右边显示出来,该怎么做。在打开第i幅影像之后继续写代码。非常感谢。
void CViewTree::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// Main 成员变量m_pMainWnd
CMainFrame *pMainFrm = (CMainFrame *)AfxGetMainWnd();
CTreeCtrl *pWndTree = (CTreeCtrl*) &pMainFrm->m_wndFileView.m_wndFileView;
ASSERT_VALID(pWndTree);
if (point != CPoint(-1, -1))
{
UINT flags = 0;
HTREEITEM hTreeItem = pWndTree->HitTest(point, &flags);
if (hTreeItem != NULL)
{
pWndTree->SelectItem(hTreeItem);
for (int i=0;i<pMainFrm->m_wndFileView.m_hiImageNum;i++)
{
if(hTreeItem==pMainFrm->m_wndFileView.m_hiImageName[i])
{
//打开第i幅影像
break;
}
}
}
} 展开
void CViewTree::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
// Main 成员变量m_pMainWnd
CMainFrame *pMainFrm = (CMainFrame *)AfxGetMainWnd();
CTreeCtrl *pWndTree = (CTreeCtrl*) &pMainFrm->m_wndFileView.m_wndFileView;
ASSERT_VALID(pWndTree);
if (point != CPoint(-1, -1))
{
UINT flags = 0;
HTREEITEM hTreeItem = pWndTree->HitTest(point, &flags);
if (hTreeItem != NULL)
{
pWndTree->SelectItem(hTreeItem);
for (int i=0;i<pMainFrm->m_wndFileView.m_hiImageNum;i++)
{
if(hTreeItem==pMainFrm->m_wndFileView.m_hiImageName[i])
{
//打开第i幅影像
break;
}
}
}
} 展开
1个回答
展开全部
你现在这个双击左键的消息也是可以的。另外也可以:
NM_DBLCLK
为Tree添加这个消息
void XXX::OnNMDblclkTree(NMHDR *pNMHDR, LRESULT *pResult)
{
UNREFERENCED_PARAMETER(pNMHDR);
CPoint point
GetCursorPos(&point);
m_treeCtrl.ScreenToClient(&point); // 如果是Tree自身的类,就直接ScreenToclient
UINT uFlags = 0;
HTREEITEM hItem = m_treeCtrl.HitTest(point, &uFlags)
if(hItem)
{
// 这里实现
for (int i=0;i<pMainFrm->m_wndFileView.m_hiImageNum;i++)
{
if(hTreeItem==pMainFrm->m_wndFileView.m_hiImageName[i])
{
我看你是重新遍历去找,不过我建议你在添加树项的时候,就把对应关系记录在ItemData里面
这里就可以直接GetItemData
}
*pResult = 0; // 这个值设置是否按默认处理
}
注意:上述只是思路,部分关键字可能打错了,灵活纠正。
NM_DBLCLK
为Tree添加这个消息
void XXX::OnNMDblclkTree(NMHDR *pNMHDR, LRESULT *pResult)
{
UNREFERENCED_PARAMETER(pNMHDR);
CPoint point
GetCursorPos(&point);
m_treeCtrl.ScreenToClient(&point); // 如果是Tree自身的类,就直接ScreenToclient
UINT uFlags = 0;
HTREEITEM hItem = m_treeCtrl.HitTest(point, &uFlags)
if(hItem)
{
// 这里实现
for (int i=0;i<pMainFrm->m_wndFileView.m_hiImageNum;i++)
{
if(hTreeItem==pMainFrm->m_wndFileView.m_hiImageName[i])
{
我看你是重新遍历去找,不过我建议你在添加树项的时候,就把对应关系记录在ItemData里面
这里就可以直接GetItemData
}
*pResult = 0; // 这个值设置是否按默认处理
}
注意:上述只是思路,部分关键字可能打错了,灵活纠正。
更多追问追答
追问
能响应之后,依旧不能把影像显示出来,需要建立一个新视图显示出来,现在在做,不知能提供一下代码吗?
追答
那个我也不好帮你了,要看你说的影像是什么东西,你的数据如何的,连你程序的界面长相我都没见过,你再自己摸索摸索吧。
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询