把按钮的parent设为toolbar行不行?

解决方案 »

  1.   

    看看这个吧,也许对你有帮肋,我可是调试通过的哟
    启动记事本,给记事本加一个按钮
    unit  Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      proc : longint;
      form_hw,hn:HWND;
    implementation{$R *.DFM}function WndProc2(hwnd: HWnd; Msg: UINT; wParam: wParam;
    lParam: LPARAM) : integer; Far; stdcall;
    begin
      CASE Msg OF
        WM_LBUTTONUP:
          begin
            showmessage('I'm Clicked');
          end
      END;
      Result := CallWindowProc(TFNWndProc(proc), hwnd, Msg, wParam, lParam);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var 
      l:longint;
      rcw : Word;
    begin
      rcw := WinExec('Notepad.exe', SW_SHOWNORMAL);//启动记事本
      if rcw<=32 then //无法启动记事本
      begin
        Application.Terminate;
      end ;  while true do//确保记事本启动
      begin
        form_hw:=FindWindow(nil,'记事本');//这儿可改为你要的ToolBar的句柄
        if boolean(form_hw) then break;
      end;  hn := CreateWindow('BUTTON', 'ok',WS_VISIBLE + WS_CHILD, 0, 0, 30, 20,form_hw, 0, 0,nil);//left=0,top=0,width=30 height=20
      proc := GetWindowLong(hn, GWL_WNDPROC);
      l := longint(@WndProc2);//设定事件
      SetWindowLong(hn, GWL_WNDPROC, l);
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      if boolean(form_hw) then//启动
      SendMessage(form_hw, wm_close,0,0);
    end;end. -------------------------------------------------------------------
    风过西窗客渡舟船无觅处
    年年一川新草遥看却似旧
      

  2.   

    其实冲浪小子写的都是废话,我在问题里已经说了‘把panel的parent设为那个toolbar’,问题是不刷新。解决办法是截获Panel的WM_ERASEBKGND消息,
    再Send一个WM_PAINT消息。
     toplor(霜天晓竹) 给的程序有用,比如截获Panel的WM_ERASEBKGND消息就用的是他的大部分代码,特此感谢。