RecreateWnd 不是很明白该函数。 ( 积分: 50 )

  • 主题发起人 主题发起人 hhsj
  • 开始时间 开始时间
H

hhsj

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TWinControl.CMRecreateWnd(var Message: TMessage);
var
WasFocused: Boolean;
begin
WasFocused := Focused;
DestroyHandle;
UpdateControlState;
if WasFocused and (FHandle <> 0) then Windows.SetFocus(FHandle);
end;
大虾能说一下上面的函数怎么完成重建吗?
 
procedure TWinControl.CMRecreateWnd(var Message: TMessage);
var
WasFocused: Boolean;
begin
WasFocused := Focused;
DestroyHandle;
UpdateControlState;
if WasFocused and (FHandle <> 0) then Windows.SetFocus(FHandle);
end;
大虾能说一下上面的函数怎么完成重建吗?
 
这个方法重建窗口的关键是调用了UpdateControlState方法,而UpdateControlState方法又调用了UpdateShowing方法,UpdateShowing方法又调用了CreateHandle方法,CreateHandle又调用了CreateWnd方法,才实现了窗口的重建。
 
接受答案了.
 

Similar threads

后退
顶部