请教高手-类似xpmenu的自动功能是怎么实现的 顺便问一下他的Autodetected有什么用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有两个类TXPMenu和TControlSubClass: Application.HookMainWindow(MainWindowHook);//XPMenu通过设置Application对象的消息挂钩挂上自己的函数 MainWindowHook通过InitItems函数初始化所有没有子类化的Form. InitItems判断: 1.如果控件有自绘属性,则设置这些控件的自绘事件.OnDrawItem和OnMeasureItem 2.如果控件没有自绘属性,则借助TControlSubClass类,修改它的窗口过程,即子类化这个控件. with TControlSubClass.Create(self) do begin Control:=TControl(Comp); orgWindowProc:=Control.WindowProc; Control.WindowProc:=ControlSubClass; XPMenu:=self; end; 在ControlSubClass消息过程,拦截ON_PAINT等影响控件绘制的消息,通过调用自定义的函数PaintControlXP来绘制控件.这是我原来分析的主要结果,你看看把Autodetected应该是,是否自动扫描控件把! 谢谢楼上的,我最初只是想改写xp控件,使form和他的所有组件能够适应不同的分辨率而不走样,已纪写好了,比较简单,过程在setactive中和inititems一起调用的,效果还算理想。这才发现xp的代码实现比较难理解 ..另外谁还有有关这个控件的心得,说来听听,肯定结贴,有价值就有分,不够再开帖子:) 求image双缓冲画图的一段可行型代码demo? 怎么样向Excel表写数据 如何捕获后台信息!急! 兄弟们! 帮个忙。 我有一个线程,运行时有很高的CPU使用率,怎么办? 中国的软件路在何方 从Delphi IDE中直接访问最全的中文Delphi资料! 如何绕过BDE和odbc对parodox数据库操作,也就是找VCL Dbgrid在多选的状态下怎样判断有哪几行被选中? 求教最优化算法,应该是背包算法的实现 请问:如果数据比较多,一般用哪种数据库比较好?? 如何扑获在记录之间移动的事件
Application.HookMainWindow(MainWindowHook);//XPMenu通过设置Application对象的消息挂钩挂上自己的函数
MainWindowHook通过InitItems函数初始化所有没有子类化的Form.
InitItems判断:
1.如果控件有自绘属性,则设置这些控件的自绘事件.OnDrawItem和OnMeasureItem
2.如果控件没有自绘属性,则借助TControlSubClass类,修改它的窗口过程,即子类化这个控件.
with TControlSubClass.Create(self) do
begin
Control:=TControl(Comp);
orgWindowProc:=Control.WindowProc;
Control.WindowProc:=ControlSubClass;
XPMenu:=self;
end;
在ControlSubClass消息过程,拦截ON_PAINT等影响控件绘制的消息,通过调用自定义的函数PaintControlXP来绘制控件.这是我原来分析的主要结果,你看看把Autodetected应该是,是否自动扫描控件把!