#pragma once #include "SLayoutSize.h" #define POSFLAG_REFCENTER '|' //参考父窗口中心 #define POSFLAG_REFPREV_NEAR '[' //参考前一个兄弟窗口与自己近的边 #define POSFLAG_REFNEXT_NEAR ']' //参考下一个兄弟窗口与自己近的边 #define POSFLAG_REFPREV_FAR '{' //参考前一个兄弟窗口与自己远的边 #define POSFLAG_REFNEXT_FAR '}' //参考下一个兄弟窗口与自己远的边 #define POSFLAG_PERCENT '%' //采用在父窗口的百分比定义坐标 #define POSFLAG_SIZE '@' //在pos属性中定义窗口的size,只在在定义x2,y2时有效 namespace SOUI{ //坐标类型 enum PIT{ PIT_NULL=0, //无效定义 PIT_NORMAL, //锚点坐标 PIT_CENTER, //参考父窗口中心点,以"|"开始 PIT_PERCENT, //指定在父窗口坐标的中的百分比,以"%"开始 PIT_PREV_NEAR, //参考前一个兄弟窗口与自己近的边,以"["开始 PIT_NEXT_NEAR, //参考下一个兄弟窗口与自己近的边,以"]"开始 PIT_PREV_FAR, //参考前一个兄弟窗口与自己远的边,以"{"开始 PIT_NEXT_FAR, //参考下一个兄弟窗口与自己远的边,以"}"开始 PIT_SIZE, //指定窗口的宽或者高,以"@"开始 PIT_SIB_LEFT=10, //兄弟结点的left,用于X PIT_SIB_TOP=10, //兄弟结点的top,与left相同,用于Y PIT_SIB_RIGHT=11, //兄弟结点的right,用于X PIT_SIB_BOTTOM=11, //兄弟结点的bottom,与right相同,用于Y }; struct POS_INFO { PIT pit; /**<坐标类型 */ int nRefID; /**<根据ID引用兄弟窗口时使用的ID,-1代表不参考特定ID的兄弟,使用ID引用的格式为"sib.left@200:10"类似的格式 */ char cMinus; /**<定义的值包含"-", 由于-0不能直接做nPos表示,需要一个单独的标志位 */ SLayoutSize nPos; /**<坐标值*/ }; struct SouiLayoutParamStruct { int nCount; /**< 定义的坐标个数 */ POS_INFO posLeft,posRight; /**< 由pos属性定义的值, nCount >0 时有效*/ POS_INFO posTop,posBottom; /**< 由pos属性定义的值, nCount >0 时有效*/ float fOffsetX,fOffsetY; /**< 窗口坐标偏移量, x += fOffsetX * width, y += fOffsetY * height */ SLayoutSize width; /**<使用width属性定义的宽 nCount==0 时有效*/ SLayoutSize height; /**<使用height属性定义的高 nCount==0 时有效*/ }; }