热情软件屋

 

如何在其它程序窗口(已知窗口的句柄)加上一个按钮


编号: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;

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio