小弟正在开发一个VCL程序,为了美化界面去掉了边框,并用拦截消息的方法是窗口可以移动,但问题就来了,任何Timage无法响应Click事件,代码如下:unit Main;interfaceuses
  Windows, Messages, System.SysUtils, Variants, Classes, Graphics,
  Controls, Forms, Dialogs, acPNG, ExtCtrls, StdCtrls, sSkinManager,
  sButton, Vcl.Buttons, Vcl.ComCtrls, FileCtrl, sGauge;type
  TFrmMain = class(TForm)
    Image4: TImage;;
    procedure FormMouceDown(Sender: TObject; Button: TMouseButton;
                               Shift: TShiftState; X, Y: Integer);//Enable move form    procedure Image4Click(Sender: TObject);
 
  private
   procedure WMNCHITTEST(var M:TWMNCHITTEST); message WM_NCHITTEST;
  public
    { Public declarations }
  end;var
  FrmMain: TFrmMain;implementation{$R *.dfm}
{$R PakWizard_addition.res}
var
 step_n:integer; //Step Number
 chk_input:integer;//0=Error,1=Writted
 chk_output:integer;//0=Error.1=Writted
 cancel_execute:integer;//0=Normal;1=Stop
//------[This part is used to enable move form]------------------------------
procedure TFrmMain.IniterTimer(Sender: TObject);  //Draw Window
var
 hr :thandle;
begin
 hr:=createroundrectrgn(0,0,width,height,5,5);
 setwindowrgn(handle,hr,true);
 init;
 Initer.Enabled:=False;
end;procedure TFrmMain.FormMouceDown(Sender: TObject; Button: TMouseButton;
                                    Shift: TShiftState; X, Y: Integer);
begin
  inherited;
  ReleaseCapture;
  SendMessage(self.Handle, WM_SYSCOMMAND,SC_MOVE+HTCAPTION, 0);
end;procedure TfrmMain.WMNCHITTEST(var M:TWMNCHITTEST);
begin
    inherited;
    if M.Result=HTCLIENT then         //HTCLIENT???    HTCAPTION??
    begin
      M.Result:=HTCAPTION;
    end;
end;procedure TFrmMain.Image4Click(Sender: TObject);
begin
  ShowMessage('Test!');//这里没有任何响应
end;end.

解决方案 »

  1.   

    试试这样
    procedure TBaseFrm.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      ReleaseCapture;
      self.perform(WM_SYSCOMMAND, $F012, 0);
    end;
    procedure TBaseFrm.img_minClick(Sender: TObject);
    begin
      PostMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
    end;
      

  2.   

    在Image的OnMouseDown事件中写:
    ReleaseCapture;
      Perform(WM_syscommand, $F012, 0);就可以了!
      

  3.   

    ReleaseCapture;
      self.perform(WM_SYSCOMMAND, $F012, 0);
    这个是拖拽
    PostMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
    点击