猎豹MFC--拦截消息SetWindowsLong CallWindowsProc控件不能满足我们的需求时 增加修改这些功能

Posted hungryvampire

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猎豹MFC--拦截消息SetWindowsLong CallWindowsProc控件不能满足我们的需求时 增加修改这些功能相关的知识,希望对你有一定的参考价值。

修改现有控件的功能->子类化技术
只能输入字符 而不能输入别的类型----------------拦截消息
两个函数SetwindowsLong()
CallWindowsProc()
  下面的  小控件都是 一个小窗口
技术分享
是窗口就有自己的窗口过程,可以给其一个新的额窗口过程把原来的窗口过程替换掉,用新窗口过程处理他的消息 ,即把原来的消息拦截下来,用新的窗口过程来处理

修改ID后添加C++的类:
技术分享
技术分享

在新类中声明函数
技术分享

在主文件中包含新类的头文件 和声明全局变量:
技术分享
在初始化对话框中 把新窗口(即文本框)句柄和类关联起来:
技术分享
定义新的变量和声明窗口过程:格式为windows要求
技术分享
技术分享
实现新Attach函数:
技术分享
定义新窗口过程属性 常量:
技术分享

技术分享
新的窗口过程转去调用旧的窗口过程:
技术分享
下面是拦截消息:
技术分享
技术分享
增加  删除消息:
技术分享
增加新声明的一个函数:
技术分享实现该函数:
技术分享
小数点处理:
技术分享
负号处理:
技术分享

增加健壮性 如果没有转去调用默认的窗口过程“:
技术分享
只能输入数组 负号 小数点  其他的均不能输入:
双击 读取按钮:
技术分享
增加一个成员函数:
技术分享
实现该函数:
技术分享
因为出错了  所以  修改函数为如下:
技术分享
在 按钮双击后的处理函数中  如下”:
技术分享
增加取消函数声明:
技术分享
把文本框的窗口过程 换成旧的窗口过程
技术分享
在析构中调用:
技术分享
法二  在对话框销毁时调用:“
技术分享

技术分享










































以上是关于猎豹MFC--拦截消息SetWindowsLong CallWindowsProc控件不能满足我们的需求时 增加修改这些功能的主要内容,如果未能解决你的问题,请参考以下文章

猎豹MFC--消息映射

猎豹MFC--发送消息SendMessage PostMessage

猎豹MFC--滑块CSliderCtrl

猎豹MFC--拖动无边框窗体

猎豹MFC1 第一个窗口CWinApp CFrameWnd InitInstance 消息映射CPaint CRect Create

猎豹MFC3