如何让编辑框响应鼠标单击

鼠标单击会产生WM_LBUTTONDOWN消息,此消息属于标准窗口消息。标准窗口消息的路由是从子类向父类传递,因此我们可以利用标准消息的路由来实现。

默认情况下编辑框是不响应鼠标单击的,因为当你单击编辑框时产生的WM_LBUTTONDOWN消息都流向了编辑框的基类CEdit。

所以我们要想编辑框响应鼠标单击,就得为编辑框派生一个新类。这样当我们单击编辑框时,WM_LBUTTONDOWN消息就会流向我们派生的新类,在这个新类中我们就有机会处理该消息。

比如:

首先建一个基于对话框的应用程序,工程名为Test,建成以后通过类向导给当前工程添加一个新类取名为NewEdit,这样在我们的工程Test中就有了一个新类CNewEdit

然后通过类向导,为编辑框关联一个CNewEdit类型的控件变量

CNewEdit   m_newEdit;

再给我们的新类CNewEdit添加一个WM_LBUTTONDOWN消息处理函数,

在这个消息处理函数中我们就可以处理编辑框的鼠标单击消息了!!

其实上面的方法是通用的,我们要让编辑框响应鼠标双击,右击,让按钮

响应鼠标移动等等,我们都可以利用上面的方法来实现,实现的关键在于你

能否理解标准消息的传递路由。

 

让编辑框响应鼠标单击新方法:

假设有一个EditBox关联的CEdti变量为m_test

建一个基于对话框的程序,然后重载PreTranslateMessage函数

添加如下代码:

BOOL CTestDialogDlg::PreTranslateMessage(MSG* pMsg)
{
    // TODO: Add your specialized code here and/or call the base class
    if( pMsg->message == WM_LBUTTONDOWN &&  //鼠标单击消息
        pMsg->hwnd == m_test.m_hWnd )    //产生单击消息的窗口为编辑框
    {
        TRACE( "Clicked/r/n" );
    }
    return CDialog::PreTranslateMessage(pMsg);
}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值