delphi无边框可拖动窗体

unit UFrmModless;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TFrmModeless = class(TForm)
    lblInfo: TLabel;
    btnClose: TButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
  private
    { Private declarations }
    procedure WMNCHITTEST(var Msg:TWMNCHITTEST);message WM_NCHITTEST;
  public
    { Public declarations }
    procedure CreateParams(var params: TCreateParams); override;
  end;

var
  FrmModeless: TFrmModeless;

implementation

{$R *.dfm}
procedure TFrmModeless.CreateParams(var params: TCreateParams);
begin
    inherited CreateParams(params);
    params.Style := WS_THICKFRAME or WS_POPUP or WS_BORDER;
end;

procedure TFrmModeless.WMNCHITTEST(var Msg: TWMNCHITTEST);
begin
    inherited;
    Msg.Result:=HTCaption;
end;

procedure TFrmModeless.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
    Action := caFree;
//    FrmModeless := nil;
end;

procedure TFrmModeless.FormDestroy(Sender: TObject);
begin
    FrmModeless := nil;
end;

procedure TFrmModeless.btnCloseClick(Sender: TObject);
begin
    self.Close;
end;

end.

  

时间: 2024-08-18 19:48:58

delphi无边框可拖动窗体的相关文章

WPF无边框可拖动窗体

下面主要记录下创建无边框窗体,并且可以拖动.这种窗体主要用于弹出小窗体时. <Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http

delphi 无边框窗体常见问题

实现无边框窗体很简单,直接将窗体的BorderStyle属性设置为bsNone即可.但是这样会引起2个问题: 1.在xp系统下,任务栏鼠标右键点击无法弹出菜单 解决办法:在FormShow中加入这个过程即可 procedure TForm2.InitSysMenu;var WindowStyle: Integer;begin  WindowStyle := GetWindowLong(Handle, -16);  WindowStyle := WindowStyle or WS_SYSMENU

无边框对话框拖动改变大小的实现总结

相同是项目遇到的问题,要求是无边框的对话框要实现鼠标的拖动改变大小.无边框对话框跟有边框的实现肯定不一样喽. 我上网搜到一种方法是: 须要处理下面这三个消息: WM_NCHITTEST  WM_SETCURSOR  WM_NCLBUTTONDOWN  消息处理函数: UINT CXXXDlg::OnNcHitTest(UINT nHitTest, CPoint point) { CRect rect; GetWindowRect(&rect); if(point.x <= rect.left

winform无边框窗口拖动

无边框的窗口想拖动,只需要在置顶的容器上添加对应的mousedown 和 mousemove 事件就可以实现了.代码如下: 1 //拖动窗口 2 private Point mPoint = new Point(); 3 4 private void panel1_MouseDown(object sender, MouseEventArgs e) 5 { 6 mPoint.X = e.X; 7 mPoint.Y = e.Y; 8 } 9 10 private void panel1_Mouse

CreateWindow创建无边框 可拉伸窗体

createwindow 定义 HWND WINAPI CreateWindow( _In_opt_ LPCTSTR lpClassName, _In_opt_ LPCTSTR lpWindowName, _In_ DWORD dwStyle, _In_ int x, _In_ int y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE h

C++ 无边框的拖动窗口代码

按下鼠标时,记录下鼠标在窗体上的坐标, 同时用一个BOOL变量记录下鼠标左键按下的状态 弹起左键,则记录状态的布尔变量为FALSE. 处理鼠标移动事件,如果左键同时按下,则为鼠标拖动窗体运动,设置窗体新的左上角坐标. view plaincopy to clipboardprint?·········10········20········30········40········50········60········70········80········90········100······

QT_无边框窗口拖动缩放

public: int countFlag(QPoint p, int row); void setCursorType(int flag); int countRow(QPoint p); protected: void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void mouseDoubleClickEvent(QMouseEvent *event); void mous

猎豹MFC、--拖动无边框窗体

以上窗口为无边框窗体: 在窗口属性中  去除窗口边框: 首先定义两个变量: 在构造函数中进行初始化: 因为要按下鼠标左键才能进行拖动,所以增加鼠标左键消息: 小技巧: 捕获鼠标  放置鼠标跑出当前窗口: 增加移动鼠标消息: 鼠标按下去的小时函数如下: 增加鼠标离开弹起的消息: 鼠标移动的消息函数实现如下: 鼠标当前位置减去鼠标开始的位置为鼠标移动的距离,为减少窗口的闪烁,让距离大于两个像素的才让他移动,因为不停的移动就会有明显的闪烁感. GetWIndowsRect()获取窗口原来的位置. Of

C# WinForm 拖动无边框窗体 改变无边框窗体尺寸

经常遇到这种情况.窗体的边框去掉了.然后种种问题就出来了:不能拖动.不能改变窗体大小.不能......当然.肯定有解决方案滴*^_^*今天的目标就是:可以直接拖动没有边框的窗体.可以直接拉拽窗体改变其大小.制作步骤如下:新建WinForm程序.添加一个启动的窗体.将其边框设置为None.进入代码编辑界面.定义如下常量值: const int Guying_HTLEFT = 10; const int Guying_HTRIGHT = 11; const int Guying_HTTOP = 12