1. 如何通过鼠标拖窗口时(没有标题栏的窗口)让窗口移动?
2. "句柄"究竟是什么?handle??怎么将他转成字符串以便显示在edit中?
3. 工具栏的背景颜色无法修改的吗??

解决方案 »

  1.   

    1,自己写代码
    2:句柄是整数型,edit1.text:=inttostr(handle);
    3:利用api函数
      

  2.   

    A1:
    procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    const
      sc_dragmove = $f012;
    begin
      releasecapture;
      twincontrol(application.mainform).perform(wm_syscommand,sc_dragmove, 0);
    end;
    A2:Windows可视对象唯一标识,如果这个都搞不懂,就不要写Win32的程序了
    A3: 可以的
      

  3.   

    1,利用NCHITTEST消息
    在Form1的private里加入申明
    procedure wmnchittest(var msg:twmnchittest);message WM_NCHITTEST;procedure TForm1.wmnchittest(var msg:twmnchittest)
    var
      P:TPoint;
    begin
      inherited;
      P.X := msg.XPos;
      P.Y := msg.YPos;
      P := ScreenToClient(P);
      //可以在这里利用P判断你点击鼠标的位置
      msg.Result := htCaption;//拖动窗体
    end;
      

  4.   

    1. 拦截nchittest消息, 像zplinze(linze)
    2. 句柄就相当于一个编号号一样,每一个窗口有一个编号, 这样系统才能识别出每一个窗口, 才能管理每一个窗口,IntToStr(*)
    3. 工具栏的背景是可以改的,调用API就行了
      

  5.   

    下面的程序可以搞定:
    function GetParentWindowNameAt ( X, Y : integer ) : string; 
    var P : TPoint; W : TWinControl; 
    begin 
    P.X := X; 
    P.Y := Y; 
    W := FindVCLWindow( P ); 
    if( nil <> W ) then 
    begin 
    Result := W.Name; 
    end 
    else 
    begin 
    Result := ''; 
    end; 
    end;
      

  6.   

    procedure TForm1.Label1MouseMove(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
    ReleaseCapture;
    SendMessage(Handle,WM_SYSCOMMAND,$f012,0);
    end
      

  7.   

    下面这个怎么用啊???
    function GetParentWindowNameAt ( X, Y : integer ) : string; 
    var P : TPoint; W : TWinControl; 
    begin 
    P.X := X; 
    P.Y := Y; 
    W := FindVCLWindow( P ); 
    if( nil <> W ) then 
    begin 
    Result := W.Name; 
    end 
    else 
    begin 
    Result := ''; 
    end; 
    end;