edit左键响应

fswking 2009-09-24 11:17:59
vc的editbox如何响应鼠标左键的单击事件?
目标,鼠标单击editbox控件弹出一个窗口,哪位知晓,谢谢!!
...全文
160 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
jax_lee 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 fswking 的回复:]
虽然自己已经解决了,不过也得到各位的帮助,确实发现,还是重载一个CEdit类比较好!不过自己用的这个方法比较简单快捷。都没有用过重载,呵呵,vc都不入门的水平,这个方面还是要看书!!好了结贴,谢谢大家
[/Quote]
如何实现啊。。求指点
jax_lee 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ziplj 的回复:]
一般来说 这种需求都是用派生类来做的 简洁 高效 代码好看的多 非要在那死拼硬凑 终究不是最终的解决方案
[/Quote]如何实现啊。。求指点
jax_lee 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 maple_zhj 的回复:]
重载一个Cedit类,

这样比较好,

不要一直在主界面的代码中,添加过多的代码.
[/Quote]

改如何实现啊。。求指点
maple_zhj 2009-11-24
  • 打赏
  • 举报
回复
重载一个Cedit类,

这样比较好,

不要一直在主界面的代码中,添加过多的代码.
caonimarangwozhuce 2009-11-24
  • 打赏
  • 举报
回复
晕 老衲来晚了
fswking 2009-11-24
  • 打赏
  • 举报
回复
虽然自己已经解决了,不过也得到各位的帮助,确实发现,还是重载一个CEdit类比较好!不过自己用的这个方法比较简单快捷。都没有用过重载,呵呵,vc都不入门的水平,这个方面还是要看书!!好了结贴,谢谢大家
Huqing008 2009-11-23
  • 打赏
  • 举报
回复
void CAboutDlg::OnSetfocusEdit2()
{
// TODO: Add your control notification handler code here
AfxMessageBox("hello");
}
Huqing008 2009-11-23
  • 打赏
  • 举报
回复
如果EDITBOX是可以编辑的话,可以添加消息 EN_SETFOCUS
江川 2009-11-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ziplj 的回复:]
一般来说 这种需求都是用派生类来做的  简洁 高效  代码好看的多  非要在那死拼硬凑  终究不是最终的解决方案
[/Quote]

支持这种做法,这种方便管理。
ziplj 2009-11-23
  • 打赏
  • 举报
回复
一般来说 这种需求都是用派生类来做的 简洁 高效 代码好看的多 非要在那死拼硬凑 终究不是最终的解决方案
lonelyhacker 2009-11-23
  • 打赏
  • 举报
回复

BOOL CMy11Dlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class

if(pMsg->message==WM_LBUTTONDOWN)
{
CRect rect;
GetDlgItem(IDC_EDIT1)->GetWindowRect(&rect);
if(rect.PtInRect(pMsg->pt))
{
MessageBox("aa"); //当位置在控件上的时候弹出消息
}

}

return CDialog::PreTranslateMessage(pMsg);
}


fswking 2009-11-23
  • 打赏
  • 举报
回复
这个我已经解决了,让CEdit响应自己的问题!
重载PreTranslateMessage()
BOOL CTestView::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_LBUTTONDOWN)
if(pMsg->hwnd==::GetDlgItem(m_hWnd,IDC_EDIT))
{
MessageBox("OK");
return TRUE;
}
return CListView::PreTranslateMessage(pMsg);
}
shubainianlb 2009-09-25
  • 打赏
  • 举报
回复
等待牛人
「已注销」 2009-09-25
  • 打赏
  • 举报
回复
应该可以的吧
yuanmoren 2009-09-25
  • 打赏
  • 举报
回复
point是不是也要入ScreenToClient
fswking 2009-09-25
  • 打赏
  • 举报
回复
6楼讲的好简略?难道是类的重载?有这个必要吗?
maple_zhj 2009-09-25
  • 打赏
  • 举报
回复
自己写一个类,
或者从主窗口的pretranslate中判断。
THCNC 2009-09-25
  • 打赏
  • 举报
回复
CDialog应该不会收到在editbox里的按键消息。

自CEdit派生一个自己的类,在该类中响应鼠标按键消息
fswking 2009-09-24
  • 打赏
  • 举报
回复
二楼的方法,我发帖前已经尝试过这样的方法,代码如下:
CDialog::OnLButtonDown(nFlags, point);

CWnd * pWnd = GetDlgItem(IDC_edit1);

CRect rect;
pWnd->GetWindowRect(&rect);

this->ScreenToClient(&rect);

if(rect.PtInRect(point))
{
AfxMessageBox("In");
}
但是没有效果,不知道是不是我的方法还有不对的滴地方!请指教
或者能否改成响应SETFOCUS,但是那样会在销毁弹出窗口后,再次出发SETFOCUS陷入循环了,如何将其焦点换到CSTATIC应该也是可以达到目的,
wutaihua 2009-09-24
  • 打赏
  • 举报
回复
CEdit控件是继承自CWnd。所以CWnd的所有事件,CEdit都有。
鼠标单击分为2种。你可以捕获鼠标左键按下,也可以捕获鼠标左键释放,这两个事件


CWnd::OnLButtonDown

afx_msg void OnLButtonDown( UINT nFlags, CPoint point );

参数: nFlags 指定了不同的虚拟键是否被按下。这个参数可以是下列值之一:
· MK_CONTROL 如果CTRL键被按下,则设置此位。
· MK_LBUTTON 如果鼠标左键被按下,则设置此位。
· MK_MBUTTON 如果鼠标中键被按下,则设置此位。
· MK_RBUTTON 如果鼠标右键被按下,则设置此位。
· MK_SHIFT 如果SHIFT键被按下,则设置此位。


point 指定了光标的x和y轴坐标。这些坐标通常是相对于窗口的左上角的。


说明:当用户按下鼠标左键时,框架调用这个成员函数。
注意 框架调用这个成员函数以允许你的应用程序处理一个Windows消息。传递给你的成员函数的参数反映了接收到消息时框架接收到的参数。如果你调用了这个函数的基类实现,则该实现将使用最初传递给消息的参数(而不是你提供给这个函数的参数)。

CWnd::OnLButtonUp

afx_msg void OnLButtonUp( UINT nFlags, CPoint point );

nFlags 指定了不同的虚拟键是否被按下。这个参数可以是下列值之一:
· MK_CONTROL 如果CTRL键被按下,则设置此位。
· MK_LBUTTON 如果鼠标左键被按下,则设置此位。
· MK_MBUTTON 如果鼠标中键被按下,则设置此位。
· MK_RBUTTON 如果鼠标右键被按下,则设置此位。
· MK_SHIFT 如果SHIFT键被按下,则设置此位。


point 指定了光标的x和y轴坐标。这些坐标通常是相对于窗口的左上角的。


说明:
当用户放开鼠标左键时,框架调用这个成员函数。
注意 框架调用这个成员函数以允许你的应用程序处理一个Windows消息。传递给你的成员函数的参数反映了接收到消息时框架接收到的参数。如果你调用了这个函数的基类实现,则该实现将使用最初传递给消息的参数(而不是你提供给这个函数的参数)。


弹出窗口,就看你想怎么操作了。反正触发事件已经找到了

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