移动没有标题栏的窗体,上面有VCL控件。在Delphi开发指南上找到的unit MainFrm;interfaceuses
SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TMainForm = class(TForm)
btnClose: TButton;
Memo1: TMemo;
procedure btnCloseClick(Sender: TObject);
private
{ Private declarations }
protected
// Capture the WM_NCHITTEST message to enable moving the form.
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
public
{ Public declarations }
procedure CreateParams(var Params: TCreateParams); override;
end;var
MainForm: TMainForm;implementation{$R *.DFM}procedure TMainForm.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
Message.Result := HTCAPTION;
end;procedure TMainForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := WS_THICKFRAME or WS_POPUP or WS_BORDER;
end;procedure TMainForm.btnCloseClick(Sender: TObject);
begin
Close;
end;end.
SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TMainForm = class(TForm)
btnClose: TButton;
Memo1: TMemo;
procedure btnCloseClick(Sender: TObject);
private
{ Private declarations }
protected
// Capture the WM_NCHITTEST message to enable moving the form.
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
public
{ Public declarations }
procedure CreateParams(var Params: TCreateParams); override;
end;var
MainForm: TMainForm;implementation{$R *.DFM}procedure TMainForm.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
Message.Result := HTCAPTION;
end;procedure TMainForm.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := WS_THICKFRAME or WS_POPUP or WS_BORDER;
end;procedure TMainForm.btnCloseClick(Sender: TObject);
begin
Close;
end;end.
解决方案 »
- FASTREPORT换色
- 哪位高手可以告诉我,在DELPHI里面怎么样去判断电子邮箱的格式呢?
- 请教dock问题,将一Form dock到一panel,如何禁止出现关闭X?如何每次dock Form的时候,就取消前面已经dock的Form?
- 窗体释放语句:action;=cafree;form1;=nil?
- 菜鸟的菜问题,checklistbox的使用方法和响应事件!!
- SQL语句求助!
- 请教一个小问题:源码的行数是怎么计算的?
- 请教下
- 帮忙哦
- ReganCai(闪电边缘)兄请进--[关于如何用代码模拟搜索引擎的行为]
- 为什么我的鼠标HOOK始终无法进行全局的捕捉呢?
- 进行恢复SQL SERVER 数据库时,总是提示“数据库正在使用所以未能获得对数据库的排它访问权...”这是为什么?
不过,能否通过监视desktop窗口的变化来达到同样的目的呢?
hw:=GetDesktopWindow;
.......
把下面的放倒你的窗体里面:
procedure wmsettingchange(var msg:TMessage);message wm_SETTINGCHANGE;...
begin
if msg.lParam=1244276 then
showMessage('任务兰改变了!');
end;
////我先有了这个之后,其他的就不用我说了。
private
procedure WMSETTINGCHANGE(var Msg: TWMSETTINGCHANGE); message WM_SETTINGCHANGE;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.WMSETTINGCHANGE(var Msg: TWMSETTINGCHANGE);
begin
with Memo1.Lines do begin
Values['Msg.Msg'] := IntToStr(Msg.Msg);
Values['Msg.Flag'] := IntToStr(Msg.Flag);
Values['Msg.Section'] := Msg.Section;
Values['Time'] := TimeToStr(Now);
end;
end;//....
测试成功
谢谢Kingron
你在什么地方找到的?
不过kingron怎么又开始“沉沦”了呢??……
var Handled: Boolean);
begin
//我是在这里,可没有捕获到
end;
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
SetCaptureControl(nil);
0A SendMessage(Handle,WM_NCLBUTTONDOWN,HTCAPTION,0);
end;
http://www.csdn.net/Expert/TopicView1.asp?id=723734
Please!