mfc中如何通过点击图片控件上的某个点获取鼠标位置来判断属于哪个区域然后让图片控件显示另一张图片,
mfc中如何通过点击图片控件上的某个点获取鼠标位置来判断属于哪个区域然后让图片控件显示另一张图片,求代码加解释...
mfc中如何通过点击图片控件上的某个点获取鼠标位置来判断属于哪个区域然后让图片控件显示另一张图片,求代码加解释
展开
1个回答
展开全部
图片控件不会默认捕获鼠标消息,因此处理代码放在对话框的OnLButtonDown这样的鼠标消息中即可。
鼠标消息函数会默认带入鼠标位置,而图片框的位置可以通过图片控件变量或指针的GetWindowRect获取。
之后通过rect.PtInRect(point)函数即可判断鼠标是否在图片上,至于图片上的具体位置,就需要你通过CRect或者CRgn来一一记录了(这并不太容易),之后依然是通过PtInRect和CRgn的PtInRegion来判断是否在区域(这需要一个循环语句)。
至于显示另一个图片,通过CBitmap导入资源后,就是图片控件的SetBitmap就可以了。
鼠标消息函数会默认带入鼠标位置,而图片框的位置可以通过图片控件变量或指针的GetWindowRect获取。
之后通过rect.PtInRect(point)函数即可判断鼠标是否在图片上,至于图片上的具体位置,就需要你通过CRect或者CRgn来一一记录了(这并不太容易),之后依然是通过PtInRect和CRgn的PtInRegion来判断是否在区域(这需要一个循环语句)。
至于显示另一个图片,通过CBitmap导入资源后,就是图片控件的SetBitmap就可以了。
更多追问追答
追问
就是在运行的时候。如何实现改变图片控件的图片呢
追答
CStatic *pic = (CStatic *)GetDlgItem(IDC_STATICP);
HBITMAP oldb = pic->SetBitmap(hHandle);
DeleteObject(oldb);
通过这样的代码就可以了,你需要的是获取一个新的HBITMAP句柄,这个可以通过CBitmap类实现。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询