vc++中遇到的具体问题 picture控件上关于获得点击坐标 SDI中我再非模态对话框上覆盖了一个picture控件,用来显示图像。我想通过点击左键获得到图像的灰度值。但有一个问题是只有对话框类或是视图类等里可以响应LBOTTONDOW,picture上又不能。虽然其上有bn_clicked但其又无法获得点的坐标。问题的症结就在这,恳请各位大侠不吝赐教,感激不尽。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 直接在对话框上获得LBUTTONDOWN,GetCurPos获得鼠标位置等,然后再来跟picture位置判断 可是因为picture在对话框之上,程序根本都不对对话框上的LBOTTONDOWN响应呀 控件加上SS_NOTIFY风格,可以从CStatic派生类来响应WM_LBUTTONDOWN消息,也可以重载对话框的PreTranslateMessage函数来响应。 我看了你之前给别人的回帖,关于picture控件方面的。我也照这样做了,加了notify或是重载ModifyStyle(0,SS_NOTIFY)可依然没有响应。且我在CPictureEx中也没找到IDC_STATIC1(pictureID)还望详细指教!不胜感激 首先要设置SS_NOTIFY风格,然后在CPictureEx中响应WM_LBUTTONDOWN消息。 其实你可以把图片直接画在对话框上面阿,那多直接,反正也能指定所画的区域,对话框是可以相应LBUTTONDOWN消息的阿 我是设置了SS_NOTIFY,用bn_clicked静态PICTURE可以响应,但令人沮丧的是LBOTTONDOWN依然响应不了。会不会是picture控件没有和CPictureEX类关联起来,但又不太像啊。等待指点 BOOL CYourDlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class if(pMsg->message == WM_LBUTTONDOWN&&GetDlgItem(IDC_PICTURE)->GetSafeHwnd() == pMsg->hwnd) { MessageBox(str); } return CDialog::PreTranslateMessage(pMsg);} 重载对话框的PreTranslateMessage函数,绝对好用 11楼的你说的太对了,我先在CPictureEx重载PreTranslate好像不行。还有一点问题,那么点的坐标如何获得? 10楼谢谢你!先选中noticfy添加一个CPictureEx类相关如下void CPictureEx::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default MessageBox("s"); CStatic::OnLButtonDown(nFlags, point);}断点根本都运行不到这我不知有否遗漏了什么 晕,谁让你在CPictureEx中重载了,我一开始说的就是重载对话框的PreTranslateMessage函数。lParam参数的低16位是横坐标,高16位是纵坐标,都是相对于控件的客户区的。 晕,谁让你在CPictureEx中重载了,我一开始说的就是重载对话框的PreTranslateMessage函数。lParam参数的低16位是横坐标,高16位是纵坐标,都是相对于控件的客户区的。 嗯,你说的很对。但不知你说的添加从CStatic类派生出来的CPictureEx这种方法如何能行,我试了很多次,程序好像根本没有执行到这 如何使用CPPTooltip在提示中添加图片呢? 发送AT指令到modem失败(不够的加分) 急用!!!对话框放大时,combo box的下拉框不见了,应该怎么处理? 菜鸟请教:如何得到两个日期之间的周末的天数? 初学c 语言,问两个基础问题 回调函数的作用域问题? 急!!!传真字体问题,汉字是乱码 ip数据包数据会多和少吗? 我怎样在这3个接口之间互相查询到对方?多谢!多谢! 求救!!!错在哪里? 在ActiveX项目中的重载WindowPro函数里面居然截取不到自定义的消息 如何将一个24位的bmp图片转换成为8位灰度图
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_LBUTTONDOWN&&GetDlgItem(IDC_PICTURE)->GetSafeHwnd() == pMsg->hwnd)
{
MessageBox(str);
}
return CDialog::PreTranslateMessage(pMsg);
}
先选中noticfy
添加一个CPictureEx类相关如下
void CPictureEx::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
MessageBox("s");
CStatic::OnLButtonDown(nFlags, point);
}
断点根本都运行不到这
我不知有否遗漏了什么
lParam参数的低16位是横坐标,高16位是纵坐标,都是相对于控件的客户区的。
lParam参数的低16位是横坐标,高16位是纵坐标,都是相对于控件的客户区的。