请帮我详细解释一下下面的代码是什么意思???(10分)

  • 主题发起人 主题发起人 ruohan
  • 开始时间 开始时间
R

ruohan

Unregistered / Unconfirmed
GUEST, unregistred user!
DefaultClientWndProc :Pointer;
function ClientWndProc(wndHandle :HWND;Msg :LongInt;
wParam,lParam :LongInt) :LongInt;
begin
if Msg <> $003F then
Result := CallWindowProc(DefaultClientWndProc,Form1.ClientHandle,Msg,WParam,LParam);
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
if DefaultClientWndProc = nil then
DefaultClientWndProc :=Pointer(SetWindowLong(Form1.ClientHandle,GWL_WNDPROC,
LongInt(@ClientWndProc)));
end;
 
大致意思是给一个窗口设置一个处理函数(回调函数),由windows 操作系统 使用该函数 ,
而处理的时候 if msg <> $003f then
这个是说 只要是非
MM_CALCSCROLL 0x003F
这个消息,就调用默认的处理程序拉
 
就是挂接 TForm2 默认消息处理函数,然后过滤其中 Msg = $003F
 
还有谁来说说??@ClientWndProc这是个什么东东,怎么会有@这个?还有$003f 是啥东东啊 ??
 
@clientwndproc 是窗口处理函数 ,由setwindowlong,其中的gwl_wndproc 决定,
$003f 是windows 的消息,意思是 mm_calcscroll 计算滚动条 数据的消息
 
后退
顶部