所有CM_消息的说明】的更多相关文章

之所以要用类函数代替API,是因为VCL对它做了一些包装,好在API起作用之前和之后做一些额外的事情:通知和判断等等.之所以类函数要包装一个CM_消息,是因为这样方便程序员(在调用类函数的基础上)截断和改写这个处理过程 举例: procedure TWinControl.Invalidate; begin // 注意,是简单执行函数,把消息当作参数,不是发送消息 Perform(CM_INVALIDATE, , ); // 注意,第二个参数即WParam是0,即要求API使自己失效,而不是仅仅做…
这些CM消息,居然在Delphi的帮助里是没有任何说明的,真是昏倒.意外在高手的书里找到了所有说明,说明如下: Message Constant Value Description cm_Base $B000 Base constant used by all other component messages.cm_Activate cm_Base + 0; Specific to forms. Sent when form is first displayed and whenever foc…
注意,这些函数只有Private一种形式(也就是不允许覆盖,但仍在动态表格中): 其中TWinControl对TControl有10个消息进行了覆盖(红色标记),其中有2个是WM_消息,8个是CM_消息. TWinControl = class(TControl) private // 41个windows消息,几乎全部消息都是私有函数(因为不需要别人来调用).很多都是覆盖消息,也有少部分是首次出现. // 总结规律:直接接受消息的函数都起一个中转站的作用,其函数内容都十分简单. // WM_P…
内部控制是指,做了某些操作后产生某些效果,但是Windows系统本身不提供这样的消息,应此不得不自定义.比如父窗口改变了字体,那么所有子窗口也都应该改变字体,至少也得通知一下它们,让子控件自己决定是否响应以及怎么响应(替代了虚函数的作用,但是消息更加干净利落,愿不愿意以及怎么做完全由对方决定),但是Windows不提供这样的消息,于是自定义消息CM_PARENTFONTCHANGED闪亮登场.VCL当然也可以定义一个函数,然后直接去执行这个函数达到目的,但是参数的个数以及类型就成了问题,处理函数…
来自万一的帖子:http://www.cnblogs.com/del/archive/2008/04/27/1173658.html的确做到了一行代码设置TForm控件的颜色(一点感想:Delphi程序员真幸福).但真实的情况是,VCL框架在这个过程中做了大量的工作,经过多次消息的发送和响应,才达到了目的,大致顺序如下: procedure TForm1.Button1Click(Sender: TObject); begin Self.Color := clRed; end; procedur…
注意,这些函数只有Private一种形式(也就是不允许覆盖,但仍在动态表格中)(特别注意,这里居然没有WM_PAINT函数): TControl = class(TComponent) private // 15个私有消息处理,大多是鼠标消息.注意,消息函数大多只是一个中介,且TWinControl并不重写. procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; procedure…
一.Windows 消息大全 这张表拷贝自万一兄的帖子:http://www.cnblogs.com/del/archive/2008/02/25/1079970.html 但是我希望自己能把这些消息的注释都写上.特别简单的消息就不写了(否则反而无法一目了然),只写对我自己觉得值得注意的消息.我也没有整块的时间,有时间就每天写几个注释,就当是自己学习了.说到底,常用的Windows消息就这么多,共233个,全部了解清楚的话对编程是很有帮助的.Win32标准控件的消息更是有限的. 二.Delphi…
Delphi是Borland公司的一种面向对象的可视化软件开发工具. Delphi集中了Visual C++和Visual Basic两者的优点:容易上手.功能强大,特别是在界面设计.数据库编程.网络编程方面更有其独特的优势. Delphi中的消息 消息是Windows发出的一个通知,它告诉应用程序某个事件发生了.在Delphi中,大多数情况下Windows的消息被封装在VCL的事件中,我们只需处理相应的VCL事件就可以了,但如果我们需要编写自己的控件.截获或过滤消息就必须深入研究Win32的消…
许多的面向对象程序设计语言都支持对消息的处理.消息处理是一种动态响应客户类发出的请求,它与过程调用不同.过程调用中,客户类必须知道服务类提供了哪些过程,以及每个过程的调用约定,并且在调用时需要明确指出要调用服务类中的哪个过程,相当于静态地将客户类与服务类进行了某种调用关系的绑定,这将导致客户类与服务类的耦合度增加.消息处理则是动态的,当客户类需要某程服务时,会向服务类发送一个消息,当服务类收到此消息后,会检查自己是否有响应此消息的处理过程,如果有则调用该过程.我们可以举个例子来说明这两种处理方式…
一.delphi发送消息的函数主要有以下三个: (一).SendMessage函数,其原型如下: function SendMessage( hWnd: HWND; {目标句柄} Msg: UINT; {要发送的消息(编号)} wParam: WPARAM; {消息参数} lParam: LPARAM {消息参数} ): LRESULT; stdcall; {返回处理结果} (二).PostMessage函数 function PostMessage( hWnd: HWND; {目标句柄} Ms…