前言

duilib中窗口,布局,控件等在屏幕上的显示位置都是按照配置好的xml文件规则显示的,每个显示元素的位置大小也需要显式指定,才能呈现出更好看的界面效果,显示元素的位置有两种配置规则,即绝对位置(fuilib中float属性为true时)与相对位置(float属性为false时)。

绝对位置(float=true)

首先看一张惨不忍睹的自绘图:

图中简单描述的是一个屏幕,屏幕里面包含了一个窗口,窗口里面包含了一个显示控件(这个控件可以理解为duilib的各种布局与控件组合),在一般的界面系统屏幕上显示一般是这种模式。

窗口

位置:pos(A,B,C,D)

在win32中,界面显示中一般以pos(A,B,C,D)这种方式定位一个窗口的大小,其中A,B表示的是窗口左上角的坐标,C,D表示的是窗口的width和height,参考坐标系为以屏幕左上角为原点,原点右边直线方向为X轴正向,原点下方直线方向为Y轴正向,即矩形左上角坐标(A,B),矩形的大小width=长,height=D。

在duilib的xml文件中对于窗口的配置并没有显式指定pos(A,B,C,D)这样的方式来定位窗体的大小,而是直接

size属性(宽,高),即可,这其实是有原因的

duilib的窗口左上角坐标与窗口大小需要在不同的地方设置,即窗口的width和height直接在xml文件中配置,就是size(宽,高)

窗口的左上角坐标需要在入口函数Create函数中指定,如下代码:

#include "stdafx.h"

#include "MainFrame.h"

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR /*lpCmdLine*/, int nCmdShow)

{

CPaintManagerUI::SetInstance(hInstance);

CWndShadow::Initialize(hInstance);

CMainFrame* pFrame = new CMainFrame();

if (pFrame == NULL)

return 0;

DWORD dwStyle = UI_WNDSTYLE_FRAME;

dwStyle = dwStyle^WS_MAXIMIZEBOX;

pFrame->Create(NULL, _T("mywindows"), dwStyle, WS_EX_STATICEDGE | WS_EX_APPWINDOW, 1, 1, 0, 0);

//倒数第3第4个参数可以设置duilib左上角的坐标,倒数第1第2个参数因为继承了WindowImpBase,

//WindowImpBase类中在创建窗口大小时会取xml文件中的窗口大小数据,顾此处两个参数值无效。

pFrame->CenterWindow();

::ShowWindow(*pFrame, SW_SHOW);

CPaintManagerUI::MessageLoop();

::CoUninitialize();

return 0;

}

布局及控件

布局与控件就是duilib窗口中的子显示元素,坐标位置与窗口设置一样,都是以屏幕左上角为参考原点,右与下为正方向。

相对位置(float=false)

窗口

窗口就没有相对位置只能是绝对位置,因为窗口是一个程序的总体框架。

布局与控件

布局的最外层与直接处于窗体内的控件(不包含在布局之中或嵌套在其他控件)

这种结构布局与控件的相对位置是以窗体左上角坐标为参考点

嵌套在布局与控件之中的布局与控件

这种结构,相对位置的参考点为以整个嵌套部分的左上角为参考点,即以本身的上一层为参考

