使用CreateWindow来建立按钮,也可以建立其它消息。可以使用SetWindowLong函数通过子类技术截获控件消息。下面是一个简单的例子:
var
Form1: TForm1;
h:HWND;
proc : longint;
function WndProc2(hwnd: HWnd; Msg: UINT; wParam: wParam;
lParam: LPARAM) : integer; Far; stdcall;
var i : integer;
begin
CASE Msg OF
WM_LBUTTONUP:
begin
MessageBeep(MB_ICONASTERISK);
end
END;
Result := CallWindowProc(TFNWndProc(proc), hwnd, Msg, wParam, lParam);
end;
procedure TForm1.Button1Click(Sender: TObject);
var l:longint;
begin
Form2.Show;
h := CreateWindow('BUTTON', 'Hello',
WS_VISIBLE + WS_CHILD, 0, 0, 100, 50, Form2.handle//GetDesktopWindow()
, 0, 0, nil);
proc := GetWindowLong(h, GWL_WNDPROC);
l := longint(@WndProc2);
SetWindowLong(h, GWL_WNDPROC, l);
end;
欢迎转载,但请保留出处,本文章转自[华软源码],原文链接:http://www.hur.cn/special/Delphitech/02259.htm