# web.layout 库模块帮助文档

## web.layout 成员列表 <a id="web.layout" href="#web.layout">&#x23;</a>

创建 HTMLayout 窗口。  
此对象支持多线程界面回调，可传入工作线程使用

### web.layout._dll <a id="web.layout._dll" href="#web.layout._dll">&#x23;</a>
`dll;`

### web.layout.appendMasterCss(css) <a id="web.layout.appendMasterCss" href="#web.layout.appendMasterCss">&#x23;</a>
追加默认CSS,  
必须在创建HTMLayout窗体,以及调用其他函数以前调用

### web.layout.appendMasterCssFile("/res/master.css") <a id="web.layout.appendMasterCssFile" href="#web.layout.appendMasterCssFile">&#x23;</a>
追加默认CSS文件  
CSS文件请使用UTF编码保存,  
必须在创建HTMLayout窗体,以及调用其他函数以前调用

### web.layout.createEle() <a id="web.layout.createEle" href="#web.layout.createEle">&#x23;</a>
[返回对象:layoutEleObject](#layoutEleObject)

### web.layout.createEle(标签名,节点内容) <a id="web.layout.createEle" href="#web.layout.createEle">&#x23;</a>
创建节点,  
节点内容可省略

### web.layout.declareEle( "字符串参数", _HLELM_ ) <a id="web.layout.declareEle" href="#web.layout.declareEle">&#x23;</a>
声明标记,  
必须在创建HTMLayout窗体,以及调用其他函数以前调用,  
并且须要早于设置MasterCss的函数调用

### web.layout.setMasterCss(css) <a id="web.layout.setMasterCss" href="#web.layout.setMasterCss">&#x23;</a>
替换默认CSS  
必须在调用其他函数之前调用

## 全局对象 成员列表 <a id="global" href="#global">&#x23;</a>

### _event_subsriptions <a id="_event_subsriptions" href="#_event_subsriptions">&#x23;</a>
在HTMLayout中的behavior对象,或eventHandle对象中可添加此成员变量,  
使用一个或多个 _HL_HANDLE_ 前缀的掩码来指定 指定订阅的事件  
如果未显示指定该参数,程序将自动设定为合适的值

## web 成员列表 <a id="web" href="#web">&#x23;</a>

### web.layout(窗口对象,捕获事件) <a id="web.layout" href="#web.layout">&#x23;</a>
从窗口对象创建 HTMLayout 窗口。  
 参数二默认为 _HL_HANDLE_LITE - 仅允许捕获按钮命令等基本交互事件

## weblayoutObject 成员列表 <a id="weblayoutObject" href="#weblayoutObject">&#x23;</a>

### weblayoutObject.$("标签名[属性名='属性值']") <a id="weblayoutObject.$" href="#weblayoutObject.$">&#x23;</a>
使用CSS选择器语法,  
查找所有符合条件节点

### weblayoutObject.$() <a id="weblayoutObject.$" href="#weblayoutObject.$">&#x23;</a>
[返回对象:layoutEleObject](#layoutEleObject)

### weblayoutObject.$1("标签名[属性名='属性值']") <a id="weblayoutObject.$1" href="#weblayoutObject.$1">&#x23;</a>
使用CSS选择器语法,  
查找第一个符合条件节点

### weblayoutObject.$1() <a id="weblayoutObject.$1" href="#weblayoutObject.$1">&#x23;</a>
[返回对象:layoutEleObject](#layoutEleObject)

### weblayoutObject._contrls.* <a id="weblayoutObject._contrls.any" href="#weblayoutObject._contrls.any">&#x23;</a>
自定义控件  

[返回对象:staticObject](https://www.aardio.com/zh-cn/doc/library-reference/win/ui/ctrl/static.html#staticObject)

### weblayoutObject.attachEventHandler(eventHandler,subscription) <a id="weblayoutObject.attachEventHandler" href="#weblayoutObject.attachEventHandler">&#x23;</a>
添加事件监听对象,参数一不可省略,  
subscription 可选使用 _HL_HANDLE_ 前缀常量指定捕获的事件,  
 省略该参数则根据定义的回调函数自动设定该值,  
也可以使用对象的 _event_subsriptions 成员指定该值,  
该函数返回事件ID,用于注销监听

### weblayoutObject.callback <a id="weblayoutObject.callback" href="#weblayoutObject.callback">&#x23;</a>

```aardio
weblayoutObject.callback = function ( message,wParam,lParam,vParam,notifyCode ) {  

}
```

### weblayoutObject.combineUrl(URL) <a id="weblayoutObject.combineUrl" href="#weblayoutObject.combineUrl">&#x23;</a>
将URL转换为绝对路径,  
可省略参数返回 baseURL

### weblayoutObject.commitUpdates() <a id="weblayoutObject.commitUpdates" href="#weblayoutObject.commitUpdates">&#x23;</a>
立即更新所有节点  
因为节点可能会延迟更新,  
需要立即获取节点更新后的位置可调用此函数  
该函数不会调用updateWindow

### weblayoutObject.createEle() <a id="weblayoutObject.createEle" href="#weblayoutObject.createEle">&#x23;</a>
[返回对象:layoutEleObject](#layoutEleObject)

### weblayoutObject.createEle(标签名,节点内容) <a id="weblayoutObject.createEle" href="#weblayoutObject.createEle">&#x23;</a>
创建节点,  
节点内容可省略

### weblayoutObject.css <a id="weblayoutObject.css" href="#weblayoutObject.css">&#x23;</a>

```aardio
weblayoutObject.css = /**  
#my-button{   
	behavior:"my.command";   
	active-on!:  
		/*输入CSS脚本,语句用逗号分隔*/  
  	;   
}   
**/
```

### weblayoutObject.debug() <a id="weblayoutObject.debug" href="#weblayoutObject.debug">&#x23;</a>

```aardio
import web.layout.debug;  
weblayoutObject.attachEventHandler( web.layout.debug );
```

### weblayoutObject.defaultHeaders <a id="weblayoutObject.defaultHeaders" href="#weblayoutObject.defaultHeaders">&#x23;</a>

```aardio
weblayoutObject.defaultHeaders = /**  
Accept-Language: cn  
/*设置默认的HTTP请求头  
多个请求头使用回车换行分隔*/  
**/
```

### weblayoutObject.detachEventHandler(事件ID) <a id="weblayoutObject.detachEventHandler" href="#weblayoutObject.detachEventHandler">&#x23;</a>
注销事件监听对象,事件ID不可省略

### weblayoutObject.documentElement <a id="weblayoutObject.documentElement" href="#weblayoutObject.documentElement">&#x23;</a>
[返回对象:layoutEleObject](#layoutEleObject)

### weblayoutObject.enumQuery(枚举函数,CSS选择器,格式化参数) <a id="weblayoutObject.enumQuery" href="#weblayoutObject.enumQuery">&#x23;</a>

```aardio
weblayoutObject.enumQuery(  
	function(ltEle){  
		 /*返回true停止枚举*/  
	},"div"  
)
```

### weblayoutObject.enumRes(枚举函数) <a id="weblayoutObject.enumRes" href="#weblayoutObject.enumRes">&#x23;</a>

```aardio
weblayoutObject.enumRes(  
	function(uri,resType,imgData,size){   
		/*枚举页面页源*/   
	}   
)
```

### weblayoutObject.eventsHandler <a id="weblayoutObject.eventsHandler" href="#weblayoutObject.eventsHandler">&#x23;</a>

```aardio
weblayoutObject.eventsHandler = function (tag,he,evtg,prms) {  

}
```

### weblayoutObject.fromPoint() <a id="weblayoutObject.fromPoint" href="#weblayoutObject.fromPoint">&#x23;</a>
[返回对象:layoutEleObject](#layoutEleObject)

### weblayoutObject.fromPoint(x坐标,y坐标,是否屏幕坐标) <a id="weblayoutObject.fromPoint" href="#weblayoutObject.fromPoint">&#x23;</a>
参数三可选,默认为窗口客户区坐标  
成功返回节点对象

### weblayoutObject.getCtrl("字符串参数") <a id="weblayoutObject.getCtrl" href="#weblayoutObject.getCtrl">&#x23;</a>
根据ID或name查找节点,  
并获取在该节点中自定义的控件对象

### weblayoutObject.getCtrl() <a id="weblayoutObject.getCtrl" href="#weblayoutObject.getCtrl">&#x23;</a>
[返回对象:staticObject](https://www.aardio.com/zh-cn/doc/library-reference/win/ui/ctrl/static.html#staticObject)

### weblayoutObject.getEle("字符串参数") <a id="weblayoutObject.getEle" href="#weblayoutObject.getEle">&#x23;</a>
根据ID查找节点  
如果未找到,尝试使用name查找

### weblayoutObject.getEle() <a id="weblayoutObject.getEle" href="#weblayoutObject.getEle">&#x23;</a>
[返回对象:layoutEleObject](#layoutEleObject)

### weblayoutObject.getEleByUid() <a id="weblayoutObject.getEleByUid" href="#weblayoutObject.getEleByUid">&#x23;</a>
[返回对象:layoutEleObject](#layoutEleObject)

### weblayoutObject.getEleByUid(UID) <a id="weblayoutObject.getEleByUid" href="#weblayoutObject.getEleByUid">&#x23;</a>
根据唯一标志符(数值)返回节点

### weblayoutObject.getEles("字符串参数") <a id="weblayoutObject.getEles" href="#weblayoutObject.getEles">&#x23;</a>
根据name属性查找节点

### weblayoutObject.getEles() <a id="weblayoutObject.getEles" href="#weblayoutObject.getEles">&#x23;</a>
[返回对象:layoutEleObject](#layoutEleObject)

### weblayoutObject.getFocus() <a id="weblayoutObject.getFocus" href="#weblayoutObject.getFocus">&#x23;</a>
获取当前输入焦点所在节点  

[返回对象:layoutEleObject](#layoutEleObject)

### weblayoutObject.go("字符串参数") <a id="weblayoutObject.go" href="#weblayoutObject.go">&#x23;</a>
跳转到指定网址,支持aardio资源文件  
如果参数指定的是aardio文件,参数@2可选用一个表指定request.get对象  
其他文件可用参数@2指定代码页,默认为65001

### weblayoutObject.html <a id="weblayoutObject.html" href="#weblayoutObject.html">&#x23;</a>

```aardio
weblayoutObject.html = /**  
<!doctype html>  
<html>  
<head>  
    <style type="text/css">  
    html,body{ height:100%; margin:0; }   
    </style>  
</head>  
<body>  
    <div id="header"></div>  
    <div id="container">   
        <div class="lside"> </div>   
        <div class="rside"> </div>    
    </div>  
</body>  
</html>  
**/
```

### weblayoutObject.loadcode(HTML模板代码) <a id="weblayoutObject.loadcode" href="#weblayoutObject.loadcode">&#x23;</a>
使用aardio模板语法加载HTML文件  
可选在第二个参数中传入模板参数,  
模板代码中使用owner参数获取首个模板参数

### weblayoutObject.location <a id="weblayoutObject.location" href="#weblayoutObject.location">&#x23;</a>
当前页面URL,  
只读属性

### weblayoutObject.post(网址,参数) <a id="weblayoutObject.post" href="#weblayoutObject.post">&#x23;</a>
参数可以是字符串或键值对组成的表对象  
该函数可触发onDataArrived事件

### weblayoutObject.queryEle() <a id="weblayoutObject.queryEle" href="#weblayoutObject.queryEle">&#x23;</a>
[返回对象:layoutEleObject](#layoutEleObject)

### weblayoutObject.queryEles() <a id="weblayoutObject.queryEles" href="#weblayoutObject.queryEles">&#x23;</a>
[返回对象:layoutEleObject](#layoutEleObject)

### weblayoutObject.querySelector("标签名[属性名='属性值']") <a id="weblayoutObject.querySelector" href="#weblayoutObject.querySelector">&#x23;</a>
使用CSS选择器语法,  
查找第一个符合条件节点,  
如果有多个参数则首先调用string.format格式化为CSS文本,  
该函数名可使用'$1'代替,等价于CSS!中的$1函数

### weblayoutObject.querySelector() <a id="weblayoutObject.querySelector" href="#weblayoutObject.querySelector">&#x23;</a>
[返回对象:layoutEleObject](#layoutEleObject)

### weblayoutObject.querySelectorAll("标签名[属性名='属性值']") <a id="weblayoutObject.querySelectorAll" href="#weblayoutObject.querySelectorAll">&#x23;</a>
使用CSS选择器语法,  
查找所有符合条件节点,  
如果有多个参数则首先调用string.format格式化为CSS文本,  
该函数名可使用'$'代替,等价于CSS!中的$函数

### weblayoutObject.querySelectorAll() <a id="weblayoutObject.querySelectorAll" href="#weblayoutObject.querySelectorAll">&#x23;</a>
[返回对象:layoutEleObject](#layoutEleObject)

### weblayoutObject.readyState <a id="weblayoutObject.readyState" href="#weblayoutObject.readyState">&#x23;</a>
获取当前状态,可能返回的值:  
'uninitialized','loading','complete'

### weblayoutObject.setCss(css,mediaType,baseUrl) <a id="weblayoutObject.setCss" href="#weblayoutObject.setCss">&#x23;</a>
替换CSS

### weblayoutObject.setMode( _HLM ) <a id="weblayoutObject.setMode" href="#weblayoutObject.setMode">&#x23;</a>
设置模式  
 _HLM_SHOW_SELECTION 类似于在body节点应用behavior:htmlarea

### weblayoutObject.setOption(_HL_OPTIONS,1) <a id="weblayoutObject.setOption" href="#weblayoutObject.setOption">&#x23;</a>
设置选项

### weblayoutObject.traverseUiEvent(结构体参数) <a id="weblayoutObject.traverseUiEvent" href="#weblayoutObject.traverseUiEvent">&#x23;</a>
结构体参数是 web.layout.event.MOUSE_PARAMS 或 KEY_PARAMS  
该函数发送事件经过捕获与冒泡过程直到事件被处理

### weblayoutObject.updateWindow() <a id="weblayoutObject.updateWindow" href="#weblayoutObject.updateWindow">&#x23;</a>
更新窗口  
如果仅仅需要更新节点位置等,可调用commitUpdates函数

### weblayoutObject.wait() <a id="weblayoutObject.wait" href="#weblayoutObject.wait">&#x23;</a>
等待所有资源加载完成

### weblayoutObject.write(/*HTML 代码*/) <a id="weblayoutObject.write" href="#weblayoutObject.write">&#x23;</a>
写入HTML代码到网页

## weblayoutObject 事件列表 <a id="weblayoutObjectEvent" href="#weblayoutObjectEvent">&#x23;</a>

### weblayoutObject.onControlCreated <a id="weblayoutObject.onControlCreated" href="#weblayoutObject.onControlCreated">&#x23;</a>

```aardio
weblayoutObject.onControlCreated = {
	节点ID = function( ltEle,ltCtrl ){ 
	 	/*onControlCreate也可以是一个函数,在onElementControlCreated之前被触发*/
	}
}
```

### weblayoutObject.onDataLoaded <a id="weblayoutObject.onDataLoaded" href="#weblayoutObject.onDataLoaded">&#x23;</a>

```aardio
weblayoutObject.onDataLoaded = function(lParam) {
	var dataLoaded = raw.convert(lParam,{
    	struct hdr = ::NMHDR();
    	ustring  uri; 
    	ptr data;
    	INT dataSize; 
    	INT dataType;
    	INT status; 
	});
	/*单个文件数据加载完成后触发*/
}
```

### weblayoutObject.onDocumentComplete <a id="weblayoutObject.onDocumentComplete" href="#weblayoutObject.onDocumentComplete">&#x23;</a>

```aardio
weblayoutObject.onDocumentComplete = function() {
	/*文档已加载*/
}
```

### 全局常量

### ::HTMLayout <a id="::HTMLayout" href="#::HTMLayout">&#x23;</a>
HTMLayout.dll  

[返回对象:dllModuleObject](https://www.aardio.com/zh-cn/doc/library-reference/raw/_.html#dllModuleObject)

### 自动完成常量
_BLOCK_BLOCK_ELEMENT=4  
_BLOCK_TEXT_ELEMENT=3  
_DATA_ELEMENT=0  
_HLELMBLOCK_BLOCK_ELEMENT=4  
_HLELMBLOCK_TEXT_ELEMENT=3  
_HLELMDATA_ELEMENT=0  
_HLELMINLINE_BLOCK_ELEMENT=2  
_HLELMINLINE_TEXT_ELEMENT=1  
_HLM_LAYOUT_ONLY=0  
_HLM_SHOW_SELECTION=1  
_HLN_ATTACH_BEHAVIOR=0xB07  
_HLN_CONTROL_CREATED=0xB02  
_HLN_CREATE_CONTROL=0xB00  
_HLN_DATA_LOADED=0xB03  
_HLN_DESTROY_CONTROL=0xB06  
_HLN_DIALOG_CLOSE_RQ=0xB10  
_HLN_DIALOG_CREATED=0xB0F  
_HLN_DOCUMENT_COMPLETE=0xB04  
_HLN_LOAD_DATA=0xB01  
_HLN_UPDATE_UI=0xB05  
_HLRT_DATA_CURSOR=3  
_HLRT_DATA_HTML=0  
_HLRT_DATA_IMAGE=1  
_HLRT_DATA_SCRIPT=4  
_HLRT_DATA_STYLE=2  
_HL_ANIMATION_THREAD=5  
_HL_CONNECTION_TIMEOUT=2  
_HL_DISABLE_INITIALIZATION=0x80000000  
_HL_FONT_SMOOTHING=4  
_HL_HANDLE_ALL=0xFFFF  
_HL_HANDLE_BEHAVIOR_EVENT=0x100  
_HL_HANDLE_DATA_ARRIVED=0x80  
_HL_HANDLE_DRAW=0x40  
_HL_HANDLE_EXCHANGE=0x1000  
_HL_HANDLE_FOCUS=4  
_HL_HANDLE_GESTURE=0x2000  
_HL_HANDLE_INITIALIZATION=0  
_HL_HANDLE_INPUT=0x80000007  
_HL_HANDLE_KEY=2  
_HL_HANDLE_LITE=0x80000100  
_HL_HANDLE_METHOD_CALL=0x200  
_HL_HANDLE_MOUSE=1  
_HL_HANDLE_SCROLL=8  
_HL_HANDLE_SIZE=0x20  
_HL_HANDLE_TIMER=0x10  
_HL_HTTPS_ERROR=3  
_HL_OPTIONS_ANIMATION_THREAD=5  
_HL_OPTIONS_CONNECTION_TIMEOUT=2  
_HL_OPTIONS_FONT_SMOOTHING=4  
_HL_OPTIONS_HTTPS_ERROR=3  
_HL_OPTIONS_SMOOTH_SCROLL=1  
_HL_OPTIONS_TRANSPARENT_WINDOW=6  
_HL_SMOOTH_SCROLL=1  
_HL_TRANSPARENT_WINDOW=6  
_HWND_DISCARD_CREATION=1  
_HWND_TRY_DEFAULT=0  
_INLINE_BLOCK_ELEMENT=2  
_INLINE_TEXT_ELEMENT=1  
_LOAD_DISCARD=1  
_LOAD_OK=0  
_SIH_APPEND_AFTER_LAST=2  
_SIH_INSERT_AT_START=1  
_SIH_REPLACE_CONTENT=0  
_SOH_INSERT_AFTER=5  
_SOH_INSERT_BEFORE=4  
_SOH_REPLACE=3  
