FireMonkey下的异形窗体拖动(句柄转换)

DelphiXE2 Firemoney FMX 的窗体不只是为windows的, 所以很多功能都没有了.

最常见的就是拖拽了

先看 VCL时代 一个经典拖动代码

[delphi] view plain copy

  1. ReleaseCapture();
  2. SendMessage(Handle , WM_SYSCOMMAND,SC_MOVE+HTCAPTION, 0);

这段代码就是用来拖动异形窗体的, 可是到了 FMX下  好像不能用了?

其实还是可以使用的. 因为 FMX 的句柄不是 VCL 的窗体句柄,所以需要转化一下.

[delphi] view plain copy

  1. uses
  2. Winapi.Windows , Winapi.Messages,
  3. FMX.Platform.Win;

[delphi] view plain copy

  1. procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  2. Shift: TShiftState; X, Y: Single);
  3. begin
  4. ReleaseCapture();
  5. SendMessage(FmxHandleToHwnd(Handle)  , WM_SYSCOMMAND,SC_MOVE+HTCAPTION, 0);
  6. end;

这样就可以拖动啦

FMX中还自带了另一种拖动,  这种拖动是直接拖动窗体,和上面的拖动时出现一个方框不一样

[delphi] view plain copy

    1. TForm.StartWindowDrag

http://blog.csdn.net/warrially/article/details/7951244

时间: 2024-08-12 01:08:47

FireMonkey下的异形窗体拖动(句柄转换)的相关文章

使用duilib开发半透明异形窗体程序(附源码和demo)

转载请说明原出处,谢谢~~:http://blog.csdn.net/zhuhongshu/article/details/43532791 半透明异形窗体的功能在之前维护的老版本的duilib里面已经有了基本的功能,但是因为一直存在较多的缺陷,所以我一直建议少用,就连我自己写仿酷狗项目也只是在几个小地方用了半透明异形窗体.不过今天在群里和其他几位朋友讨论后,发现了之前的许多问题以及解决方法.所以我立马修复了当前的库,并且写了一个半透明异形窗体的demo来测试效果.这里的半透明窗体是用Updat

Windows界面编程第四篇 异形窗体(转)

原文转自 http://blog.csdn.net/morewindows/article/details/8451638 上一篇<Windows界面编程第三篇 异形窗体 普通版>介绍了异形窗口(异形窗体)的创建,其主要步骤为--先通过创建位图画刷来做窗口的背景画刷,再通过SetWindowLong为窗体加上WS_EX_LAYERED属性,然后使用SetLayeredWindowAttributes指定窗口的透明色来完成窗口形状的调整.并且为了使异形窗口支持鼠标的拖曳,在WM_LBUTTOND

C# 获取窗体的句柄和获取窗体中的空间

获取窗体的句柄 FindWindow,用来根据类名和窗口名来得到窗口句柄.但是这个函数不能查找子窗口,也不区分大小写.如果要从一个窗口的子窗口中查找需要使用的FindWindowEX. 1.在C#中使用方法如下: [DllImport("User32.dll",EntryPoint="FindWindow")] private static extern IntPtr FindWindow(string lpClassName,string lpWindowName

Qt绘制异形窗体

异形窗体即不规则窗体,一般采用png图片,一般绘制异形窗体分两步: 1.设置遮罩区 2.绘制图片   使用png图片的透明部分作为遮罩区,然后绘制图片,这样我们就看到一个只绘制了非透明部分的图形,废话少说,以实现绘制一只蝴蝶(蝴蝶为半透明)为例,效果如下: 头文件: 1: #include <QWidget> 2: class TransDialog : public QWidget 3: { 4: Q_OBJECT 5: public: 6: explicit TransDialog(QWi

Gnu Linux下文件的字符编码及转换工具

/*********************************************************************  * Author  : Samson  * Date    : 07/03/2014  * Test platform:  *              3.11.0-12-generic #19-Ubuntu  *              GNU bash, version 4.2.45  * ****************************

android手势事件 快速移动 长按触摸屏 按下触摸屏,并拖动

/* 用户按下触摸屏.快速移动后松开 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { //参数解释: // e1:第1个ACTION_DOWN MotionEvent // e2:最后一个ACTION_MOVE MotionEvent // velocityX:X轴上的移动速度,像素/秒 // velocityY:Y轴上的移动速度,像素/秒 // 触发条件 : /

每日一水~~~~~~~~~打造异形窗体

创建异形窗体:1:窗口背景画刷设置为空画刷 2:创建窗口 风格为WS_POPUP 扩展风格设置为WS_EX_TOPMOST 和WS_EX_LAYERED 3:WM_CREATE消息中设置透明颜色(Set) 4: WM_PAINT 绘制背景位图 1 BITMAP g_hBitmap: 2 // 加载位图 只能加载24位真彩以下的位图 3 g_hBitmap = NULL; 4 g_hBitmap = (HBITMAP)LoadImage(NULL, _T("F:\\Shape.bmp")

WPF MVVM模式中,通过命令实现窗体拖动、跳转以及显隐控制

在WPF中使用MVVM模式,可以让我们的程序实现界面与功能的分离,方便开发,易于维护.但是,很多初学者会在使用MVVM的过程中遇到一个显而易见且无法回避的问题,那就是不同的窗体之间如何跳转?很多人在介绍MVVM的使用时,都没有明显提到该如何解决这一问题,不知是因为觉得太简单了还是其他原因. 博主根据自己的开发经验,写了一个简单的示例程序,介绍MVVM模式中,如何通过命令来控制窗体的跳转.拖动与显隐控制. 先看效果: 主窗体中只有一个按钮,点击该按钮后,可以打开新的窗. 新窗体可以为自定义样式窗体

【异形窗体】完美实现无毛边异形窗体

实现效果图1:实现效果图2:实现效果图3: 异形窗体的实现思路(一).采用UpdateLayeredWindow这个api函数基于Png图alpha通道绘制异形窗口           优点:真正意义上的异形窗口           缺点:用了WS_EX_LAYERED后当前窗体不处理paint事件,所以窗体上无法绘制控件,但这个控件确存在,而且可以响应事件 解决无法绘制控件方法:              1.思路:              采用双层窗口:底层背景窗口层与顶层控件层,用控件层