除了创建时指定窗口位置之外,还有3种移动窗口位置的办法(移动的同时往往可以改变窗口大小)(SetWindowPos最有用,它有许多标志位)
首先,在创立窗口对象的时候,CreateWindowEx就可以指定窗口的位置。除此之外,还有三种方法可以改变窗口的位置:
procedure TWinControl.CreateWindowHandle(const Params: TCreateParams);
begin
// 根据之前准备的Params参数使用API创建窗口。其10个参数都是Params的参数,0表示Menu,WindowClass的十项内容只用到了hInstance一项
// important 控件移到正确的显示位置,就是靠这个X和Y,会移到父控件区域的相对位置(实践检测)。而VC里一般使用CW_USEDEFAULT with Params do
FHandle := CreateWindowEx(ExStyle, WinClassName, Caption, Style, X, Y, Width, Height, WndParent, , WindowClass.hInstance, Param); // API,一共12个参数,注意,CreateWindowEx比CreateWindow多一个参数:dwExStle(Delphi根本没有用到CreateWindow)
// 前9个参数都是TCreateParams的参数,中规中矩
// 第10个参数是menu
// 第11个参数表示,这个新创建的窗口附属于哪个hInstance
// 第12个参数用不到
end;
--------------------------------------------------------------------
第一种办法改变Windows窗口的坐标(最有用,因为它有许多有用的标志位):
SetWindowPos(FHandle, , ALeft, ATop, AWidth, AHeight, SWP_NOZORDER + SWP_NOACTIVATE);
第二种办法改变Windows窗口的坐标(亲测):
procedure TForm1.Button2Click(Sender: TObject);
var
WindowPlacement: TWindowPlacement; // Windows结构类型,包含最大化最小化窗口位置等6项内容
begin
WindowPlacement.Length := SizeOf(WindowPlacement);
GetWindowPlacement(Panel1.Handle, @WindowPlacement); // API,取得结构体指针,包括7项内容
// 更改窗口的位置信息
WindowPlacement.rcNormalPosition := Panel1.BoundsRect;
WindowPlacement.rcNormalPosition.Left := WindowPlacement.rcNormalPosition.Left - ;
WindowPlacement.rcNormalPosition.Right := WindowPlacement.rcNormalPosition.Right - ;
SetWindowPlacement(Panel1.Handle, @WindowPlacement);
end;
第三种办法改变Windows窗口的坐标(亲测):
MoveWindow(panel1.Handle, , , , , true);
--------------------------------------------------------------------
另外,SetScrollPos也有些相关的作用,值得研究
除了创建时指定窗口位置之外,还有3种移动窗口位置的办法(移动的同时往往可以改变窗口大小)(SetWindowPos最有用,它有许多标志位)的更多相关文章
- WM_SIZE后于WM_CREATE消息!!在窗口被创建时的顺序!
WM_SIZE procedure WMSize (var Message: TWMSize); message WM_SIZE; 参数说明 wParam: Specifies the type ...
- springboot打包去除资源文件,启动时指定配置文件位置,使用log4j2替换默认logback
springboot打包时,去掉资源文件 <build> <resources> <resource> <directory>src/main/reso ...
- postgres创建库时指定编码格式
postgres新建数据库时如果没有指定编码格式,会用默认的编码格式: 对于已经存在的数据库,虽然可以用:set client_encoding to 'UTF8'; set server_encod ...
- docker 创建容器时指定容器ip
Docker创建容器时默认采用bridge网络,自行分配ip,不允许自己指定. 在实际部署中,我们需要指定容器ip,不允许其自行分配ip,尤其是搭建集群时,固定ip是必须的. 我们可以创建自己的bri ...
- 用PE安装操作系统时:无法创建新的系统分区 也无法定位现有系统分区 的解决办法
借助U盘的用PE安装操作系统时系统提示:无法创建新的系统分区 也无法定位现有系统分区 的解决办法... --------------------------------- 具体原因是安装时加载到安装程 ...
- 关于使用连接器arm-linux-ld时指定链接地址的作用
首先,记住一句话:程序的链接地址必须等于运行地址! 在学习exynos 4412的启动过程时,发现自己对链接地址的作用不是很了解,于是上网查找了资料做了基本了解,在此做个总结. 上图是exynos 4 ...
- rebuild online 创建时,会话被Kill修复索引测试
rebuild online 创建时,会话被Kill修复索引 1.0实验目的:日常运维经常create index online,但是期间被kill会导致索引再次创建失败,测试解决该问题 2.0测试流 ...
- java在线聊天项目 swt可视化窗口Design 登录框注册按钮点击改变窗口大小——出现注册面板 实现打开登录框时屏幕居中
登录框注册按钮点击改变窗口大小——出现注册面板 首先用swt可视化设计登录窗口如下图: 此时窗口高度为578 没点击注册时高度为301(可自己定) 注意:注册用户的Jpanel 的border选择T ...
- JavaScript 中对象解构时指定默认值
待解构字段为原始值 正常情况下, const obj = { a: 1, b: 2, }; const { a, b } = obj; console.log(a, b); // 1 2 当被解构字段 ...
随机推荐
- nanosleep纳秒级延迟
//函数原型 int nanosleep(struct timespec *req, struct timespec *rem) //参数列表: // req:要求的睡眠时间 // rem:剩余的睡眠 ...
- [RxJS] Marble diagrams in ASCII form
There are many operators available, and in order to understand them we need to have a simple way of ...
- Java语言基础(九)
Java语言基础(九) 一.自增运算(++) 自减运算(--) i++ 就是将i+1再赋给 i i-- 是将i-1再赋给 i 对变量i,j来说,i++ 或++i 这里没什么区别,都是将i的值加1后,再 ...
- C#,MVC视图中把枚举转成DropdownList
1.拓展EnumHelper public static class EnumHelper { // Get the value of the description attribute if the ...
- (转)webstorm快捷键
Ctrl+N 查找类 Ctrl+Shift+N 查找文件 Ctrl+Alt+L 格式化代码 Ctrl+Alt+O 优化导入的类和包 Alt+Insert 生成代码(如get,set方法,构造函数等) ...
- (tomcat访问不了的两种解决方法)Bad Request(Invalid Hostname)
显示这个页面的时候一般有几中解决方法: 第一种就是如下图所示的方法: 具体步骤是: 1.也就是左下角win的“运行”中输入cmd进入doc窗口中 2.输入代码:netstat -ano 3.找到占用8 ...
- 转 sqlserver字段描述相关操作sql
可以自己查询系统表: SELECT o.name AS tableName, c.name AS columnName, p.[value] AS Description FROM sysproper ...
- Android开发需要注意的地方
1.理解运用商场概略 开发者对商场状况的理解与APP的胜利紧密相连,往常,AppStore和GooglePlay能够说是挪动运用最为丰厚的运用生态,像苹果的下载计算表单会记载抢手运用的下载 ...
- Struts2默认拦截器配置
http://blog.csdn.net/axin66ok/article/details/7321430
- sid超过8个字符处理步骤
服务端配置如下: [oracle@p3 admin]$ cat listener.ora # listener.ora Network Configuration File: /home/oracle ...