可以在PreTranslateMessage里面截获鼠标消息,再判断控件是不是焦点控件
解决方案 »
- 为什么有些主cpp文件中没有main之类的主程序?
- 当一个窗口在另外一个我写的窗口上移动时,我写的窗口变花, 怎么解决
- BitBlt与StretchBlt的区别
- CPropertySheet的OnApply()函数的调用
- 请问这个是什么工具阿?在什么地方有下载?
- OnFileNew OnFileOpen 函数怎么控制的,有的在CTest1App类中,有的在视图类中
- 多线程程序怎样调试.大家说说
- 高分求找做安装界面的图片。
- 怎样屏蔽键盘和鼠标响应?在线等候中~~~~~~~~~~~!
- 数据集指针定义问题sdk
- windows API写的tooltip,怎么在键盘按下时显示tip,现在是鼠标移动才显示!
- 将一串字符的内容以字符指针的形式复制到另一字符数组中去
PtInRect(
POINT point
) 是判断点是否在矩形中。
CRect rect;
m_ctMsChart.GetClientRect(&rect);//假如:m_ctMsChart是Mschart的名称。
这个是得到rect的范围的。
rect.PtInRect(point)判断是否为真,如果为真,弹出。
void CdblView::OnRButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CPoint pt;
GetCursorPos(&pt);//获取光标点击的位置
//pt=MAKEPOINTS();
ScreenToClient(&pt); CRect Arect,Prect,Vrect;
m_chartA.GetClientRect(&Arect);//获取MSCHART1(m_chartA/p/v是关联的控件类型成员变量)控件的矩形区域
m_chartP.GetClientRect(&Prect);
m_chartV.GetClientRect(&Vrect);
if(Arect.PtInRect(pt)|Prect.PtInRect(pt)|Vrect.PtInRect(pt))
{
CMenu menu;//创建加载一个菜单资源
menu.LoadMenu(IDR_MENU1);
CMenu *pPopup=menu.GetSubMenu(0);
//ClintToScreen(&pt);
pPopup->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,GetParent()); //弹出右键菜单
CFormView::OnRButtonDown(nFlags, point);
}
}
如果是,则使用一个就可以
2)void CdblView::OnRButtonDown(UINT nFlags, CPoint point)
这个point,就是鼠标点击的位置。
改成if (Arect.PtInRect(point)||Prect.PtInRect(point)||Vrect.PtInRect(point))
-------废代码---------
CPoint pt;
GetCursorPos(&pt);//获取光标点击的位置
//pt=MAKEPOINTS();
ScreenToClient(&pt);
不过感觉好像是整个对话框,而不是只能在这三个控件上弹出来的
我是想按着shanhqk说的来实现的.
把CPoint pt;
GetCursorPos(&pt);//获取光标点击的位置
//pt=MAKEPOINTS();
ScreenToClient(&pt);
注释后,只能在一个地方弹出来,不过不是那三个件,好像还是有点儿问题!
本身你就是在鼠标右键相应函数里处理的..
就不需要再做光标处理了..!-----
你看看定义的rect对不对?
所以你点鼠标的时候//不过感觉好像是整个对话框,而不是只能在这三个控件上弹出来的