CEdit控件非客户区鼠标事件

    今天才知道原来控件和窗口有很多的不同,虽然他们有一个共同的爹(CWnd),但是龙生九子,子子不同.今天需要在CEdit的非客户区创建一个按钮,根据鼠标在非客户区的不同行为显示不同的图片,但是OnNcMousemove和OnNcLButtonDown等等非客户区的鼠标事件统统都得不到,在网上搜索也搜不到任何资料或者是有用的东西,发现OnNcHitTest才是罪魁祸首,OnNcLButtonDown是根据OnNcHitTest返回值来判断的,如果返回的是HTBORDER并且鼠标当前是按下的状态,哪么你才能得到OnNcLButtonDown事件的通知,OnNcMouseMove也是一样.

转载于:https://www.cnblogs.com/tfzxyinhao/archive/2011/01/11/1933264.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是使用C++在VS中添加件和处理事件的步骤: 1. 打开你的窗体应用程序项目,打开对话框类的头文件(通常是YourDialogClass.h)。 2. 在类的声明中添加件变量的成员变量,例如: ```c++ class CYourDialogClass : public CDialogEx { //... private: CButton m_button; CEdit m_edit; }; ``` 这里的`CButton`和`CEdit`分别代表按钮件和编辑框件,你可以根据你需要添加的件类型来声明成员变量。 3. 在OnInitDialog()函数中,使用`Create()`函数来创建件,例如: ```c++ BOOL CYourDialogClass::OnInitDialog() { CDialogEx::OnInitDialog(); m_button.Create(_T("Click Me"), WS_VISIBLE | WS_CHILD, CRect(10, 10, 100, 30), this, 1); m_edit.Create(WS_VISIBLE | WS_CHILD | ES_AUTOHSCROLL, CRect(10, 50, 200, 70), this, 2); return TRUE; } ``` 这里的`Create()`函数用于创建件,第一个参数是件的标题或文本,第二个参数是件的风格,第三个参数是件的位置和大小,第四个参数是父窗口句柄,第五个参数是件的ID。 4. 在件的事件处理函数中添加事件处理代码,例如: ```c++ void CYourDialogClass::OnBnClickedButton() { // 处理按钮点击事件 } void CYourDialogClass::OnEnChangeEdit() { // 处理编辑框内容改变事件 } ``` 这里的`OnBnClickedButton()`和`OnEnChangeEdit()`分别代表按钮点击事件和编辑框内容改变事件,你可以根据你需要处理的事件类型来添加对应的事件处理函数。 5. 在类的声明中添加事件处理函数的声明,例如: ```c++ class CYourDialogClass : public CDialogEx { //... private: CButton m_button; CEdit m_edit; public: afx_msg void OnBnClickedButton(); afx_msg void OnEnChangeEdit(); }; ``` 6. 在类的实现中添加事件处理函数的实现,例如: ```c++ BEGIN_MESSAGE_MAP(CYourDialogClass, CDialogEx) ON_BN_CLICKED(1, &CYourDialogClass::OnBnClickedButton) ON_EN_CHANGE(2, &CYourDialogClass::OnEnChangeEdit) END_MESSAGE_MAP() ``` 这里使用`BEGIN_MESSAGE_MAP()`和`END_MESSAGE_MAP()`来声明消息映射表,`ON_BN_CLICKED()`和`ON_EN_CHANGE()`分别代表按钮点击事件和编辑框内容改变事件,第一个参数是件的ID,第二个参数是事件处理函数的指针。 这些步骤可以帮助你在窗体中添加件和处理事件。希望可以帮到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值