如何在其它程序窗口(已知窗口的句柄)加上一个按钮
编号:QA001819
建立日期: 1999年10月5日 最后修改日期:1999年10月6日
所属类别:
miu:
win97
delphi3.0
我是DELPHI3.0初学者,现遇到一个问题:我的程序如何在其它程序窗口(已知这个窗口的句柄)加上一个按钮,并且这个按钮的鼠标事件我的程序窗口能收到?
回答:
使用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;
此问题由李海回答。
| |
|
|
| |
|
|