BkWin界面框架使用说明张晓晅2009/12/13一、 简单说明1. 使用XML定义界面窗口分为三部分:header、footer、body,至少应该包含一个部分,header的空白部分是可以拖动的,窗口resize时header和footer高度不变,body自适应BodyFooterHeader所有xml格式采用utf-8编码,或使用ATL::CW2A类由Unicode字符串转换2. 资源统一管理提供了BkBmpPool、BkFontPool、BkString管理界面中用到的位图、字体、字符串资源,头文件放置在bkres目录下BkBmpPool和BkFontPool一般情况下不需要调用BkBmpPool会根据资源ID自动加载对应的位图资源,退出时一起释放BkString需要加载xml资源3. 实现了对话框模式和流模式i. 对话框模式使用pos属性定位,嵌套采用dlg标签ii. 流模式类似html的流式排版,在部分情况下会比较麻烦,除非需要,不建议使用二、 XML格式1. skin定义i. Xml实例skin用于定义一些固定的图片绘制格式所有skin均包含name属性,在style和若干控件中指定,下面就不描述了在应用程序开始时通过BkSkin::LoadSkins方法加载指定资源ID的skin定义xml,资源分类必须为“BKRES”skin包含Normal/Hover/Pushdown/Disable四种状态,当skin使用了ImageList时,ImageList中的图片必须按照此顺序水平排列ii. skins标签无属性,包含若干可能的皮肤格式iii. button标签定义一个很像vista按钮的样式,使用贴图就用不到了iv. imgframe标签定义一个四角不变,中间一像素宽(高)四向拉伸的frame样式skin属性:属性名:说明src位图资源IDmodenone:不透明mask:透明色alpha:alpha通道透明,需要32位RGBA位图maskcolor如果mode=mask,则指定透明色,默认FF00FF ■subwidth如果图片资源是ImageList,用这个参数指定ImageList中单个图片的宽度crbgFrame中间填充的背景颜色(十六进制RRGGBB格式)topFrame上界高度(px)leftFrame左界宽度(px)partall:整个frame(默认)top:不包含底部边框middle:只有垂直中部边框bottom:不包含头部边框left:不包含右边框center:只有水平中部边框right:不包含左边框v. imghorzex标签定义一个左右不变,中间一像素宽水平拉伸的frame样式skin属性:属性名:说明src位图资源IDmodenone:不透明mask:透明色alpha:alpha通道透明,需要32位RGBA位图(目前版本可能有bug,未实验)maskcolor如果mode=mask,则指定透明色,默认FF00FF ■subwidth如果图片资源是ImageList,用这个参数指定ImageList中单个图片的宽度leftFrame左界宽度(px) vi. imglist标签定义一个图片列表样式skin,一般用于img和imgbtn控件属性:属性名:说明src位图资源IDmodenone:不透明mask:透明色alpha:alpha通道透明,需要32位RGBA位图maskcolor如果mode=mask,则指定透明色,默认FF00FF ■subwidth如果图片资源是ImageList,用这个参数指定ImageList中单个图片的宽度2. style定义i. Xml实例Style用于定义控件的样式,包括使用的skin、文字对齐方式、字体、文字颜色、背景色、鼠标指针形状等流模式还可以指定边距、行间距、行内控件间距等等在应用程序开始时通过BkStyle::LoadStyles方法加载指定资源ID的Style定义xml,资源分类必须为“BKRES”ii. class标签定义一个样式属性:属性名:说明nameStyle的名字,用于控件的class属性skin指定使用的skin,如果指定了有效的skinname,crbg属性被忽略textmode文字对齐方式,即DrawText的最后一个参数,格式为十六进制不加“0x”crbg背景色,默认不填充背景crtext默认情况下文字颜色,默认为000000即黑色crhover鼠标移上去时的文字颜色,默认同crtextcrdisabled控件不可用时的文字颜色,默认CCCCCCfont字体,4位16进制数,默认宋体12点字(0000),前两位为字号,正值增大,负值缩小,大字体设置下字号不会改变后两位01斜体、02下划线、04粗体,可叠加hoverfont鼠标移上去时的字体,格式同fontx-margin水平边距(流模式)y-margin垂直边距(流模式)margin边距(流模式),设置这个值会同时修改x-margin和y-marginspacing行内控件间距(流模式)linespacing行距(流模式)cursor鼠标移上去时的鼠标指针样式arrow:普通指针(默认)hand:手型 3. string定义i. Xml实例应用程序标题列1列2列3定义应用程序中用到的字符串在应用程序开始时通过BkString::Load方法加载指定资源ID的Style定义xml,资源分类必须为“BKRES”后加载的字符串表会覆盖先加载的表中相同ID的字符串,此特性可用于OEM订制4. 窗口框架i. 框架实例 默认采用流式排版还是对话框式排版,是在调用时由使用哪种窗口类决定的,具体请见Classes节ii. layer标签定义一个窗口属性:属性名:说明title窗口标题文字,如果设置appwin=1,则显示在任务栏height窗口高度(px)width窗口宽度(px)appwin1对应WS_EX_APPWINDOWresize1对应WS_MAXIMIZEBOX | WS_MINIMIZEBOXnoborder1对应WS_POPUP | WS_SYSMENU以及WS_EX_TOOLWINDOW | WS_EX_TOPMOST0对应WS_OVERLAPPED | WS_SYSMENUiii. header/footer/body标签定义窗口的一部分属性:属性名:说明height高度(px),body必须为full,header和footer可定义width宽度(。