猎豹MFC--拦截消息SetWindowsLong CallWindowsProc控件不能满足我们的需求时 增加修改这些功能
Posted hungryvampire
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猎豹MFC--拦截消息SetWindowsLong CallWindowsProc控件不能满足我们的需求时 增加修改这些功能相关的知识,希望对你有一定的参考价值。
修改现有控件的功能->子类化技术只能输入字符 而不能输入别的类型----------------拦截消息
两个函数SetwindowsLong()
CallWindowsProc()
下面的 小控件都是 一个小窗口
是窗口就有自己的窗口过程,可以给其一个新的额窗口过程把原来的窗口过程替换掉,用新窗口过程处理他的消息 ,即把原来的消息拦截下来,用新的窗口过程来处理
修改ID后添加C++的类:
在新类中声明函数
在主文件中包含新类的头文件 和声明全局变量:
在初始化对话框中 把新窗口(即文本框)句柄和类关联起来:
定义新的变量和声明窗口过程:格式为windows要求
实现新Attach函数:
定义新窗口过程属性 常量:
新的窗口过程转去调用旧的窗口过程:
下面是拦截消息:
增加 删除消息:
增加新声明的一个函数:
小数点处理:
负号处理:
增加健壮性 如果没有转去调用默认的窗口过程“:
只能输入数组 负号 小数点 其他的均不能输入:
双击 读取按钮:
增加一个成员函数:
实现该函数:
因为出错了 所以 修改函数为如下:
在 按钮双击后的处理函数中 如下”:
增加取消函数声明:
把文本框的窗口过程 换成旧的窗口过程
在析构中调用:
法二 在对话框销毁时调用:“
以上是关于猎豹MFC--拦截消息SetWindowsLong CallWindowsProc控件不能满足我们的需求时 增加修改这些功能的主要内容,如果未能解决你的问题,请参考以下文章
猎豹MFC--发送消息SendMessage PostMessage
猎豹MFC1 第一个窗口CWinApp CFrameWnd InitInstance 消息映射CPaint CRect Create