picture control 加载了bit地图后 就响应不了WM_LBUTTONDOWN消息了
picture control 加载了bitmap后 就响应不了WM_LBUTTONDOWN消息了
picture control 加载了bitmap后 就响应不了WM_LBUTTONDOWN消息了 我点picture control之外的对话框是可以响应WM_LBUTTONDOWN消息的 但是位图上点就响应不了 有什么方法可以解决得吗 谢过
------解决方案--------------------
我的例程中认啊
//获得鼠标点击处的颜色,然后用这个颜色填充一个矩形
void CPtClrDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
//获得设备场景
CDC* pDC = GetDC();
//获得指定点的颜色
COLORREF clr = pDC->GetPixel(point);
//创建画刷
CBrush brush;
brush.CreateSolidBrush(clr);
//用刚才获得的颜色填充矩形区域
CRect rc(170,50,270,150);
pDC->FillRect(&rc,&brush);
//释放设备场景
ReleaseDC(pDC);
CDialog::OnLButtonDown(nFlags, point);
}
------解决方案--------------------
恩,不响应了。原因就是你Picture Control挡住了Dialog,消息转发到Picture Control中取,而不是转到你对话框中去了。
用PretranslateMessage捕获消息吧。
picture control 加载了bitmap后 就响应不了WM_LBUTTONDOWN消息了 我点picture control之外的对话框是可以响应WM_LBUTTONDOWN消息的 但是位图上点就响应不了 有什么方法可以解决得吗 谢过
------解决方案--------------------
我的例程中认啊
//获得鼠标点击处的颜色,然后用这个颜色填充一个矩形
void CPtClrDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
//获得设备场景
CDC* pDC = GetDC();
//获得指定点的颜色
COLORREF clr = pDC->GetPixel(point);
//创建画刷
CBrush brush;
brush.CreateSolidBrush(clr);
//用刚才获得的颜色填充矩形区域
CRect rc(170,50,270,150);
pDC->FillRect(&rc,&brush);
//释放设备场景
ReleaseDC(pDC);
CDialog::OnLButtonDown(nFlags, point);
}
------解决方案--------------------
恩,不响应了。原因就是你Picture Control挡住了Dialog,消息转发到Picture Control中取,而不是转到你对话框中去了。
用PretranslateMessage捕获消息吧。
- C/C++ code
BOOL CXXXX::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_LBUTTONDOWN) { //捕获到信息了,做你想做的事情 } return CView::PreTranslateMessage(pMsg); //CView:: 这个根据你的要求来,对话跨就CDialog:: }
------解决方案--------------------
“picture control 加载了bitmap后”鼠标就不能穿透到对话框了。
------解决方案--------------------
MSG这个结构体本就包含一个POINT的成员。你可以查看百度百科。