移动没有标题栏的窗体,上面有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.
解决方案 »
- 如何在richedit中写入不同颜色的字?
- 如何移动ListBox中的内容
- 急需动态加载DLL的方法
- 求 我在一个按纽上点击左键,弹出popmenu 求如何在我鼠标移出popmenu时让它消失!
- 这里的斑竹多如牛毛,不知道问题是不是多如牛毛?
- 为什么我用adoquery做删除记录操作时说不能对closed dataset进行操作?
- Delphi操作Excel错误:命令不可用,因为使用该应用程序的许可已经过期
- 在程序中多次调用word时出现"RPC服务器无法使用"的问题?请教高手如何解决?
- 加粗TListView中的字体?
- 如何创建一个没有标题栏,但是可以改变大小的窗体。并且改窗体是平面的,不能是3D的
- 为什么我的鼠标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!