duilib 子窗口位置_duilib绝对定位与相对定位相关推荐

  1. duilib 子窗口位置_duilib入门简明教程 -- 界面布局(9)

    上一个教程实现的标题栏代码中,并没有看到处理自适应窗口大小的代码,但是窗口大小变化后,按钮的位置会跟着变化,这是因为我们将按钮放到了HorizontalLayout.VerticalLayout,这样 ...

  2. duilib 子窗口位置_duilib各种布局的作用,相对布局与绝对布局的的意义与使用方法...

    转载请说明原出处,谢谢~~ 我使用duilib快3个月了.总体感觉duilib的使用还是较为简单的,仅仅是刚入门时可能有些摸不清头脑.今天写一篇关于duilib的入门日志,大致说一下duilib中的各 ...

  3. duilib 子窗口位置_duilib入门简明教程 -- 界面布局(9) (转)

    效果如图: 可以看到整个最小化按钮都被拉伸了,其中两边的矩形色块是因为图片的边框也被拉伸了. 我们再加上最大化按钮和关闭按钮,XML如下: 效果如图: 可以发现三个按钮被均匀拉伸了. 但是我们显然不想 ...

  4. duilib 子窗口位置_Duilib学习笔记《02》— 界面布局

    2. 简单空白窗体界面 此处以创建一个简单的空白的灰色背景窗体为例.对应的XML布局文件对应的也就很简单.如下: 1<?xml version="1.0" encoding= ...

  5. html固定按钮相对位置,CSS基础之相对定位,绝对定位,固定定位,z-index

    1.相对定位 1.1.相对定位,就是微调元素位置的.让元素相对自己原来的位置,进行位置调整.也就是说,如果一个盒子想进行位置调整,那么就要使用相对定位 a position:relative; → 必 ...

  6. CSS中定位(带你实操代码掌握固定定位、绝对定位与相对定位(子绝父相))

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 目录 固定定位 绝 ...

  7. css盒子绝对定位,相对定位,固定定位

    相对定位 使用相对定位的盒子的位置常以标准流的排版方式为基础,然后使盒子相对于它在原本的标准位置偏移指定的距离.相对定位的盒子仍在标准流中,它后面的盒子仍以标准流方式对待它.       使用rela ...

  8. 绝对定位、相对定位、固定定位特点

    一.定位 1.定位的定义 某个元素可以自由地在盒子上面移动,并且可以压着其他元素 当滚动窗口时,某个元素可以固定在页面上 可以让盒子自由的在某个盒子上进行移动并且可以压住其他盒子,或者可以在屏幕上固定 ...

  9. CSS position 属性:绝对定位与相对定位,以及浮动

    以前一直很模糊定位原理,以为absolute与relative必须配合使用,使用absolute必须父标签必须设置为relative. 可能的值:absolute,fixed,relative,sta ...

最新文章

  1. 图像的均值和方差python_python-绘制均值和标准差
  2. 微软发布史上最大NLG模型:基于Transformer架构,170亿参数加持
  3. JDBC读取新插入Oracle数据库Sequence值的5种方法
  4. 黑马程序员——11 正则表达式
  5. 获取网页中选中的文字
  6. LeetCode 239:滑动窗口最大值 思考分析
  7. 织梦内核风吟导航QQ导航天下网址管理源码
  8. Photoshop 入门教程,处理图层「2」了解图层基本知识
  9. Mybatis-03-配置文件及Mybatis主要API详解
  10. PowerPC PPC460-S MMU
  11. java 如何调用数组_Java中数组的使用
  12. 【入门】求三个数的平均数
  13. 如何将mp3转换flac音频文件格式
  14. 读书郎上市背后隐忧:业绩下滑明显,市场地位较靠后,竞争力存疑
  15. 华南x79主板u盘装系统教程_华南主板win10改win7系统及BIOS设置教程
  16. 2019西安交通大学计算机夏令营
  17. LSR and DLSR
  18. 15. 【C语言】Hanoi塔问题(Demo)
  19. 【30分钟学完】canvas动画|游戏基础(7):动量守恒与多物体碰撞
  20. 比较大小(两种方法)

热门文章

  1. RT-Thread与智能车比赛
  2. 斩草除根-修复被剪断的鼠标引线
  3. 在TEASOFT中如何设置出镜摄像头?
  4. KiCAD初学者指南
  5. html恢复按钮按下前的状态,如何通过点击按钮暂停和恢复html页面的执行
  6. dnf时装预览怎么打开_您看我还有机会吗?被阉割的DNF时装市场系统
  7. 测试wifi软件 最大容量,使用VulcanCompact应用层测试仪评估测试WiFi6无线路由器的最大支持设备数及并发连接数...
  8. 厦门理工学院计算机科学与技术专业,厦门理工学院计算机类(含计算机科学与技术、网络工程、空间信息与专业2016年在福建理科高考录取最低分数线...
  9. 软件项目管理 用户测试,1对软件研发过程中用户需求研发设计项目测试交付实施测试等流程监督管理.doc...
  10. JAVA项目代码手写吗_一个老程序员是如何手写Spring MVC的