c++builder 重载WindowProc、WndProc 截获消息
c++builder 重载WindowProc、WndProc 截获消息
方法一WindowProc
void __fastcall myWindowProc(Messages::TMessage &msg); //增加
Classes::TWndMethod OldWindowProc; //增加
void __fastcall TForm1::myWindowProc(Messages::TMessage &msg)
{
if (msg.Msg == WM_MOUSEWHEEL)
{
//::MessageBox(NULL,"OK","Message",0); //测试
Caption = Now();
}
else
OldWindowProc(Message);
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
OldWindowProc=Edit1->WindowProc;
Edit1->WindowProc=myWindowProc;
}
方法二 MESSAGE_MAP
class TForm1 : public TForm
{
__published: // IDE-managed Components
TEdit *Edit1;
private: // User declarations
void __fastcall OnEditMouseWell(TMessage &msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_MOUSEWHEEL, TMessage, OnEditMouseWell)
END_MESSAGE_MAP(TForm) //TForm 换成TEdit
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
void __fastcall TForm1::OnEditMouseWell(TMessage &msg)
{
if(String(ActiveControl->ClassName())=="TEdit") //所有的Edit
Caption = Now(); //测试
//TForm::Dispatch(&Msg);
}
方法三 重载 WndProc
private: // User declarations
void __fastcall WndProc(Messages::TMessage &msg);
void __fastcall TForm1::WndProc(Messages::TMessage &msg)
{
if (msgMsg == WM_MOUSEWHEEL && msg.WParam )
{
Caption = Now();
}
TForm::WndProc(msg);
}
四、ApplicationEvents控件
窗体上放置ApplicationEvents1控件,在ApplicationEvents1Message事件里判断。
void __fastcall TForm3::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
{
if (Msg.hwnd == this->DBGrid1->Handle && Msg.message == WM_MOUSEWHEEL)
this->Caption = Now();
}
WM_LBUTTONDOWN
c++builder 重载WindowProc、WndProc 截获消息的更多相关文章
- c++builder 重载WindowProc、WndProc 截获消息(比Delphi多一个Message Map方法)
c++builder 重载WindowProc.WndProc 截获消息 方法一WindowProc void __fastcall myWindowProc(Messages::TMessage ...
- c++builder Form重载WindowProc、WndProc 截获消息
c++builder 重载WindowProc.WndProc 截获消息 方法一WindowProc void __fastcall myWindowProc(Messages::TMessage ...
- WndProc Message消息解释
public class WindowsMessage { public const int WM_NULL = 0x0000; // public const int WM_CREATE = 0x0 ...
- WndProc Msg 消息列表
WM_NULL = 0x0000; WM_CREATE = 0x0001;应用程序创建一个窗口 WM_DESTROY = 0x0002;一个窗口被销毁 WM_MOVE = 0x0003;移动一个窗口 ...
- c# WndProc事件 消息类型
转载:https://www.cnblogs.com/idben/p/3783997.html WM_NULL = 0x0000; WM_CREATE = 0x0001;应用程序创建一个窗口 WM_D ...
- Delphi中的消息截获(六种方法:Hook,SubClass,Override WndProc,Message Handler,RTTI,Form1.WindowProc:=@myfun)good
Windows是一个基于消息驱动的系统,因此,在很多时候,我们需要截获一些消息然后自己进行处理.而VCL系统又有一些特定的消息.下面对我所了解的delphi环境中截获消息进行一些总结. 就个 ...
- 结合windows消息系统理解C#中WndProc函数和DefWndProc函数
Windows消息系统由3部分组成: 1.消息队列.Windows应用程序的消息是由Windows统一在一个消息队列中管理的. 2.消息循环.应用程序从Windows消息队列中获得自己 ...
- MFC消息详解 (WindowProc|OnCommand|OnNotify)
1. 怎样使用MFC发送一个消息用MFC发送一个消息的方法是, 首先,应获取接收消息的CWnd类对象的指针: 然后,调用CWnd的成员函数SendMessage( ). LRESULT Res=pWn ...
- 【转】C# 重写WndProc 拦截 发送 系统消息 + windows消息常量值(1)
C# 重写WndProc 拦截 发送 系统消息 + windows消息常量值(1) #region 截获消息 /// 截获消息 处理XP不能关机问题 protected ...
随机推荐
- 图解phpstorm常用快捷键
CTRL+N 查找类 CTRL+SHIFT+N 全局搜索文件 ,优先文件名匹配的文件 CIRL+B 找变量的来源,跳到变量申明处 (CTRL+ 鼠标单击 也可以) CTRL+G 定位行,跳转行 CTR ...
- js各种间距数据汇总
clientX,offsetX,screenX,pageX区别 先总结下区别: event.clientX.event.clientY 鼠标相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不 ...
- android利用数字证书对程序签名
签名的必要性 1. 防止你已安装的应用被恶意的第三方覆盖或替换掉. 2. 开发者的身份标识,签名可以防止抵赖等事件的发生. 开发Android的人这么多,完全有可能大家都把类名,包名起成了一个同 ...
- 如何使用SQL Server链接服务器访问DB2 Server
首先,需要安装Microsoft OLE DB Provider for DB2 下载地址:http://download.microsoft.com/download/B/B/2/BB22098A- ...
- linux下编译软件通用方法(memcached为例)
1)到软件的官网或其他网站下载软件的源码包 2)解压源码包,并切换到源码目录中 3)使用./configure --help查询配置帮助,里面可能会有安装指南(Installation directo ...
- BZOJ 1106 立方体大作战
BIT. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm&g ...
- 【Android】跟着教程做の学习笔记
教程 + <第一行代码 - Android> //尽量在十二月底学完吧(同步学习java基础)
- [转]就这样,创建了自己的运行时共享库(RSL)
原文地址:http://riaoo.com/?p=1405 博客园的下载地址(版权归原作者) http://files.cnblogs.com/tianlanliao/CustomRSL.zip 创建 ...
- 判断https
判断https <script> if(window.location.protocol=='https:'){ window.location.href='http://e.abchin ...
- Xtrabackup流备份与恢复
Xtrabackup是MySQL数据库的备份不可多得的工具之一.提供了全备,增备,数据库级别,表级别备份等等.最牛X的还有不落盘的备份,即流备份方式.对于服务器上空间不足,或是搭建主从,直接使用流式备 ...