2008年1月24日星期四

JavaScript 对象与数组参考大全



  本文列举了各种JavaScript对象与数组,同时包括对上述每一对象或数组所完成工作的简短描述,以及与其相关的属性方法,以及事件处理程序,还注明了该对象或数组的父对象用户同样可能需要参考Online Companion中的超级文本Object Hierarchy页面(http://www.netscapepress.com/support/javascript/10-9.htm),以便了解这些对象之间是如何相互关联的。
  顺便提一下,记住,这里把所有作为另一对象的子对象的对象看作该对象的属性请参见第十章中与此相关的注解。


  B.1 anchor对象
  使用<A NAME=>标记创建的HTML描点能被一个链接作为目标如果锚点包括HREF=特性,则它也是一个链接对象。
  anchor对象是document对象的一个属性,它本身没有属性方法或者事件处理程序。



  B.2 anchors数组
  anchors数组是document对象的一个属性,是文档内所有anchor对象的一个列表如果anchor也是一个link(链接),则它会同时出现在anchors和links数组中。
  属性
  length 文档内的锚点个数


  B.3 array对象
  array对象是Netscape Navlgator 3.0 beta 3中引入的一个新的对象,因而,它不能在Netscape 2.0中使用它是一个内置对象,而不是其它对象的属性。
  属性
  length 数组中的值个数


  B.4 button对象
  它是form对象的一个属性,使用<INPUT TYPE="BUTTON">标记来创建。
  属性
  name HTML标记中的NAME=特性
  value HTML标记中的VALUE=特性
  方法
  click 模拟鼠标单击一按钮
  事件处理程序
  Onclick



  B.5 checkbox 对象
  它是form对象的一个属性,使用<INPUT TYPE="CHECKBOX">标记来创建。
  属性
  checked 复选框的选择状态
  defaultChecked 标记的CHECKED=特性
  name 标记的NAME=特性
  value 标记的VALUE=特性
  方法
  click 模拟鼠标单击按钮
  事件处理程序
  onclick


  B.6 Date对象
  它是一个内置对象——而不是其它对象的属性,允许用户执行各种使用日期和时间的过程。
   方法
  getDate() 查看Date对象并返回日期
  getDay() 返回星期几
  getHours() 返回小时数
  getMinutes() 返回分钟数
  getMonth() 返回月份值
  getSeconds() 返回秒数
  getTime() 返回完整的时间
  getTimezoneoffset() 返回时区偏差值(格林威治平均时间与运行脚本的计算机所处时区设置之间相差的小时数)
  getYear() 返回年份
  parse() 返回在Date字符串中自从1970年1月1日00:00:00以来的毫秒数(Date对象按照毫秒数的形式存储从那时起的日期和时间)但是注意,该方法当前不能正确运行
  setDate() 改变Date对象的日期
  setHours() 改变小时数
  setMinutes() 改变分钟数
  setMonth() 改变月份
  setSeconds() 改变秒数
  setTime() 改变完整的时间
  setYear() 改变年份
  toGMTString() 把Date对象的日期(一个数值)转变成一个GMT时间字符串,返回类似下面的值:Weds,15 June l997 14:02:02 GMT(精确的格式依赖于计算机上所运行的操作系统而变)
  toLocaleString() 把Date对象的日期(一个数值)转变成一个字符串,使用所在计算机上配置使用的特定日期格式
  UTC() 使用Date UTC(年、月、日、时、分、秒),以自从1970年1月1日00:00:00(其中时、分、秒是可选的)以来的毫秒数的形式返回日期



  B.7 document对象
  该对象是window和frames对象的一个属性,是显示于窗口或框架内的一个文档。
  属性
  alinkColor 活动链接的颜色(ALINK)
  anchor 一个HTMI锚点,使用<A NAME=>标记创建(该属性本身也是一个对象)
  anchors array 列出文档锚点对象的数组(<A NAME=>)(该属性本身也是一个对象)
  bgColor 文档的背景颜色(BGCOLOR)
  cookie 存储于cookie.txt文件内的一段信息,它是该文档对象的一个属性
  fgColor 文档的文本颜色(<BODY>标记里的TEXT特性)
  form 文档中的一个窗体(<FORM>)(该属性本身也是一个对象)
  forms anay 按照其出现在文档中的顺序列出窗体对象的一个数组(该属性本身也是一个对象)
  lastModified 文档最后的修改日期
  linkColor 文档的链接的颜色,即<BODY>标记中的LINK特性(链接到用户没有观察到的文档)
  link 文档中的一个<A HREF=>标记(该属性本身也是一个对象)
  links array 文档中link对象的一个数组,按照它们出现在文档中的顺序排列(该属性本身也是一个对象)
  location 当前显示文档的URL。用户不能改变document.location(因为这是当前显示文档的位置)。但是,可以改变window.location (用其它文档取代当前文档)window.location本身也是一个对象,而document.location不是对象
  referrer 包含链接的文档的URL,用户单击该链接可到达当前文档
  title 文档的标题((TITLE>)
  vlinkColor 指向用户已观察过的文档的链接文本颜色,即<BODY>标记的VLINK特性
  方法
  clear 清除指定文档的内容
  close 关闭文档流
  open 打开文档流
  write 把文本写入文档
  writeln 把文本写入文档,并以换行符结尾



  B.8 elements数组
  它是form对象的一个属性,列举了窗体内各元素的一个数组。
  属性
  1ength 窗体内的元素个数
  B.9 form对象
  它是document对象的一个属性,文档内的一个窗体。
  属性
  action 包含了为一个窗体提交的目标URL的字符串
  button 窗体内的一个按钮,使用<INPUT TYPE=”BUTTON”>标记来创建(该属性本身也是一个对象)
  checkbox 复选框,使用<INPUT TYPE=”CHECKBOX”>标记来创建 (该属性本身也是一个对象)
  elements array 一个数组,按照其出现于窗体内的顺序列举各窗体元素(该属性本身也是一个对象)
  encoding 窗体的MIME编码
   hidden 窗体里的一个隐藏元素(<INPUT TYPE=”HIDDEN”>)。窗体对象的一个属性(该属性本身也是一个对象)
  length 窗体里的元素的个数
  method 输入窗体的数据传送到服务器上的方式,即(FORM)标记中的METHOD特性
  radio 设置在窗体里的单选按钮(<INPUT TYPE=”RADIO”>)(该属性本身也是一个对象)
  reset 窗体里的复位按钮((1NPUT TYPE=”RESET”>)(该属性自身也是一个对象)
  select 窗体里的选择框(<SELECT>)(该属性本身也是一个对象)
  submit 窗体里的提交按钮(<INPUT TYPE=”SUBMIT”>)(该属性本身也是一个对象)
  target 提交窗体后,显示回应信息的窗口的名字
  text 窗体里的文本元素(<INPUT TYPE=”TEXT”>)(该属性本身也是一个对象)
  textarta 窗体里的文本区元素(<TEXTAREA>)(该属性本身也是一个对象)
  方法
  submit 提交窗体(与使用Submit按钮的作用相同)事件处理程序
  onsubmit



  B.10 forms数组
  该数组是document对象的一个属性,即列举了文档内的各窗体的一个数组。
  属性
  length 文档内窗体的个数


  B.11 frame对象
  它是window对象的一个属性,窗口内的一个框架。除了个别例外,frame对象与window对象的作用相同。
  属性
  frames array 列举该框架内的各个子框架的一个数组(该属性本身也是—个对象)
  length 该框架内的框架数
  name 框架的名字(<FRAME>标记里的NAME特性)
  parent 包含本框架的父窗口的同义词
  self 当前框架的同义词
  window 当前框架的同义词
  方法
  clearTimeout() 用来终止setTimeout方法的工作
  setTimeout() 等待指定的毫秒数,然后运行指令



  B.12 frames数组
  它既是window对象,也是frame对象的属性,列举了window或者frame对象内的各框架。
  属性
  length 窗口或框架对象内的框架数


  B.13 hidden对象
  糊为form对象的一个属性,窗体内的一个隐藏元素(<INPUT TYPE=”HIDDEN”>)。
  属性
  name 标记内的名字(NAME特性)
  value 标记内的VALUE=特性


  B.14 history对象
  它为window对象的一个属性,该窗口的历史列表。
  属性
  length 历史列表中的项目数
  方法
  back 加载历史列表中的上一个文档
  forward 加载历史列表中的下一个文档
  go 加载历史列表中的一个指定文档,通过文档在列表中的位置来指定



  B.15 image对象
  它是document对象的一个属性,是使用(1MG)标记内嵌入文档里的一幅图像这是Netscape Navigator 3.0 beta 3引入的新对象。
  属性
  border <IMG>标记的BORDER特性
  complete 表示浏览器是否完整地加载了图像的一个布尔值
  height HEIGHT特性
  hspace HSPACE特性
  lowsrc LOWSRC特性
  src SRC特性
  vsPace VSPACE特性
  width WIDTH特性
  事件处理程序
  Onload 图象载入
  Onerror 载入错误
  Onabort 取消



  B.16 images数组
  它是document对象的一个属性,文档中所有图像的列表。
  属性
  length 文档内的图像个数


  B.17 link
  它是document对象的一个属性,文档内的一个<A HREF=>标记。
  属性
  hash 以散列号(#)开始的一个字符串,用于指定URL内的一个锚点
  host 包括冒号和端口号的URL的主机名部分
  hostname 与host属性相同,除了不包括冒号和端口号外
  href 完整的URL
  pathname URL的目录路径部分
  port URL的:端口部分
  protocol URL类型(http:、ftp:、gopher:等等)
  search 以一个问号开始的URL中的一部分,用于指定搜索信息
  target 当用户单击一链接(TARGET特性)时,用于显示被引用文档内容的窗口
  事件处理程序
  Onclick 点击
  Onmouseover 鼠标移到对象上



  B.18 links数组
  它是document对象的一个属性,文档内所有链接的一个列表。
  属性
  length 文档内的链接数


  B.19 location对象
  它为document对象的一个属性,该文档的完整URL,请不要把它与window.location属性相混淆,后者可用来加载一个新文档,并且window.location属性本身并不是一个对象,同时,window.location可以用脚本修改,而document.location则不能。
  属性
  hash 以散列号(#)开始的一个字符串,用于指定URL内的一个锚点
  host 包括冒号和端口号的URL的主机名部分
  hostname 与host属性相同,除了不包括冒号和端口号之外
  href 完整的URL
  pathname URL的目录路径部分
  port URL的:端口部分
  protocol URL的类型(http:、ftp:、gopher:等等)
  search 以问号(?)开始的URL中的一部分,用于指定搜索信息
  target 用户单击链接(TARGET特性)时,用于显示被引用文档的内容的窗口



  B.20 math对象
  该对象不是其它对象的一个属性,而是一个内置对象,包含了许多数学常量和函数
  属性
  E 欧拉常量,自然对数的底(约等于2.718)
  LN2 2的自然对数(约等于0.693)
  LN10 10的自然对数(约等于2.302)
  LOG2E 以2为底的e的对数(约等于1.442)
  LOG10E 以10为底的e的对数(约等于o.434)
  PI ∏的值(约等于3.14159)
  SQRT1_2 0.5的平方根(即l除以2的平方根,约等于o.707)
  SQRT2 2的平方根(约等于1.414)
  方法
  abs() 返回某数的绝对值(即该数与o的距离,例如,2与一2的绝对值都是2)
  acos() 返回某数的反余弦值(以弧度为单位)
  asin() 返回某数的反正弦值(以弧度为单位)
  atan() 返回某数的反正切值(以弧度为单位)
  ceil() 返回与某数相等,或大于该数的最小整数(ceil(-22.22)返回-22;ceil22,22)返回23;ceil(22)返回22)
  cos() 返回某数(以弧度为单位)的余弦值
  exp() 返回en
  floor() 与ceil相反(floor(一22.22)返回一23;floor(22.22)返回22; floor(22)返回22)
  10g() 返回某数的自然对数(以e为底)
  max() 返回两数间的较大值
  min() 返回两数问的较小值
  pow() 返回m的n次方(其中,m为底,n为指数)
  random() 返回0和1之间的一个伪随机数(该方法仅在Netscape
  Navigator的UNIX版本中有效)
  round() 返回某数四舍五入之后的整数
  sin() 返回某数(以弧度为单位)的正弦值
  sqrt() 返回某数的平方根
  tan() 返回某数的正切值



  B.2l navigator对象
  该对象不是其它对象的属性,而是一个内置对象它包含了有关加载文档的浏览器的信息。
  属性
  appCodeName 浏览器的代码名(例如,Mozilla)
  appName 浏览器的名字
  appVersion 浏览器的版本号
  userAgent 由客户机送到服务器的用户与代理头标文本
  方法
  javaEnabled JavaScript中当前并没有该方法,但是不久之后将会添加上它将查看浏览器是否为兼容JavaScript的浏览器,如果是,继续查看JavaScript是否处于支持状态。


  B.22 options数组
  该数组是select对象的一个属性,即选择框中的所有选项(<OPTION>)的一个列表。
  属性
  defaultSelected 选项列表中的缺省选项
  index 选项列表中某选项的索引位置
  length 选项列表中的选项数(<OPTIONS>)
  name 选项列表的名字(NAME特性)
  selected 表示选项列表中某选项<OPTION>是否被选中的一个布尔类型值
  selectedIndex 选项列表中已选中的<OPTION>的索引(位置)
  text 选项列表中<OPTION>标记后的文本
  value 选项列表中的VALUE=特性



  B.23 Password 对象
  它是document对象的一个属性,一个<INPUT TYPE=”PASSWORD”>标记。
  属性
  defaultValue password对象的缺省值(VAlUE=特性)
  name 对象的名字(NAME=特性)
  value 该域具有的当前值最初与VALUE=特性(defauttValue)相同,但是,如果脚本修改了该域中的值,则该值将改变
  方法
  focus 把焦点从该域移开
  blur 把焦点移到该域
  select 选择输入区域


  B.24 radio对象
  它是form对象的一个属性,窗体内的一组单选按钮(选项按钮)(<INPUT TYPE=”RADIO”>)。
  属性
  checked 复选框或选项按钮(单选按钮)的状态
  defaultChecked 复选框或选项按钮(单选按钮)的缺省状态
  length 一组单选按钮中的按钮数
  name 对象的名字(NAME=特性)
  value VALUE=特性
  方法
  click 模拟鼠标单击按钮
  事件处理程序
  onclick 点击



  B.25 reset 对象
  它是form对象的一个属性,复位按钮(<INPUT TYPE=”RESET”>)。
  属性
  name 对象的名字(NAME=特性)
  value VALUE=特性
  方法
  click 模拟鼠标单击按钮
  事件处理程序
  onclick 点击


  B.26 select对象
  它是form对象的一个属性,选择框(<SELECT>)。
  属性
  length 选项列表中的选项数(<OPTIONS>)
  name 选项列表的名字(NAME特性)
  options 列表中的选项数
  selectedlndex 选项列表中已选中的<OPTION>的索引(位置)
  text 选项列表中(OPTION)标记之后的文本
  value 选项列表中的VALUE=特性
  方法
  blur 把焦点从选项列表中移走
  focus 把焦点移到选项列表中
  事件处理程序
  Onblur 失去焦点时事件
  onchange 更改
  Onfocus 聚焦事件



  B.27 string对象
  它不是另一个对象的属性,而是一个内置对象,即一串字符字符串输入脚本中时必须位于引号内。
  属性
  length 字符串中的字符个数
  方法
  anchor() 用来把字符串转换到HTML锚点标记内(<A NAME=>)
  big() 把字符串中的文本变成大字体(<BIG>)
  blink() 把字符串中的文本变成闪烁字体(<BLINK>)
  bold() 把字符串中的文本变成黑字体(<B>)
  charAt() 寻找字符串中指定位置的一个字符
  fixed() 把字符串中的文本变成固定间距字体(<TT>)
  fontcolor() 改变字符串中文本的颜色(<FONT COLOR=>)
  fontsize() 把字符串中的文本变成指定大小(<FONTSIZE=>)
  indexOf() 用来搜索字符串中的某个特殊字符,并返回该字符的索引位置
  italics() 把字符串中的文本变成斜字体(<I>)
  lastlndexOf() 与indexof相似,但是向后搜索最后一个出现的字符
  link() 用来把字符串转换到HTML链接标记中(<A HREF=>)
  small() 把字符串中的文本变成小字体(<SMALL>)
  strike() 把字符串中的文本变成划掉字体(<STRIKE>)
  sub() 把字符串中的文本变成下标(subscript)字体((SUB>)
  substring() 返回字符串里指定位置间的一部分字符串
  sup() 把字符串中的文本变成上标(superscript)字体(<SUP>)
  toLowerCase() 把字符串中的文本变成小写
  toUpperCase() 把字符串中的文本变成大写



  B.28 submit对象
  它是form对象的一个属性,窗体中的一个提交按钮(<INPUT TYPE=”SUBMIT”>)。
  属性
  name 对象的名字(NAME=特性)
  value VALUE=特性
  方法
  click 模拟鼠标单击按钮
  事件处理程序
  Onclick 点击


  B.29 text对象
  它是form对象的一个属性,宙体中的一个文本域(<INPUT TYPE=”TEXT”>)。
  属性
  defaultValue text对象的缺省值(VALUE=特性)
  name 该对象的名字(NAME=特性)
  Value 该域具有的当前值,最初与VALUE=特性(defaultValue)相同但是,如果脚本修改了该域中的值,则该值将改变
  方法
  blur 把焦点从文本框移开
  focus 把焦点移到文本框
  select 选择输入区域
  事件处理程序
  Onblur 失去焦点事件
  Onchange 更改
  Onfocus 聚焦事件
  Onselect 选取事件



  B.30 textarea对象
  它是form对象的一个属性,宙体中的一个文本区域(<TEXTAREA>)。
  属性
  defaultValue textarea对象的缺省值(VALUE=特性)
  name 该对象的名字(NAME=特性)
  value 该域具有的当前值,最初与VALUE=特性(defaultValue)相同,但是,如果脚本修改了该域中的值,则该值将改变了。
  方法
  blur 把焦点从文本区移开
  focus 把焦点移到文本区
  select 选择输入区域事件处理程序
  事件处理程序
  Onblur 失去焦点事件
  Onchange 更改
  Onfocus 聚焦事件
  Onselect 选取事件



  B.31 window对象
  它是一个顶层对象,而不是另一个对象的属性即浏览器的窗口。
  属性
  defaultStatus 缺省的状态条消息
  document 当前显示的文档(该属性本身也是一个对象)
  frame 窗口里的一个框架((FRAME>)(该属性本身也是一个对象)
  frames array 列举窗口的框架对象的数组,按照这些对象在文档中出现的顺序列出(该属性本身也是一个对象)
  history 窗口的历史列表(该属性本身也是一个对象)
  length 窗口内的框架数
  location 窗口所显示文档的完整(绝对)URL(该属性本身也是一个对象)不要把它与如document.location混淆,后者是当前显示文档的URL。用户可以改变window.location(用另一个文档取代当前文档),但却不能改变document.location(因为这是当前显示文档的位置)
  name 窗口打开时,赋予该窗口的名字
  opener 代表使用window.open打开当前窗口的脚本所在的窗口(这是Netscape Navigator 3.0beta 3所引入的一个新属性)
  parent 包含当前框架的窗口的同义词。frame和window对象的一个属性
  self 当前窗口或框架的同义词
  status 状态条中的消息
  top 包含当前框架的最顶层浏览器窗口的同义词
  window 当前窗口或框架的同义词,与self相同
  方法
  alert() 打开一个Alert消息框
  clearTimeout() 用来终止setTimeout方法的工作
  close() 关闭窗口
  confirm() 打开一个Confirm消息框,用户可以选择OK或Cancel,如果用户单击OK,该方法返回true,单击Cancel返回false
  blur() 把焦点从指定窗口移开(这是Netscape Navigator 3.0 beta 3引入的新方法)
  focus() 把指定的窗口带到前台(另一个新方法)
  open() 打开一个新窗口
  prompt() 打开一个Prompt对话框,用户可向该框键入文本,并把键入的文本返回到脚本
  setTimeout() 等待一段指定的毫秒数时间,然后运行指令事件处理程序
  事件处理程序
  Onload() 页面载入时触发
  Onunload() 页面关闭时触发



出处:CSDN


责任编辑:红色黑客



◎进入论坛网页制作网站综合版块参加讨论

javaScript函数大全

1.document.write(""); 输出语句

2.JS中的注释为//

3.传统的HTML文档顺序是:document->html->(head,body)

4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document)

5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value)

6.一个小写转大写的JS: document.getElementById("output").value = document.getElementById("input").value.toUpperCase();


7.JS中的值类型:String,Number,Boolean,Null,Object,Function

8.JS中的字符型转换成数值型:parseInt(),parseFloat()

9.JS中的数字转换成字符型:(""+变量)

10.JS中的取字符串长度是:(length)

11.JS中的字符与字符相连接使用+号.

12.JS中的比较操作符有:==等于,!=不等于,>,>=,<.<=

13.JS中声明变量使用:var来进行声明


14.JS中的判断语句结构:if(condition){}else{}

15.JS中的循环结构:for([initial expression];[condition];[upadte expression]) {inside loop}

16.循环中止的命令是:break

17.JS中的函数定义:function functionName([parameter],...){statement[s]}

18.当文件中出现多个form表单时.可以用document.forms[0],document.forms[1]来代替.


19.窗口:打开窗口window.open(), 关闭一个窗口:window.close(), 窗口本身:self

20.状态栏的设置:window.status="字符";

21.弹出提示信息:window.alert("字符");

22.弹出确认框:window.confirm();

23.弹出输入提示框:window.prompt();

24.指定当前显示链接的位置:window.location.href="URL"

25.取出窗体中的所有表单的数量:document.forms.length

26.关闭文档的输出流:document.close();


27.字符串追加连接符:+=

28.创建一个文档元素:document.createElement(),document.createTextNode()

29.得到元素的方法:document.getElementById()

30.设置表单中所有文本型的成员的值为空:

 var form = window.document.forms[0]

 for (var i = 0; i<form.elements.length;i++){


     if (form.elements[i].type == "text"){

         form.elements[i].value = "";

     }

 }

31.复选按钮在JS中判断是否选中:document.forms[0].checkThis.checked (checked属性代表为是否选中返回TRUE或FALSE)

32.单选按钮组(单选按钮的名称必须相同):取单选按钮组的长度document.forms[0].groupName.length


33.单选按钮组判断是否被选中也是用checked.

34.下拉列表框的值:document.forms[0].selectName.options[n].value (n有时用下拉列表框名称加上.selectedIndex来确定被选中的值)

35.字符串的定义:var myString = new String("This is lightsword");

36.字符串转成大写:string.toUpperCase(); 字符串转成小写:string.toLowerCase();

37.返回字符串2在字符串1中出现的位置:String1.indexOf("String2")!=-1则说明没找到.


38.取字符串中指定位置的一个字符:StringA.charAt(9);

39.取出字符串中指定起点和终点的子字符串:stringA.substring(2,6);

40.数学函数:Math.PI(返回圆周率),Math.SQRT2(返回开方),Math.max(value1,value2)返回两个数中的最在值,Math.pow(value1,10)返回value1的十次方,Math.round(value1)四舍五入函数,Math.floor(Math.random()*(n+1))返回随机数

41.定义日期型变量:var today = new Date();

42.日期函数列表:dateObj.getTime()得到时间,dateObj.getYear()得到年份,dateObj.getFullYear()得到四位的年份,dateObj.getMonth()得到月份,dateObj.getDate()得到日,dateObj.getDay()得到日期几,dateObj.getHours()得到小时,dateObj.getMinutes()得到分,dateObj.getSeconds()得到秒,dateObj.setTime(value)设置时间,dateObj.setYear(val)设置年,dateObj.setMonth(val)设置月,dateObj.setDate(val)设置日,dateObj.setDay(val)设置星期几,dateObj.setHours设置小时,dateObj.setMinutes(val)设置分,dateObj.setSeconds(val)设置秒  [注意:此日期时间从0开始计]


43.FRAME的表示方式: [window.]frames[n].ObjFuncVarName,frames["frameName"].ObjFuncVarName,frameName.ObjFuncVarName

44.parent代表父亲对象,top代表最顶端对象

45.打开子窗口的父窗口为:opener

46.表示当前所属的位置:this

47.当在超链接中调用JS函数时用:(javascript:)来开头后面加函数


48.在老的浏览器中不执行此JS:<!--      //-->

49.引用一个文件式的JS:<script type="text/javascript" src="aaa.js"></script>

50.指定在不支持脚本的浏览器显示的HTML:<noscript></noscript>

51.当超链和ONCLICK事件都有时,则老版本的浏览器转向a.html,否则转向b.html.例:<a href="a.html" onclick="location.href='b.html';return false">dfsadf</a>


52.JS的内建对象有:Array,Boolean,Date,Error,EvalError,Function,Math,Number,Object,RangeError,ReferenceError,RegExp,String,SyntaxError,TypeError,URIError

53.JS中的换行:\n

54.窗口全屏大小:<script>function fullScreen(){ this.moveTo(0,0);this.outerWidth=screen.availWidth;this.outerHeight=screen.availHeight;}window.maximize=fullScreen;</script>

55.JS中的all代表其下层的全部元素 


56.JS中的焦点顺序:document.getElementByid("表单元素").tabIndex = 1


57.innerHTML的值是表单元素的值:如<p id="para">"how are <em>you</em>"</p>,则innerHTML的值就是:how are <em>you</em>

58.innerTEXT的值和上面的一样,只不过不会把<em>这种标记显示出来.


59.contentEditable可设置元素是否可被修改,isContentEditable返回是否可修改的状态.

60.isDisabled判断是否为禁止状态.disabled设置禁止状态

61.length取得长度,返回整型数值

62.addBehavior()是一种JS调用的外部函数文件其扩展名为.htc

63.window.focus()使当前的窗口在所有窗口之前.

64.blur()指失去焦点.与FOCUS()相反.

65.select()指元素为选中状态.

66.防止用户对文本框中输入文本:onfocus="this.blur()"


67.取出该元素在页面中出现的数量:document.all.tags("div(或其它HTML标记符)").length

68.JS中分为两种窗体输出:模态和非模态.window.showModaldialog(),window.showModeless()

69.状态栏文字的设置:window.status='文字',默认的状态栏文字设置:window.defaultStatus = '文字.';

70.添加到收藏夹:external.AddFavorite("http://www.dannyg.com","jaskdlf");

71.JS中遇到脚本错误时不做任何操作:window.onerror = doNothing; 指定错误句柄的语法为:window.onerror = handleError;


72.JS中指定当前打开窗口的父窗口:window.opener,支持opener.opener...的多重继续.

73.JS中的self指的是当前的窗口

74.JS中状态栏显示内容:window.status="内容"

75.JS中的top指的是框架集中最顶层的框架

76.JS中关闭当前的窗口:window.close();

77.JS中提出是否确认的框:if(confirm("Are you sure?")){alert("ok");}else{alert("Not Ok");}

78.JS中的窗口重定向:window.navigate("http://www.sina.com.cn");


79.JS中的打印:window.print()

80.JS中的提示输入框:window.prompt("message","defaultReply");

81.JS中的窗口滚动条:window.scroll(x,y)

82.JS中的窗口滚动到位置:window.scrollby

83.JS中设置时间间隔:setInterval("expr",msecDelay)或setInterval(funcRef,msecDelay)或setTimeout

84.JS中的模态显示在IE4+行,在NN中不行:showModalDialog("URL"[,arguments][,features]);

85.JS中的退出之前使用的句柄:function verifyClose(){event.returnValue="we really like you and hope you will stay longer.";}}  window.onbeforeunload=verifyClose;


86.当窗体第一次调用时使用的文件句柄:onload()

87.当窗体关闭时调用的文件句柄:onunload()

88.window.location的属性: protocol(http:),hostname(www.example.com),port(80),host(www.example.com:80),pathname("/a/a.html"),hash("#giantGizmo",指跳转到相应的锚记),href(全部的信息)

89.window.location.reload()刷新当前页面.

89-1.parent.location.reload()刷新父亲对象(用于框架)

89-2.opener.location.reload()刷新父窗口对象(用于单开窗口)

89-3.top.location.reload()刷新最顶端对象(用于多开窗口)


90.window.history.back()返回上一页,window.history.forward()返回下一页,window.history.go(返回第几页,也可以使用访问过的URL)

91.document.write()不换行的输出,document.writeln()换行输出

92.document.body.noWrap=true;防止链接文字折行.

93.变量名.charAt(第几位),取该变量的第几位的字符.

94."abc".charCodeAt(第几个),返回第几个字符的ASCii码值.

95.字符串连接:string.concat(string2),或用+=进行连接

96.变量.indexOf("字符",起始位置),返回第一个出现的位置(从0开始计算)

97.string.lastIndexOf(searchString[,startIndex])最后一次出现的位置.

98.string.match(regExpression),判断字符是否匹配.


99.string.replace(regExpression,replaceString)替换现有字符串.

100.string.split(分隔符)返回一个数组存储值.

101.string.substr(start[,length])取从第几位到指定长度的字符串.

102.string.toLowerCase()使字符串全部变为小写.

103.string.toUpperCase()使全部字符变为大写.

104.parseInt(string[,radix(代表进制)])强制转换成整型.

105.parseFloat(string[,radix])强制转换成浮点型.

106.isNaN(变量):测试是否为数值型.

107.定义常量的关键字:const,定义变量的关键字:var

2008年1月23日星期三

wav文件格式分析详解

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=932395

一、综述
WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。
RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个
字节便是“RIFF”。
WAVE文件是由若干个Chunk组成的。按照在文件中的出现位置包括:RIFF WAVE
Chunk, Format Chunk, Fact Chunk(可选), Data Chunk。具体见下图:

------------------------------------------------
| RIFF WAVE Chunk |
| ID = 'RIFF' |
| RiffType = 'WAVE' |
------------------------------------------------
| Format Chunk |
| ID = 'fmt ' |
------------------------------------------------
| Fact Chunk(optional) |
| ID = 'fact' |
------------------------------------------------
| Data Chunk |
| ID = 'data' |
------------------------------------------------
图1 Wav格式包含Chunk示例

其中除了Fact Chunk外,其他三个Chunk是必须的。每个Chunk有各自的ID,位
于Chunk最开始位置,作为标示,而且均为4个字节。并且紧跟在ID后面的是Chunk大
小(去除ID和Size所占的字节数后剩下的其他字节数目),4个字节表示,低字节
表示数值低位,高字节表示数值高位。下面具体介绍各个Chunk内容。
PS:
所有数值表示均为低字节表示低位,高字节表示高位。

二、具体介绍
RIFF WAVE Chunk
==================================
| |所占字节数| 具体内容 |
==================================
| ID | 4 Bytes | 'RIFF' |
----------------------------------
| Size | 4 Bytes | |
----------------------------------
| Type | 4 Bytes | 'WAVE' |
----------------------------------
图2 RIFF WAVE Chunk

以'FIFF'作为标示,然后紧跟着为size字段,该size是整个wav文件大小减去ID
和Size所占用的字节数,即FileLen - 8 = Size。然后是Type字段,为'WAVE',表
示是wav文件。
结构定义如下:
struct RIFF_HEADER
{
char szRiffID[4]; // 'R','I','F','F'
DWORD dwRiffSize;
char szRiffFormat[4]; // 'W','A','V','E'
};



Format Chunk
====================================================================
| | 字节数 | 具体内容 |
====================================================================
| ID | 4 Bytes | 'fmt ' |
--------------------------------------------------------------------
| Size | 4 Bytes | 数值为16或18,18则最后又附加信息 |
-------------------------------------------------------------------- ----
| FormatTag | 2 Bytes | 编码方式,一般为0x0001 | |
-------------------------------------------------------------------- |
| Channels | 2 Bytes | 声道数目,1--单声道;2--双声道 | |
-------------------------------------------------------------------- |
| SamplesPerSec | 4 Bytes | 采样频率 | |
-------------------------------------------------------------------- |
| AvgBytesPerSec| 4 Bytes | 每秒所需字节数 | |===> WAVE_FORMAT
-------------------------------------------------------------------- |
| BlockAlign | 2 Bytes | 数据块对齐单位(每个采样需要的字节数) | |
-------------------------------------------------------------------- |
| BitsPerSample | 2 Bytes | 每个采样需要的bit数 | |
-------------------------------------------------------------------- |
| | 2 Bytes | 附加信息(可选,通过Size来判断有无) | |
-------------------------------------------------------------------- ----
图3 Format Chunk

以'fmt '作为标示。一般情况下Size为16,此时最后附加信息没有;如果为18
则最后多了2个字节的附加信息。主要由一些软件制成的wav格式中含有该2个字节的
附加信息。
结构定义如下:
struct WAVE_FORMAT
{
WORD wFormatTag;
WORD wChannels;
DWORD dwSamplesPerSec;
DWORD dwAvgBytesPerSec;
WORD wBlockAlign;
WORD wBitsPerSample;
};
struct FMT_BLOCK
{
char szFmtID[4]; // 'f','m','t',' '
DWORD dwFmtSize;
WAVE_FORMAT wavFormat;
};


Fact Chunk
==================================
| |所占字节数| 具体内容 |
==================================
| ID | 4 Bytes | 'fact' |
----------------------------------
| Size | 4 Bytes | 数值为4 |
----------------------------------
| data | 4 Bytes | |
----------------------------------
图4 Fact Chunk

Fact Chunk是可选字段,一般当wav文件由某些软件转化而成,则包含该Chunk。
结构定义如下:
struct FACT_BLOCK
{
char szFactID[4]; // 'f','a','c','t'
DWORD dwFactSize;
};



Data Chunk
==================================
| |所占字节数| 具体内容 |
==================================
| ID | 4 Bytes | 'data' |
----------------------------------
| Size | 4 Bytes | |
----------------------------------
| data | | |
----------------------------------
图5 Data Chunk

Data Chunk是真正保存wav数据的地方,以'data'作为该Chunk的标示。然后是
数据的大小。紧接着就是wav数据。根据Format Chunk中的声道数以及采样bit数,
wav数据的bit位置可以分成以下几种形式:
---------------------------------------------------------------------
| 单声道 | 取样1 | 取样2 | 取样3 | 取样4 |
| |--------------------------------------------------------
| 8bit量化 | 声道0 | 声道0 | 声道0 | 声道0 |
---------------------------------------------------------------------
| 双声道 | 取样1 | 取样2 |
| |--------------------------------------------------------
| 8bit量化 | 声道0(左) | 声道1(右) | 声道0(左) | 声道1(右) |
---------------------------------------------------------------------
| | 取样1 | 取样2 |
| 单声道 |--------------------------------------------------------
| 16bit量化 | 声道0 | 声道0 | 声道0 | 声道0 |
| | (低位字节) | (高位字节) | (低位字节) | (高位字节) |
---------------------------------------------------------------------
| | 取样1 |
| 双声道 |--------------------------------------------------------
| 16bit量化 | 声道0(左) | 声道0(左) | 声道1(右) | 声道1(右) |
| | (低位字节) | (高位字节) | (低位字节) | (高位字节) |
---------------------------------------------------------------------
图6 wav数据bit位置安排方式

Data Chunk头结构定义如下:
struct DATA_BLOCK
{
char szDataID[4]; // 'd','a','t','a'
DWORD dwDataSize;
};


三、小结
因此,根据上述结构定义以及格式介绍,很容易编写相应的wav格式解析代码。
这里具体的代码就不给出了。

2008年1月22日星期二

看书

1、《程序员三步曲》 未看

2008年1月20日星期日

Windows Message ID 常量列表

Windows Message ID 常量列表:
namespace WindowsUtilities
{
public enum WindowsMessages: int
{
WM_NULL = 0x0000,
WM_CREATE = 0x0001,
WM_DESTROY = 0x0002,
WM_MOVE = 0x0003,
WM_SIZE = 0x0005,
WM_ACTIVATE = 0x0006,
WM_SETFOCUS = 0x0007,
WM_KILLFOCUS = 0x0008,
WM_ENABLE = 0x000A,
WM_SETREDRAW = 0x000B,
WM_SETTEXT = 0x000C,
WM_GETTEXT = 0x000D,
WM_GETTEXTLENGTH = 0x000E,
WM_PAINT = 0x000F,
WM_CLOSE = 0x0010,
WM_QUERYENDSESSION = 0x0011,
WM_QUERYOPEN = 0x0013,
WM_ENDSESSION = 0x0016,
WM_QUIT = 0x0012,
WM_ERASEBKGND = 0x0014,
WM_SYSCOLORCHANGE = 0x0015,
WM_SHOWWINDOW = 0x0018,
WM_WININICHANGE = 0x001A,
WM_SETTINGCHANGE = 0x001A,
WM_DEVMODECHANGE = 0x001B,
WM_ACTIVATEAPP = 0x001C,
WM_FONTCHANGE = 0x001D,
WM_TIMECHANGE = 0x001E,
WM_CANCELMODE = 0x001F,
WM_SETCURSOR = 0x0020,
WM_MOUSEACTIVATE = 0x0021,
WM_CHILDACTIVATE = 0x0022,
WM_QUEUESYNC = 0x0023,
WM_GETMINMAXINFO = 0x0024,
WM_PAINTICON = 0x0026,
WM_ICONERASEBKGND = 0x0027,
WM_NEXTDLGCTL = 0x0028,
WM_SPOOLERSTATUS = 0x002A,
WM_DRAWITEM = 0x002B,
WM_MEASUREITEM = 0x002C,
WM_DELETEITEM = 0x002D,
WM_VKEYTOITEM = 0x002E,
WM_CHARTOITEM = 0x002F,
WM_SETFONT = 0x0030,
WM_GETFONT = 0x0031,
WM_SETHOTKEY = 0x0032,
WM_GETHOTKEY = 0x0033,
WM_QUERYDRAGICON = 0x0037,
WM_COMPAREITEM = 0x0039,
WM_GETOBJECT = 0x003D,
WM_COMPACTING = 0x0041,
WM_COMMNOTIFY = 0x0044,
WM_WINDOWPOSCHANGING = 0x0046,
WM_WINDOWPOSCHANGED = 0x0047,
WM_POWER = 0x0048,
WM_COPYDATA = 0x004A,
WM_CANCELJOURNAL = 0x004B,
WM_NOTIFY = 0x004E,
WM_INPUTLANGCHANGEREQUEST = 0x0050,
WM_INPUTLANGCHANGE = 0x0051,
WM_TCARD = 0x0052,
WM_HELP = 0x0053,
WM_USERCHANGED = 0x0054,
WM_NOTIFYFORMAT = 0x0055,
WM_CONTEXTMENU = 0x007B,
WM_STYLECHANGING = 0x007C,
WM_STYLECHANGED = 0x007D,
WM_DISPLAYCHANGE = 0x007E,
WM_GETICON = 0x007F,
WM_SETICON = 0x0080,
WM_NCCREATE = 0x0081,
WM_NCDESTROY = 0x0082,
WM_NCCALCSIZE = 0x0083,
WM_NCHITTEST = 0x0084,
WM_NCPAINT = 0x0085,
WM_NCACTIVATE = 0x0086,
WM_GETDLGCODE = 0x0087,
WM_SYNCPAINT = 0x0088,
WM_NCMOUSEMOVE = 0x00A0,
WM_NCLBUTTONDOWN = 0x00A1,
WM_NCLBUTTONUP = 0x00A2,
WM_NCLBUTTONDBLCLK = 0x00A3,
WM_NCRBUTTONDOWN = 0x00A4,
WM_NCRBUTTONUP = 0x00A5,
WM_NCRBUTTONDBLCLK = 0x00A6,
WM_NCMBUTTONDOWN = 0x00A7,
WM_NCMBUTTONUP = 0x00A8,
WM_NCMBUTTONDBLCLK = 0x00A9,
WM_NCXBUTTONDOWN = 0x00AB,
WM_NCXBUTTONUP = 0x00AC,
WM_NCXBUTTONDBLCLK = 0x00AD,
WM_INPUT = 0x00FF,
WM_KEYFIRST = 0x0100,
WM_KEYDOWN = 0x0100,
WM_KEYUP = 0x0101,
WM_CHAR = 0x0102,
WM_DEADCHAR = 0x0103,
WM_SYSKEYDOWN = 0x0104,
WM_SYSKEYUP = 0x0105,
WM_SYSCHAR = 0x0106,
WM_SYSDEADCHAR = 0x0107,
WM_UNICHAR = 0x0109,
WM_KEYLAST_NT501 = 0x0109,
UNICODE_NOCHAR = 0xFFFF,
WM_KEYLAST_PRE501 = 0x0108,
WM_IME_STARTCOMPOSITION = 0x010D,
WM_IME_ENDCOMPOSITION = 0x010E,
WM_IME_COMPOSITION = 0x010F,
WM_IME_KEYLAST = 0x010F,
WM_INITDIALOG = 0x0110,
WM_COMMAND = 0x0111,
WM_SYSCOMMAND = 0x0112,
WM_TIMER = 0x0113,
WM_HSCROLL = 0x0114,
WM_VSCROLL = 0x0115,
WM_INITMENU = 0x0116,
WM_INITMENUPOPUP = 0x0117,
WM_MENUSELECT = 0x011F,
WM_MENUCHAR = 0x0120,
WM_ENTERIDLE = 0x0121,
WM_MENURBUTTONUP = 0x0122,
WM_MENUDRAG = 0x0123,
WM_MENUGETOBJECT = 0x0124,
WM_UNINITMENUPOPUP = 0x0125,
WM_MENUCOMMAND = 0x0126,
WM_CHANGEUISTATE = 0x0127,
WM_UPDATEUISTATE = 0x0128,
WM_QUERYUISTATE = 0x0129,
WM_CTLCOLORMSGBOX = 0x0132,
WM_CTLCOLOREDIT = 0x0133,
WM_CTLCOLORLISTBOX = 0x0134,
WM_CTLCOLORBTN = 0x0135,
WM_CTLCOLORDLG = 0x0136,
WM_CTLCOLORSCROLLBAR = 0x0137,
WM_CTLCOLORSTATIC = 0x0138,
WM_MOUSEFIRST = 0x0200,
WM_MOUSEMOVE = 0x0200,
WM_LBUTTONDOWN = 0x0201,
WM_LBUTTONUP = 0x0202,
WM_LBUTTONDBLCLK = 0x0203,
WM_RBUTTONDOWN = 0x0204,
WM_RBUTTONUP = 0x0205,
WM_RBUTTONDBLCLK = 0x0206,
WM_MBUTTONDOWN = 0x0207,
WM_MBUTTONUP = 0x0208,
WM_MBUTTONDBLCLK = 0x0209,
WM_MOUSEWHEEL = 0x020A,
WM_XBUTTONDOWN = 0x020B,
WM_XBUTTONUP = 0x020C,
WM_XBUTTONDBLCLK = 0x020D,
WM_MOUSELAST_5 = 0x020D,
WM_MOUSELAST_4 = 0x020A,
WM_MOUSELAST_PRE_4 = 0x0209,
WM_PARENTNOTIFY = 0x0210,
WM_ENTERMENULOOP = 0x0211,
WM_EXITMENULOOP = 0x0212,
WM_NEXTMENU = 0x0213,
WM_SIZING = 0x0214,
WM_CAPTURECHANGED = 0x0215,
WM_MOVING = 0x0216,
WM_POWERBROADCAST = 0x0218,
WM_DEVICECHANGE = 0x0219,
WM_MDICREATE = 0x0220,
WM_MDIDESTROY = 0x0221,
WM_MDIACTIVATE = 0x0222,
WM_MDIRESTORE = 0x0223,
WM_MDINEXT = 0x0224,
WM_MDIMAXIMIZE = 0x0225,
WM_MDITILE = 0x0226,
WM_MDICASCADE = 0x0227,
WM_MDIICONARRANGE = 0x0228,
WM_MDIGETACTIVE = 0x0229,
WM_MDISETMENU = 0x0230,
WM_ENTERSIZEMOVE = 0x0231,
WM_EXITSIZEMOVE = 0x0232,
WM_DROPFILES = 0x0233,
WM_MDIREFRESHMENU = 0x0234,
WM_IME_SETCONTEXT = 0x0281,
WM_IME_NOTIFY = 0x0282,
WM_IME_CONTROL = 0x0283,
WM_IME_COMPOSITIONFULL = 0x0284,
WM_IME_SELECT = 0x0285,
WM_IME_CHAR = 0x0286,
WM_IME_REQUEST = 0x0288,
WM_IME_KEYDOWN = 0x0290,
WM_IME_KEYUP = 0x0291,
WM_MOUSEHOVER = 0x02A1,
WM_MOUSELEAVE = 0x02A3,
WM_NCMOUSEHOVER = 0x02A0,
WM_NCMOUSELEAVE = 0x02A2,
WM_WTSSESSION_CHANGE = 0x02B1,
WM_TABLET_FIRST = 0x02c0,
WM_TABLET_LAST = 0x02df,
WM_CUT = 0x0300,
WM_COPY = 0x0301,
WM_PASTE = 0x0302,
WM_CLEAR = 0x0303,
WM_UNDO = 0x0304,
WM_RENDERFORMAT = 0x0305,
WM_RENDERALLFORMATS = 0x0306,
WM_DESTROYCLIPBOARD = 0x0307,
WM_DRAWCLIPBOARD = 0x0308,
WM_PAINTCLIPBOARD = 0x0309,
WM_VSCROLLCLIPBOARD = 0x030A,
WM_SIZECLIPBOARD = 0x030B,
WM_ASKCBFORMATNAME = 0x030C,
WM_CHANGECBCHAIN = 0x030D,
WM_HSCROLLCLIPBOARD = 0x030E,
WM_QUERYNEWPALETTE = 0x030F,
WM_PALETTEISCHANGING = 0x0310,
WM_PALETTECHANGED = 0x0311,
WM_HOTKEY = 0x0312,
WM_PRINT = 0x0317,
WM_PRINTCLIENT = 0x0318,
WM_APPCOMMAND = 0x0319,
WM_THEMECHANGED = 0x031A,
WM_HANDHELDFIRST = 0x0358,
WM_HANDHELDLAST = 0x035F,
WM_AFXFIRST = 0x0360,
WM_AFXLAST = 0x037F,
WM_PENWINFIRST = 0x0380,
WM_PENWINLAST = 0x038F,
WM_APP = 0x8000,
WM_USER = 0x0400,
EM_GETSEL = 0x00B0,
EM_SETSEL = 0x00B1,
EM_GETRECT = 0x00B2,
EM_SETRECT = 0x00B3,
EM_SETRECTNP = 0x00B4,
EM_SCROLL = 0x00B5,
EM_LINESCROLL = 0x00B6,
EM_SCROLLCARET = 0x00B7,
EM_GETMODIFY = 0x00B8,
EM_SETMODIFY = 0x00B9,
EM_GETLINECOUNT = 0x00BA,
EM_LINEINDEX = 0x00BB,
EM_SETHANDLE = 0x00BC,
EM_GETHANDLE = 0x00BD,
EM_GETTHUMB = 0x00BE,
EM_LINELENGTH = 0x00C1,
EM_REPLACESEL = 0x00C2,
EM_GETLINE = 0x00C4,
EM_LIMITTEXT = 0x00C5,
EM_CANUNDO = 0x00C6,
EM_UNDO = 0x00C7,
EM_FMTLINES = 0x00C8,
EM_LINEFROMCHAR = 0x00C9,
EM_SETTABSTOPS = 0x00CB,
EM_SETPASSWORDCHAR = 0x00CC,
EM_EMPTYUNDOBUFFER = 0x00CD,
EM_GETFIRSTVISIBLELINE = 0x00CE,
EM_SETREADONLY = 0x00CF,
EM_SETWORDBREAKPROC = 0x00D0,
EM_GETWORDBREAKPROC = 0x00D1,
EM_GETPASSWORDCHAR = 0x00D2,
EM_SETMARGINS = 0x00D3,
EM_GETMARGINS = 0x00D4,
EM_SETLIMITTEXT = EM_LIMITTEXT,
EM_GETLIMITTEXT = 0x00D5,
EM_POSFROMCHAR = 0x00D6,
EM_CHARFROMPOS = 0x00D7,
EM_SETIMESTATUS = 0x00D8,
EM_GETIMESTATUS = 0x00D9,
BM_GETCHECK= 0x00F0,
BM_SETCHECK= 0x00F1,
BM_GETSTATE= 0x00F2,
BM_SETSTATE= 0x00F3,
BM_SETSTYLE= 0x00F4,
BM_CLICK = 0x00F5,
BM_GETIMAGE= 0x00F6,
BM_SETIMAGE= 0x00F7,
STM_SETICON = 0x0170,
STM_GETICON = 0x0171,
STM_SETIMAGE = 0x0172,
STM_GETIMAGE = 0x0173,
STM_MSGMAX = 0x0174,
DM_GETDEFID = (WM_USER+0),
DM_SETDEFID = (WM_USER+1),
DM_REPOSITION = (WM_USER+2),
LB_ADDSTRING = 0x0180,
LB_INSERTSTRING = 0x0181,
LB_DELETESTRING = 0x0182,
LB_SELITEMRANGEEX= 0x0183,
LB_RESETCONTENT = 0x0184,
LB_SETSEL = 0x0185,
LB_SETCURSEL = 0x0186,
LB_GETSEL = 0x0187,
LB_GETCURSEL = 0x0188,
LB_GETTEXT = 0x0189,
LB_GETTEXTLEN = 0x018A,
LB_GETCOUNT = 0x018B,
LB_SELECTSTRING = 0x018C,
LB_DIR = 0x018D,
LB_GETTOPINDEX = 0x018E,
LB_FINDSTRING = 0x018F,
LB_GETSELCOUNT = 0x0190,
LB_GETSELITEMS = 0x0191,
LB_SETTABSTOPS = 0x0192,
LB_GETHORIZONTALEXTENT = 0x0193,
LB_SETHORIZONTALEXTENT = 0x0194,
LB_SETCOLUMNWIDTH = 0x0195,
LB_ADDFILE = 0x0196,
LB_SETTOPINDEX = 0x0197,
LB_GETITEMRECT = 0x0198,
LB_GETITEMDATA = 0x0199,
LB_SETITEMDATA = 0x019A,
LB_SELITEMRANGE = 0x019B,
LB_SETANCHORINDEX = 0x019C,
LB_GETANCHORINDEX = 0x019D,
LB_SETCARETINDEX = 0x019E,
LB_GETCARETINDEX = 0x019F,
LB_SETITEMHEIGHT = 0x01A0,
LB_GETITEMHEIGHT = 0x01A1,
LB_FINDSTRINGEXACT = 0x01A2,
LB_SETLOCALE = 0x01A5,
LB_GETLOCALE = 0x01A6,
LB_SETCOUNT = 0x01A7,
LB_INITSTORAGE = 0x01A8,
LB_ITEMFROMPOINT = 0x01A9,
LB_MULTIPLEADDSTRING = 0x01B1,
LB_GETLISTBOXINFO= 0x01B2,
LB_MSGMAX_501 = 0x01B3,
LB_MSGMAX_WCE4 = 0x01B1,
LB_MSGMAX_4 = 0x01B0,
LB_MSGMAX_PRE4 = 0x01A8,
CB_GETEDITSEL = 0x0140,
CB_LIMITTEXT = 0x0141,
CB_SETEDITSEL = 0x0142,
CB_ADDSTRING = 0x0143,
CB_DELETESTRING = 0x0144,
CB_DIR = 0x0145,
CB_GETCOUNT = 0x0146,
CB_GETCURSEL = 0x0147,
CB_GETLBTEXT = 0x0148,
CB_GETLBTEXTLEN = 0x0149,
CB_INSERTSTRING = 0x014A,
CB_RESETCONTENT = 0x014B,
CB_FINDSTRING = 0x014C,
CB_SELECTSTRING = 0x014D,
CB_SETCURSEL = 0x014E,
CB_SHOWDROPDOWN = 0x014F,
CB_GETITEMDATA = 0x0150,
CB_SETITEMDATA = 0x0151,
CB_GETDROPPEDCONTROLRECT = 0x0152,
CB_SETITEMHEIGHT = 0x0153,
CB_GETITEMHEIGHT = 0x0154,
CB_SETEXTENDEDUI = 0x0155,
CB_GETEXTENDEDUI = 0x0156,
CB_GETDROPPEDSTATE = 0x0157,
CB_FINDSTRINGEXACT = 0x0158,
CB_SETLOCALE = 0x0159,
CB_GETLOCALE = 0x015A,
CB_GETTOPINDEX = 0x015B,
CB_SETTOPINDEX = 0x015C,
CB_GETHORIZONTALEXTENT = 0x015d,
CB_SETHORIZONTALEXTENT = 0x015e,
CB_GETDROPPEDWIDTH = 0x015f,
CB_SETDROPPEDWIDTH = 0x0160,
CB_INITSTORAGE = 0x0161,
CB_MULTIPLEADDSTRING = 0x0163,
CB_GETCOMBOBOXINFO = 0x0164,
CB_MSGMAX_501 = 0x0165,
CB_MSGMAX_WCE400 = 0x0163,
CB_MSGMAX_400 = 0x0162,
CB_MSGMAX_PRE400 = 0x015B,
SBM_SETPOS = 0x00E0,
SBM_GETPOS = 0x00E1,
SBM_SETRANGE = 0x00E2,
SBM_SETRANGEREDRAW = 0x00E6,
SBM_GETRANGE = 0x00E3,
SBM_ENABLE_ARROWS = 0x00E4,
SBM_SETSCROLLINFO = 0x00E9,
SBM_GETSCROLLINFO = 0x00EA,
SBM_GETSCROLLBARINFO= 0x00EB,
LVM_FIRST = 0x1000,// ListView messages
TV_FIRST = 0x1100,// TreeView messages
HDM_FIRST = 0x1200,// Header messages
TCM_FIRST = 0x1300,// Tab control messages
PGM_FIRST = 0x1400,// Pager control messages
ECM_FIRST = 0x1500,// Edit control messages
BCM_FIRST = 0x1600,// Button control messages
CBM_FIRST = 0x1700,// Combobox control messages
CCM_FIRST = 0x2000,// Common control shared messages
CCM_LAST =(CCM_FIRST + 0x200),
CCM_SETBKCOLOR = (CCM_FIRST + 1),
CCM_SETCOLORSCHEME = (CCM_FIRST + 2),
CCM_GETCOLORSCHEME = (CCM_FIRST + 3),
CCM_GETDROPTARGET = (CCM_FIRST + 4),
CCM_SETUNICODEFORMAT = (CCM_FIRST + 5),
CCM_GETUNICODEFORMAT = (CCM_FIRST + 6),
CCM_SETVERSION = (CCM_FIRST + 0x7),
CCM_GETVERSION = (CCM_FIRST + 0x8),
CCM_SETNOTIFYWINDOW = (CCM_FIRST + 0x9),
CCM_SETWINDOWTHEME = (CCM_FIRST + 0xb),
CCM_DPISCALE = (CCM_FIRST + 0xc),
HDM_GETITEMCOUNT = (HDM_FIRST + 0),
HDM_INSERTITEMA = (HDM_FIRST + 1),
HDM_INSERTITEMW = (HDM_FIRST + 10),
HDM_DELETEITEM = (HDM_FIRST + 2),
HDM_GETITEMA = (HDM_FIRST + 3),
HDM_GETITEMW = (HDM_FIRST + 11),
HDM_SETITEMA = (HDM_FIRST + 4),
HDM_SETITEMW = (HDM_FIRST + 12),
HDM_LAYOUT = (HDM_FIRST + 5),
HDM_HITTEST = (HDM_FIRST + 6),
HDM_GETITEMRECT = (HDM_FIRST + 7),
HDM_SETIMAGELIST = (HDM_FIRST + 8),
HDM_GETIMAGELIST = (HDM_FIRST + 9),
HDM_ORDERTOINDEX = (HDM_FIRST + 15),
HDM_CREATEDRAGIMAGE = (HDM_FIRST + 16),
HDM_GETORDERARRAY = (HDM_FIRST + 17),
HDM_SETORDERARRAY = (HDM_FIRST + 18),
HDM_SETHOTDIVIDER = (HDM_FIRST + 19),
HDM_SETBITMAPMARGIN = (HDM_FIRST + 20),
HDM_GETBITMAPMARGIN = (HDM_FIRST + 21),
HDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
HDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
HDM_SETFILTERCHANGETIMEOUT = (HDM_FIRST+22),
HDM_EDITFILTER = (HDM_FIRST+23),
HDM_CLEARFILTER = (HDM_FIRST+24),
TB_ENABLEBUTTON = (WM_USER + 1),
TB_CHECKBUTTON = (WM_USER + 2),
TB_PRESSBUTTON = (WM_USER + 3),
TB_HIDEBUTTON = (WM_USER + 4),
TB_INDETERMINATE = (WM_USER + 5),
TB_MARKBUTTON = (WM_USER + 6),
TB_ISBUTTONENABLED = (WM_USER + 9),
TB_ISBUTTONCHECKED = (WM_USER + 10),
TB_ISBUTTONPRESSED = (WM_USER + 11),
TB_ISBUTTONHIDDEN = (WM_USER + 12),
TB_ISBUTTONINDETERMINATE = (WM_USER + 13),
TB_ISBUTTONHIGHLIGHTED = (WM_USER + 14),
TB_SETSTATE = (WM_USER + 17),
TB_GETSTATE = (WM_USER + 18),
TB_ADDBITMAP = (WM_USER + 19),
TB_ADDBUTTONSA = (WM_USER + 20),
TB_INSERTBUTTONA = (WM_USER + 21),
TB_ADDBUTTONS = (WM_USER + 20),
TB_INSERTBUTTON = (WM_USER + 21),
TB_DELETEBUTTON = (WM_USER + 22),
TB_GETBUTTON = (WM_USER + 23),
TB_BUTTONCOUNT = (WM_USER + 24),
TB_COMMANDTOINDEX = (WM_USER + 25),
TB_SAVERESTOREA = (WM_USER + 26),
TB_SAVERESTOREW = (WM_USER + 76),
TB_CUSTOMIZE = (WM_USER + 27),
TB_ADDSTRINGA = (WM_USER + 28),
TB_ADDSTRINGW = (WM_USER + 77),
TB_GETITEMRECT = (WM_USER + 29),
TB_BUTTONSTRUCTSIZE = (WM_USER + 30),
TB_SETBUTTONSIZE = (WM_USER + 31),
TB_SETBITMAPSIZE = (WM_USER + 32),
TB_AUTOSIZE = (WM_USER + 33),
TB_GETTOOLTIPS = (WM_USER + 35),
TB_SETTOOLTIPS = (WM_USER + 36),
TB_SETPARENT = (WM_USER + 37),
TB_SETROWS = (WM_USER + 39),
TB_GETROWS = (WM_USER + 40),
TB_SETCMDID = (WM_USER + 42),
TB_CHANGEBITMAP = (WM_USER + 43),
TB_GETBITMAP = (WM_USER + 44),
TB_GETBUTTONTEXTA = (WM_USER + 45),
TB_GETBUTTONTEXTW = (WM_USER + 75),
TB_REPLACEBITMAP = (WM_USER + 46),
TB_SETINDENT = (WM_USER + 47),
TB_SETIMAGELIST = (WM_USER + 48),
TB_GETIMAGELIST = (WM_USER + 49),
TB_LOADIMAGES = (WM_USER + 50),
TB_GETRECT = (WM_USER + 51),
TB_SETHOTIMAGELIST = (WM_USER + 52),
TB_GETHOTIMAGELIST = (WM_USER + 53),
TB_SETDISABLEDIMAGELIST = (WM_USER + 54),
TB_GETDISABLEDIMAGELIST = (WM_USER + 55),
TB_SETSTYLE = (WM_USER + 56),
TB_GETSTYLE = (WM_USER + 57),
TB_GETBUTTONSIZE = (WM_USER + 58),
TB_SETBUTTONWIDTH = (WM_USER + 59),
TB_SETMAXTEXTROWS = (WM_USER + 60),
TB_GETTEXTROWS = (WM_USER + 61),
TB_GETOBJECT = (WM_USER + 62),
TB_GETHOTITEM = (WM_USER + 71),
TB_SETHOTITEM = (WM_USER + 72),
TB_SETANCHORHIGHLIGHT = (WM_USER + 73),
TB_GETANCHORHIGHLIGHT = (WM_USER + 74),
TB_MAPACCELERATORA = (WM_USER + 78),
TB_GETINSERTMARK = (WM_USER + 79),
TB_SETINSERTMARK = (WM_USER + 80),
TB_INSERTMARKHITTEST = (WM_USER + 81),
TB_MOVEBUTTON = (WM_USER + 82),
TB_GETMAXSIZE = (WM_USER + 83),
TB_SETEXTENDEDSTYLE = (WM_USER + 84),
TB_GETEXTENDEDSTYLE = (WM_USER + 85),
TB_GETPADDING = (WM_USER + 86),
TB_SETPADDING = (WM_USER + 87),
TB_SETINSERTMARKCOLOR = (WM_USER + 88),
TB_GETINSERTMARKCOLOR = (WM_USER + 89),
TB_SETCOLORSCHEME = CCM_SETCOLORSCHEME,
TB_GETCOLORSCHEME = CCM_GETCOLORSCHEME,
TB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
TB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
TB_MAPACCELERATORW = (WM_USER + 90),
TB_GETBITMAPFLAGS = (WM_USER + 41),
TB_GETBUTTONINFOW = (WM_USER + 63),
TB_SETBUTTONINFOW = (WM_USER + 64),
TB_GETBUTTONINFOA = (WM_USER + 65),
TB_SETBUTTONINFOA = (WM_USER + 66),
TB_INSERTBUTTONW = (WM_USER + 67),
TB_ADDBUTTONSW = (WM_USER + 68),
TB_HITTEST = (WM_USER + 69),
TB_SETDRAWTEXTFLAGS = (WM_USER + 70),
TB_GETSTRINGW = (WM_USER + 91),
TB_GETSTRINGA = (WM_USER + 92),
TB_GETMETRICS = (WM_USER + 101),
TB_SETMETRICS = (WM_USER + 102),
TB_SETWINDOWTHEME = CCM_SETWINDOWTHEME,
RB_INSERTBANDA = (WM_USER + 1),
RB_DELETEBAND = (WM_USER + 2),
RB_GETBARINFO = (WM_USER + 3),
RB_SETBARINFO = (WM_USER + 4),
RB_GETBANDINFO = (WM_USER + 5),
RB_SETBANDINFOA = (WM_USER + 6),
RB_SETPARENT = (WM_USER + 7),
RB_HITTEST = (WM_USER + 8),
RB_GETRECT = (WM_USER + 9),
RB_INSERTBANDW = (WM_USER + 10),
RB_SETBANDINFOW = (WM_USER + 11),
RB_GETBANDCOUNT = (WM_USER + 12),
RB_GETROWCOUNT = (WM_USER + 13),
RB_GETROWHEIGHT = (WM_USER + 14),
RB_IDTOINDEX = (WM_USER + 16),
RB_GETTOOLTIPS = (WM_USER + 17),
RB_SETTOOLTIPS = (WM_USER + 18),
RB_SETBKCOLOR = (WM_USER + 19),
RB_GETBKCOLOR = (WM_USER + 20),
RB_SETTEXTCOLOR = (WM_USER + 21),
RB_GETTEXTCOLOR = (WM_USER + 22),
RB_SIZETORECT = (WM_USER + 23),
RB_SETCOLORSCHEME = CCM_SETCOLORSCHEME,
RB_GETCOLORSCHEME = CCM_GETCOLORSCHEME,
RB_BEGINDRAG = (WM_USER + 24),
RB_ENDDRAG = (WM_USER + 25),
RB_DRAGMOVE = (WM_USER + 26),
RB_GETBARHEIGHT = (WM_USER + 27),
RB_GETBANDINFOW = (WM_USER + 28),
RB_GETBANDINFOA = (WM_USER + 29),
RB_MINIMIZEBAND = (WM_USER + 30),
RB_MAXIMIZEBAND = (WM_USER + 31),
RB_GETDROPTARGET = (CCM_GETDROPTARGET),
RB_GETBANDBORDERS = (WM_USER + 34),
RB_SHOWBAND = (WM_USER + 35),
RB_SETPALETTE = (WM_USER + 37),
RB_GETPALETTE = (WM_USER + 38),
RB_MOVEBAND = (WM_USER + 39),
RB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
RB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
RB_GETBANDMARGINS = (WM_USER + 40),
RB_SETWINDOWTHEME = CCM_SETWINDOWTHEME,
RB_PUSHCHEVRON = (WM_USER + 43),
TTM_ACTIVATE = (WM_USER + 1),
TTM_SETDELAYTIME = (WM_USER + 3),
TTM_ADDTOOLA = (WM_USER + 4),
TTM_ADDTOOLW = (WM_USER + 50),
TTM_DELTOOLA = (WM_USER + 5),
TTM_DELTOOLW = (WM_USER + 51),
TTM_NEWTOOLRECTA = (WM_USER + 6),
TTM_NEWTOOLRECTW = (WM_USER + 52),
TTM_RELAYEVENT = (WM_USER + 7),
TTM_GETTOOLINFOA = (WM_USER + 8),
TTM_GETTOOLINFOW = (WM_USER + 53),
TTM_SETTOOLINFOA = (WM_USER + 9),
TTM_SETTOOLINFOW = (WM_USER + 54),
TTM_HITTESTA = (WM_USER +10),
TTM_HITTESTW = (WM_USER +55),
TTM_GETTEXTA = (WM_USER +11),
TTM_GETTEXTW = (WM_USER +56),
TTM_UPDATETIPTEXTA = (WM_USER +12),
TTM_UPDATETIPTEXTW = (WM_USER +57),
TTM_GETTOOLCOUNT = (WM_USER +13),
TTM_ENUMTOOLSA = (WM_USER +14),
TTM_ENUMTOOLSW = (WM_USER +58),
TTM_GETCURRENTTOOLA = (WM_USER + 15),
TTM_GETCURRENTTOOLW = (WM_USER + 59),
TTM_WINDOWFROMPOINT = (WM_USER + 16),
TTM_TRACKACTIVATE = (WM_USER + 17),
TTM_TRACKPOSITION = (WM_USER + 18),
TTM_SETTIPBKCOLOR = (WM_USER + 19),
TTM_SETTIPTEXTCOLOR = (WM_USER + 20),
TTM_GETDELAYTIME = (WM_USER + 21),
TTM_GETTIPBKCOLOR = (WM_USER + 22),
TTM_GETTIPTEXTCOLOR = (WM_USER + 23),
TTM_SETMAXTIPWIDTH = (WM_USER + 24),
TTM_GETMAXTIPWIDTH = (WM_USER + 25),
TTM_SETMARGIN = (WM_USER + 26),
TTM_GETMARGIN = (WM_USER + 27),
TTM_POP = (WM_USER + 28),
TTM_UPDATE = (WM_USER + 29),
TTM_GETBUBBLESIZE = (WM_USER + 30),
TTM_ADJUSTRECT = (WM_USER + 31),
TTM_SETTITLEA = (WM_USER + 32),
TTM_SETTITLEW = (WM_USER + 33),
TTM_POPUP = (WM_USER + 34),
TTM_GETTITLE = (WM_USER + 35),
TTM_SETWINDOWTHEME = CCM_SETWINDOWTHEME,
SB_SETTEXTA = (WM_USER+1),
SB_SETTEXTW = (WM_USER+11),
SB_GETTEXTA = (WM_USER+2),
SB_GETTEXTW = (WM_USER+13),
SB_GETTEXTLENGTHA = (WM_USER+3),
SB_GETTEXTLENGTHW = (WM_USER+12),
SB_SETPARTS = (WM_USER+4),
SB_GETPARTS = (WM_USER+6),
SB_GETBORDERS = (WM_USER+7),
SB_SETMINHEIGHT = (WM_USER+8),
SB_SIMPLE = (WM_USER+9),
SB_GETRECT = (WM_USER+10),
SB_ISSIMPLE = (WM_USER+14),
SB_SETICON = (WM_USER+15),
SB_SETTIPTEXTA = (WM_USER+16),
SB_SETTIPTEXTW = (WM_USER+17),
SB_GETTIPTEXTA = (WM_USER+18),
SB_GETTIPTEXTW = (WM_USER+19),
SB_GETICON = (WM_USER+20),
SB_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
SB_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
SB_SETBKCOLOR = CCM_SETBKCOLOR,
SB_SIMPLEID = 0x00ff,
TBM_GETPOS = (WM_USER),
TBM_GETRANGEMIN = (WM_USER+1),
TBM_GETRANGEMAX = (WM_USER+2),
TBM_GETTIC = (WM_USER+3),
TBM_SETTIC = (WM_USER+4),
TBM_SETPOS = (WM_USER+5),
TBM_SETRANGE = (WM_USER+6),
TBM_SETRANGEMIN = (WM_USER+7),
TBM_SETRANGEMAX = (WM_USER+8),
TBM_CLEARTICS = (WM_USER+9),
TBM_SETSEL = (WM_USER+10),
TBM_SETSELSTART = (WM_USER+11),
TBM_SETSELEND = (WM_USER+12),
TBM_GETPTICS = (WM_USER+14),
TBM_GETTICPOS = (WM_USER+15),
TBM_GETNUMTICS = (WM_USER+16),
TBM_GETSELSTART = (WM_USER+17),
TBM_GETSELEND = (WM_USER+18),
TBM_CLEARSEL = (WM_USER+19),
TBM_SETTICFREQ = (WM_USER+20),
TBM_SETPAGESIZE = (WM_USER+21),
TBM_GETPAGESIZE = (WM_USER+22),
TBM_SETLINESIZE = (WM_USER+23),
TBM_GETLINESIZE = (WM_USER+24),
TBM_GETTHUMBRECT = (WM_USER+25),
TBM_GETCHANNELRECT = (WM_USER+26),
TBM_SETTHUMBLENGTH = (WM_USER+27),
TBM_GETTHUMBLENGTH = (WM_USER+28),
TBM_SETTOOLTIPS = (WM_USER+29),
TBM_GETTOOLTIPS = (WM_USER+30),
TBM_SETTIPSIDE = (WM_USER+31),
TBM_SETBUDDY = (WM_USER+32),
TBM_GETBUDDY = (WM_USER+33),
TBM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
TBM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
DL_BEGINDRAG = (WM_USER+133),
DL_DRAGGING = (WM_USER+134),
DL_DROPPED = (WM_USER+135),
DL_CANCELDRAG = (WM_USER+136),
UDM_SETRANGE = (WM_USER+101),
UDM_GETRANGE = (WM_USER+102),
UDM_SETPOS = (WM_USER+103),
UDM_GETPOS = (WM_USER+104),
UDM_SETBUDDY = (WM_USER+105),
UDM_GETBUDDY = (WM_USER+106),
UDM_SETACCEL = (WM_USER+107),
UDM_GETACCEL = (WM_USER+108),
UDM_SETBASE = (WM_USER+109),
UDM_GETBASE = (WM_USER+110),
UDM_SETRANGE32 = (WM_USER+111),
UDM_GETRANGE32 = (WM_USER+112),
UDM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
UDM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
UDM_SETPOS32 = (WM_USER+113),
UDM_GETPOS32 = (WM_USER+114),
PBM_SETRANGE = (WM_USER+1),
PBM_SETPOS = (WM_USER+2),
PBM_DELTAPOS = (WM_USER+3),
PBM_SETSTEP = (WM_USER+4),
PBM_STEPIT = (WM_USER+5),
PBM_SETRANGE32 = (WM_USER+6),
PBM_GETRANGE = (WM_USER+7),
PBM_GETPOS = (WM_USER+8),
PBM_SETBARCOLOR = (WM_USER+9),
PBM_SETBKCOLOR = CCM_SETBKCOLOR,
HKM_SETHOTKEY = (WM_USER+1),
HKM_GETHOTKEY = (WM_USER+2),
HKM_SETRULES = (WM_USER+3),
LVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
LVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
LVM_GETBKCOLOR = (LVM_FIRST + 0),
LVM_SETBKCOLOR = (LVM_FIRST + 1),
LVM_GETIMAGELIST = (LVM_FIRST + 2),
LVM_SETIMAGELIST = (LVM_FIRST + 3),
LVM_GETITEMCOUNT = (LVM_FIRST + 4),
LVM_GETITEMA = (LVM_FIRST + 5),
LVM_GETITEMW = (LVM_FIRST + 75),
LVM_SETITEMA = (LVM_FIRST + 6),
LVM_SETITEMW = (LVM_FIRST + 76),
LVM_INSERTITEMA = (LVM_FIRST + 7),
LVM_INSERTITEMW = (LVM_FIRST + 77),
LVM_DELETEITEM = (LVM_FIRST + 8),
LVM_DELETEALLITEMS = (LVM_FIRST + 9),
LVM_GETCALLBACKMASK = (LVM_FIRST + 10),
LVM_SETCALLBACKMASK = (LVM_FIRST + 11),
LVM_FINDITEMA = (LVM_FIRST + 13),
LVM_FINDITEMW = (LVM_FIRST + 83),
LVM_GETITEMRECT = (LVM_FIRST + 14),
LVM_SETITEMPOSITION = (LVM_FIRST + 15),
LVM_GETITEMPOSITION = (LVM_FIRST + 16),
LVM_GETSTRINGWIDTHA = (LVM_FIRST + 17),
LVM_GETSTRINGWIDTHW = (LVM_FIRST + 87),
LVM_HITTEST = (LVM_FIRST + 18),
LVM_ENSUREVISIBLE = (LVM_FIRST + 19),
LVM_SCROLL = (LVM_FIRST + 20),
LVM_REDRAWITEMS = (LVM_FIRST + 21),
LVM_ARRANGE = (LVM_FIRST + 22),
LVM_EDITLABELA = (LVM_FIRST + 23),
LVM_EDITLABELW = (LVM_FIRST + 118),
LVM_GETEDITCONTROL = (LVM_FIRST + 24),
LVM_GETCOLUMNA = (LVM_FIRST + 25),
LVM_GETCOLUMNW = (LVM_FIRST + 95),
LVM_SETCOLUMNA = (LVM_FIRST + 26),
LVM_SETCOLUMNW = (LVM_FIRST + 96),
LVM_INSERTCOLUMNA = (LVM_FIRST + 27),
LVM_INSERTCOLUMNW = (LVM_FIRST + 97),
LVM_DELETECOLUMN = (LVM_FIRST + 28),
LVM_GETCOLUMNWIDTH = (LVM_FIRST + 29),
LVM_SETCOLUMNWIDTH = (LVM_FIRST + 30),
LVM_CREATEDRAGIMAGE = (LVM_FIRST + 33),
LVM_GETVIEWRECT = (LVM_FIRST + 34),
LVM_GETTEXTCOLOR = (LVM_FIRST + 35),
LVM_SETTEXTCOLOR = (LVM_FIRST + 36),
LVM_GETTEXTBKCOLOR = (LVM_FIRST + 37),
LVM_SETTEXTBKCOLOR = (LVM_FIRST + 38),
LVM_GETTOPINDEX = (LVM_FIRST + 39),
LVM_GETCOUNTPERPAGE = (LVM_FIRST + 40),
LVM_GETORIGIN = (LVM_FIRST + 41),
LVM_UPDATE = (LVM_FIRST + 42),
LVM_SETITEMSTATE = (LVM_FIRST + 43),
LVM_GETITEMSTATE = (LVM_FIRST + 44),
LVM_GETITEMTEXTA = (LVM_FIRST + 45),
LVM_GETITEMTEXTW = (LVM_FIRST + 115),
LVM_SETITEMTEXTA = (LVM_FIRST + 46),
LVM_SETITEMTEXTW = (LVM_FIRST + 116),
LVM_SETITEMCOUNT = (LVM_FIRST + 47),
LVM_SORTITEMS = (LVM_FIRST + 48),
LVM_SETITEMPOSITION32 = (LVM_FIRST + 49),
LVM_GETSELECTEDCOUNT = (LVM_FIRST + 50),
LVM_GETITEMSPACING = (LVM_FIRST + 51),
LVM_GETISEARCHSTRINGA = (LVM_FIRST + 52),
LVM_GETISEARCHSTRINGW = (LVM_FIRST + 117),
LVM_SETICONSPACING = (LVM_FIRST + 53),
LVM_SETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 54),
LVM_GETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 55),
LVM_GETSUBITEMRECT = (LVM_FIRST + 56),
LVM_SUBITEMHITTEST = (LVM_FIRST + 57),
LVM_SETCOLUMNORDERARRAY = (LVM_FIRST + 58),
LVM_GETCOLUMNORDERARRAY = (LVM_FIRST + 59),
LVM_SETHOTITEM = (LVM_FIRST + 60),
LVM_GETHOTITEM = (LVM_FIRST + 61),
LVM_SETHOTCURSOR = (LVM_FIRST + 62),
LVM_GETHOTCURSOR = (LVM_FIRST + 63),
LVM_APPROXIMATEVIEWRECT = (LVM_FIRST + 64),
LVM_SETWORKAREAS = (LVM_FIRST + 65),
LVM_GETWORKAREAS = (LVM_FIRST + 70),
LVM_GETNUMBEROFWORKAREAS = (LVM_FIRST + 73),
LVM_GETSELECTIONMARK = (LVM_FIRST + 66),
LVM_SETSELECTIONMARK = (LVM_FIRST + 67),
LVM_SETHOVERTIME = (LVM_FIRST + 71),
LVM_GETHOVERTIME = (LVM_FIRST + 72),
LVM_SETTOOLTIPS = (LVM_FIRST + 74),
LVM_GETTOOLTIPS = (LVM_FIRST + 78),
LVM_SORTITEMSEX = (LVM_FIRST + 81),
LVM_SETBKIMAGEA = (LVM_FIRST + 68),
LVM_SETBKIMAGEW = (LVM_FIRST + 138),
LVM_GETBKIMAGEA = (LVM_FIRST + 69),
LVM_GETBKIMAGEW = (LVM_FIRST + 139),
LVM_SETSELECTEDCOLUMN = (LVM_FIRST + 140),
LVM_SETTILEWIDTH = (LVM_FIRST + 141),
LVM_SETVIEW = (LVM_FIRST + 142),
LVM_GETVIEW = (LVM_FIRST + 143),
LVM_INSERTGROUP = (LVM_FIRST + 145),
LVM_SETGROUPINFO = (LVM_FIRST + 147),
LVM_GETGROUPINFO = (LVM_FIRST + 149),
LVM_REMOVEGROUP = (LVM_FIRST + 150),
LVM_MOVEGROUP = (LVM_FIRST + 151),
LVM_MOVEITEMTOGROUP = (LVM_FIRST + 154),
LVM_SETGROUPMETRICS = (LVM_FIRST + 155),
LVM_GETGROUPMETRICS = (LVM_FIRST + 156),
LVM_ENABLEGROUPVIEW = (LVM_FIRST + 157),
LVM_SORTGROUPS = (LVM_FIRST + 158),
LVM_INSERTGROUPSORTED = (LVM_FIRST + 159),
LVM_REMOVEALLGROUPS = (LVM_FIRST + 160),
LVM_HASGROUP = (LVM_FIRST + 161),
LVM_SETTILEVIEWINFO = (LVM_FIRST + 162),
LVM_GETTILEVIEWINFO = (LVM_FIRST + 163),
LVM_SETTILEINFO = (LVM_FIRST + 164),
LVM_GETTILEINFO = (LVM_FIRST + 165),
LVM_SETINSERTMARK = (LVM_FIRST + 166),
LVM_GETINSERTMARK = (LVM_FIRST + 167),
LVM_INSERTMARKHITTEST = (LVM_FIRST + 168),
LVM_GETINSERTMARKRECT = (LVM_FIRST + 169),
LVM_SETINSERTMARKCOLOR = (LVM_FIRST + 170),
LVM_GETINSERTMARKCOLOR = (LVM_FIRST + 171),
LVM_SETINFOTIP = (LVM_FIRST + 173),
LVM_GETSELECTEDCOLUMN = (LVM_FIRST + 174),
LVM_ISGROUPVIEWENABLED = (LVM_FIRST + 175),
LVM_GETOUTLINECOLOR = (LVM_FIRST + 176),
LVM_SETOUTLINECOLOR = (LVM_FIRST + 177),
LVM_CANCELEDITLABEL = (LVM_FIRST + 179),
LVM_MAPINDEXTOID = (LVM_FIRST + 180),
LVM_MAPIDTOINDEX = (LVM_FIRST + 181),
TVM_INSERTITEMA = (TV_FIRST + 0),
TVM_INSERTITEMW = (TV_FIRST + 50),
TVM_DELETEITEM = (TV_FIRST + 1),
TVM_EXPAND = (TV_FIRST + 2),
TVM_GETITEMRECT = (TV_FIRST + 4),
TVM_GETCOUNT = (TV_FIRST + 5),
TVM_GETINDENT = (TV_FIRST + 6),
TVM_SETINDENT = (TV_FIRST + 7),
TVM_GETIMAGELIST = (TV_FIRST + 8),
TVM_SETIMAGELIST = (TV_FIRST + 9),
TVM_GETNEXTITEM = (TV_FIRST + 10),
TVM_SELECTITEM = (TV_FIRST + 11),
TVM_GETITEMA = (TV_FIRST + 12),
TVM_GETITEMW = (TV_FIRST + 62),
TVM_SETITEMA = (TV_FIRST + 13),
TVM_SETITEMW = (TV_FIRST + 63),
TVM_EDITLABELA = (TV_FIRST + 14),
TVM_EDITLABELW = (TV_FIRST + 65),
TVM_GETEDITCONTROL = (TV_FIRST + 15),
TVM_GETVISIBLECOUNT = (TV_FIRST + 16),
TVM_HITTEST = (TV_FIRST + 17),
TVM_CREATEDRAGIMAGE = (TV_FIRST + 18),
TVM_SORTCHILDREN = (TV_FIRST + 19),
TVM_ENSUREVISIBLE = (TV_FIRST + 20),
TVM_SORTCHILDRENCB = (TV_FIRST + 21),
TVM_ENDEDITLABELNOW = (TV_FIRST + 22),
TVM_GETISEARCHSTRINGA = (TV_FIRST + 23),
TVM_GETISEARCHSTRINGW = (TV_FIRST + 64),
TVM_SETTOOLTIPS = (TV_FIRST + 24),
TVM_GETTOOLTIPS = (TV_FIRST + 25),
TVM_SETINSERTMARK = (TV_FIRST + 26),
TVM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
TVM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
TVM_SETITEMHEIGHT = (TV_FIRST + 27),
TVM_GETITEMHEIGHT = (TV_FIRST + 28),
TVM_SETBKCOLOR = (TV_FIRST + 29),
TVM_SETTEXTCOLOR = (TV_FIRST + 30),
TVM_GETBKCOLOR = (TV_FIRST + 31),
TVM_GETTEXTCOLOR = (TV_FIRST + 32),
TVM_SETSCROLLTIME = (TV_FIRST + 33),
TVM_GETSCROLLTIME = (TV_FIRST + 34),
TVM_SETINSERTMARKCOLOR = (TV_FIRST + 37),
TVM_GETINSERTMARKCOLOR = (TV_FIRST + 38),
TVM_GETITEMSTATE = (TV_FIRST + 39),
TVM_SETLINECOLOR = (TV_FIRST + 40),
TVM_GETLINECOLOR = (TV_FIRST + 41),
TVM_MAPACCIDTOHTREEITEM = (TV_FIRST + 42),
TVM_MAPHTREEITEMTOACCID = (TV_FIRST + 43),
CBEM_INSERTITEMA = (WM_USER + 1),
CBEM_SETIMAGELIST = (WM_USER + 2),
CBEM_GETIMAGELIST = (WM_USER + 3),
CBEM_GETITEMA = (WM_USER + 4),
CBEM_SETITEMA = (WM_USER + 5),
CBEM_DELETEITEM = CB_DELETESTRING,
CBEM_GETCOMBOCONTROL = (WM_USER + 6),
CBEM_GETEDITCONTROL = (WM_USER + 7),
CBEM_SETEXTENDEDSTYLE = (WM_USER + 14),
CBEM_GETEXTENDEDSTYLE = (WM_USER + 9),
CBEM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
CBEM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
CBEM_SETEXSTYLE = (WM_USER + 8),
CBEM_GETEXSTYLE = (WM_USER + 9),
CBEM_HASEDITCHANGED = (WM_USER + 10),
CBEM_INSERTITEMW = (WM_USER + 11),
CBEM_SETITEMW = (WM_USER + 12),
CBEM_GETITEMW = (WM_USER + 13),
TCM_GETIMAGELIST = (TCM_FIRST + 2),
TCM_SETIMAGELIST = (TCM_FIRST + 3),
TCM_GETITEMCOUNT = (TCM_FIRST + 4),
TCM_GETITEMA = (TCM_FIRST + 5),
TCM_GETITEMW = (TCM_FIRST + 60),
TCM_SETITEMA = (TCM_FIRST + 6),
TCM_SETITEMW = (TCM_FIRST + 61),
TCM_INSERTITEMA = (TCM_FIRST + 7),
TCM_INSERTITEMW = (TCM_FIRST + 62),
TCM_DELETEITEM = (TCM_FIRST + 8),
TCM_DELETEALLITEMS = (TCM_FIRST + 9),
TCM_GETITEMRECT = (TCM_FIRST + 10),
TCM_GETCURSEL = (TCM_FIRST + 11),
TCM_SETCURSEL = (TCM_FIRST + 12),
TCM_HITTEST = (TCM_FIRST + 13),
TCM_SETITEMEXTRA = (TCM_FIRST + 14),
TCM_ADJUSTRECT = (TCM_FIRST + 40),
TCM_SETITEMSIZE = (TCM_FIRST + 41),
TCM_REMOVEIMAGE = (TCM_FIRST + 42),
TCM_SETPADDING = (TCM_FIRST + 43),
TCM_GETROWCOUNT = (TCM_FIRST + 44),
TCM_GETTOOLTIPS = (TCM_FIRST + 45),
TCM_SETTOOLTIPS = (TCM_FIRST + 46),
TCM_GETCURFOCUS = (TCM_FIRST + 47),
TCM_SETCURFOCUS = (TCM_FIRST + 48),
TCM_SETMINTABWIDTH = (TCM_FIRST + 49),
TCM_DESELECTALL = (TCM_FIRST + 50),
TCM_HIGHLIGHTITEM = (TCM_FIRST + 51),
TCM_SETEXTENDEDSTYLE = (TCM_FIRST + 52),
TCM_GETEXTENDEDSTYLE = (TCM_FIRST + 53),
TCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
TCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
ACM_OPENA = (WM_USER+100),
ACM_OPENW = (WM_USER+103),
ACM_PLAY = (WM_USER+101),
ACM_STOP = (WM_USER+102),
MCM_FIRST = 0x1000,
MCM_GETCURSEL = (MCM_FIRST + 1),
MCM_SETCURSEL = (MCM_FIRST + 2),
MCM_GETMAXSELCOUNT = (MCM_FIRST + 3),
MCM_SETMAXSELCOUNT = (MCM_FIRST + 4),
MCM_GETSELRANGE = (MCM_FIRST + 5),
MCM_SETSELRANGE = (MCM_FIRST + 6),
MCM_GETMONTHRANGE = (MCM_FIRST + 7),
MCM_SETDAYSTATE = (MCM_FIRST + 8),
MCM_GETMINREQRECT = (MCM_FIRST + 9),
MCM_SETCOLOR = (MCM_FIRST + 10),
MCM_GETCOLOR = (MCM_FIRST + 11),
MCM_SETTODAY = (MCM_FIRST + 12),
MCM_GETTODAY = (MCM_FIRST + 13),
MCM_HITTEST = (MCM_FIRST + 14),
MCM_SETFIRSTDAYOFWEEK = (MCM_FIRST + 15),
MCM_GETFIRSTDAYOFWEEK = (MCM_FIRST + 16),
MCM_GETRANGE = (MCM_FIRST + 17),
MCM_SETRANGE = (MCM_FIRST + 18),
MCM_GETMONTHDELTA = (MCM_FIRST + 19),
MCM_SETMONTHDELTA = (MCM_FIRST + 20),
MCM_GETMAXTODAYWIDTH = (MCM_FIRST + 21),
MCM_SETUNICODEFORMAT = CCM_SETUNICODEFORMAT,
MCM_GETUNICODEFORMAT = CCM_GETUNICODEFORMAT,
DTM_FIRST = 0x1000,
DTM_GETSYSTEMTIME = (DTM_FIRST + 1),
DTM_SETSYSTEMTIME = (DTM_FIRST + 2),
DTM_GETRANGE = (DTM_FIRST + 3),
DTM_SETRANGE = (DTM_FIRST + 4),
DTM_SETFORMATA = (DTM_FIRST + 5),
DTM_SETFORMATW = (DTM_FIRST + 50),
DTM_SETMCCOLOR = (DTM_FIRST + 6),
DTM_GETMCCOLOR = (DTM_FIRST + 7),
DTM_GETMONTHCAL = (DTM_FIRST + 8),
DTM_SETMCFONT = (DTM_FIRST + 9),
DTM_GETMCFONT = (DTM_FIRST + 10),
PGM_SETCHILD = (PGM_FIRST + 1),
PGM_RECALCSIZE = (PGM_FIRST + 2),
PGM_FORWARDMOUSE = (PGM_FIRST + 3),
PGM_SETBKCOLOR = (PGM_FIRST + 4),
PGM_GETBKCOLOR = (PGM_FIRST + 5),
PGM_SETBORDER = (PGM_FIRST + 6),
PGM_GETBORDER = (PGM_FIRST + 7),
PGM_SETPOS = (PGM_FIRST + 8),
PGM_GETPOS = (PGM_FIRST + 9),
PGM_SETBUTTONSIZE = (PGM_FIRST + 10),
PGM_GETBUTTONSIZE = (PGM_FIRST + 11),
PGM_GETBUTTONSTATE = (PGM_FIRST + 12),
PGM_GETDROPTARGET = CCM_GETDROPTARGET,
BCM_GETIDEALSIZE = (BCM_FIRST + 0x0001),
BCM_SETIMAGELIST = (BCM_FIRST + 0x0002),
BCM_GETIMAGELIST = (BCM_FIRST + 0x0003),
BCM_SETTEXTMARGIN = (BCM_FIRST + 0x0004),
BCM_GETTEXTMARGIN = (BCM_FIRST + 0x0005),
EM_SETCUEBANNER = (ECM_FIRST + 1),
EM_GETCUEBANNER = (ECM_FIRST + 2),
EM_SHOWBALLOONTIP = (ECM_FIRST + 3),
EM_HIDEBALLOONTIP = (ECM_FIRST + 4),
CB_SETMINVISIBLE = (CBM_FIRST + 1),
CB_GETMINVISIBLE = (CBM_FIRST + 2),
LM_HITTEST = (WM_USER + 0x300),
LM_GETIDEALHEIGHT = (WM_USER + 0x301),
LM_SETITEM = (WM_USER + 0x302),
LM_GETITEM = (WM_USER + 0x303)
}
}

系统消息

消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型叫做TMsg,
  
  它在Windows单元中是这样声明的:
  type
  TMsg = packed record
  hwnd: HWND; / /窗口句柄
  message: UINT; / /消息常量标识符
  wParam: WPARAM ; // 32位消息的特定附加信息
  lParam: LPARAM ; // 32位消息的特定附加信息
  time: DWORD; / /消息创建时的时间
  pt: TPoint; / /消息创建时的鼠标位置
  end;
  
  消息中有什么?

  是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:
  hwnd 32位的窗口句柄。窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可视对象的句柄(窗口、对话框、按钮、编辑框等)。
  message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量。
  wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。
  lParam 通常是一个指向内存中数据的指针。由于W P a r a m、l P a r a m和P o i n t e r都是3 2位的,
  因此,它们之间可以相互转换。
  WM_NULL = $0000;
  WM_CREATE =$0001;
  应用程序创建一个窗口
  WM_DESTROY =$0002;
  一个窗口被销毁
  WM_MOVE =$0003;
  移动一个窗口
  WM_SIZE =$0005;
  改变一个窗口的大小
  WM_ACTIVATE =$0006;
  一个窗口被激活或失去激活状态;
  WM_SETFOCUS =$0007;
  获得焦点后
  WM_KILLFOCUS =$0008;
  失去焦点
  WM_ENABLE =$000A;
  改变enable状态
  WM_SETREDRAW =$000B;
  设置窗口是否能重画
  WM_SETTEXT =$000C;
  应用程序发送此消息来设置一个窗口的文本
  WM_GETTEXT =$000D;
  应用程序发送此消息来复制对应窗口的文本到缓冲区
  WM_GETTEXTLENGTH =$000E;
  得到与一个窗口有关的文本的长度(不包含空字符)
  WM_PAINT =$000F;
  要求一个窗口重画自己
  WM_CLOSE =$0010;
  当一个窗口或应用程序要关闭时发送一个信号
  WM_QUERYENDSESSION =$0011;
  当用户选择结束对话框或程序自己调用ExitWindows函数
  WM_QUIT =$0012;
  用来结束程序运行或当程序调用postquitmessage函数
  WM_QUERYOPEN =$0013;
  当用户窗口恢复以前的大小位置时,把此消息发送给某个图标
  WM_ERASEBKGND =$0014;
  当窗口背景必须被擦除时(例在窗口改变大小时)
  WM_SYSCOLORCHANGE =$0015;
  当系统颜色改变时,发送此消息给所有顶级窗口
  WM_ENDSESSION =$0016;
  当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序,
  通知它对话是否结束
  WM_SYSTEMERROR =$0017;
  WM_SHOWWINDOW =$0018;
  当隐藏或显示窗口是发送此消息给这个窗口
  WM_ACTIVATEAPP =$001C;
  发此消息给应用程序哪个窗口是激活的,哪个是非激活的;
  WM_FONTCHANGE =$001D;
  当系统的字体资源库变化时发送此消息给所有顶级窗口
  WM_TIMECHANGE =$001E;
  当系统的时间变化时发送此消息给所有顶级窗口
  WM_CANCELMODE =$001F;
  发送此消息来取消某种正在进行的摸态(操作)
  WM_SETCURSOR =$0020;
  如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发消息给某个窗口
  WM_MOUSEACTIVATE =$0021;
  当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口
  WM_CHILDACTIVATE =$0022;
  发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活,移动,改变大小
  WM_QUEUESYNC =$0023;
  此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的hook程序
  分离出用户输入消息
  WM_GETMINMAXINFO =$0024;
  此消息发送给窗口当它将要改变大小或位置;
  WM_PAINTICON =$0026;
  发送给最小化窗口当它图标将要被重画
  WM_ICONERASEBKGND =$0027;
  此消息发送给某个最小化窗口,仅当它在画图标前它的背景必须被重画
  WM_NEXTDLGCTL =$0028;
  发送此消息给一个对话框程序去更改焦点位置
  WM_SPOOLERSTATUS =$002A;
  每当打印管理列队增加或减少一条作业时发出此消息  
  WM_DRAWITEM =$002B;
 当button,combobox,listbox,menu的可视外观改变时发送
  此消息给这些空件的所有者
  WM_MEASUREITEM =$002C;
  当button, combo box, list box, list view control, or menu item 被创建时
  发送此消息给控件的所有者
  WM_DELETEITEM =$002D;
  当the list box 或 combo box 被销毁 或 当 某些项被删除通过LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 消息
  WM_VKEYTOITEM =$002E;
  此消息有一个LBS_WANTKEYBOARDINPUT风格的发出给它的所有者来响应WM_KEYDOWN消息
  WM_CHARTOITEM =$002F;
  此消息由一个LBS_WANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR消息
  WM_SETFONT =$0030;
  当绘制文本时程序发送此消息得到控件要用的颜色
  WM_GETFONT =$0031;
  应用程序发送此消息得到当前控件绘制文本的字体
  WM_SETHOTKEY =$0032;
  应用程序发送此消息让一个窗口与一个热键相关连
  WM_GETHOTKEY =$0033;
  应用程序发送此消息来判断热键与某个窗口是否有关联
  WM_QUERYDRAGICON =$0037;
  此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标,应用程序能返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标
  WM_COMPAREITEM =$0039;
  发送此消息来判定combobox或listbox新增加的项的相对位置
  WM_GETOBJECT =$003D;
  WM_COMPACTING =$0041;
  显示内存已经很少了
  WM_WINDOWPOSCHANGING =$0046;
  发送此消息给那个窗口的大小和位置将要被改变时,来调用setwindowpos函数或其它窗口管理函数
  WM_WINDOWPOSCHANGED =$0047;
  发送此消息给那个窗口的大小和位置已经被改变时,来调用setwindowpos函数或其它窗口管理函数
  WM_POWER =$0048;(适用于16位的windows)
  当系统将要进入暂停状态时发送此消息
  WM_COPYDATA =$004A;
  当一个应用程序传递数据给另一个应用程序时发送此消息
  WM_CANCELJOURNAL =$004B;
  当某个用户取消程序日志激活状态,提交此消息给程序
  WM_NOTIFY =$004E;
  当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口
  WM_INPUTLANGCHANGEREQUEST =$0050;
  当用户选择某种输入语言,或输入语言的热键改变
  WM_INPUTLANGCHANGE =$0051;
  当平台现场已经被改变后发送此消息给受影响的最顶级窗口
  WM_TCARD =$0052;
  当程序已经初始化windows帮助例程时发送此消息给应用程序
  WM_HELP =$0053;
  此消息显示用户按下了F1,如果某个菜单是激活的,就发送此消息个此窗口关联的菜单,否则就
  发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口
  WM_USERCHANGED =$0054;
  当用户已经登入或退出后发送此消息给所有的窗口,当用户登入或退出时系统更新用户的具体
  设置信息,在用户更新设置时系统马上发送此消息;
  WM_NOTIFYFORMAT =$0055;
  公用控件,自定义控件和他们的父窗口通过此消息来判断控件是使用ANSI还是UNICODE结构
  在WM_NOTIFY消息,使用此控件能使某个控件与它的父控件之间进行相互通信
  WM_CONTEXTMENU =$007B;
  当用户某个窗口中点击了一下右键就发送此消息给这个窗口
  WM_STYLECHANGING =$007C;
  当调用SETWINDOWLONG函数将要改变一个或多个 窗口的风格时发送此消息给那个窗口
  WM_STYLECHANGED =$007D;
  当调用SETWINDOWLONG函数一个或多个 窗口的风格后发送此消息给那个窗口
  WM_DISPLAYCHANGE =$007E;
  当显示器的分辨率改变后发送此消息给所有的窗口
  WM_GETICON =$007F;
  此消息发送给某个窗口来返回与某个窗口有关连的大图标或小图标的句柄;
  WM_SETICON =$0080;
  程序发送此消息让一个新的大图标或小图标与某个窗口关联;
  WM_NCCREATE =$0081;
  当某个窗口第一次被创建时,此消息在WM_CREATE消息发送前发送;
  WM_NCDESTROY =$0082;
  此消息通知某个窗口,非客户区正在销毁
  WM_NCCALCSIZE =$0083;
  当某个窗口的客户区域必须被核算时发送此消息
  WM_NCHITTEST =$0084;;
移动鼠标,按住或释放鼠标时发生
  WM_NCPAINT =$0085;
  程序发送此消息给某个窗口当它(窗口)的框架必须被绘制时;
  WM_NCACTIVATE =$0086;
  此消息发送给某个窗口 仅当它的非客户区需要被改变来显示是激活还是非激活状态;
  WM_GETDLGCODE =$0087;
  发送此消息给某个与对话框程序关联的控件,widdows控制

无边框窗体系统菜单

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace NoBorderForm
...{
public partial class NoBorder : Form
...{
[DllImport("user32.dll", EntryPoint = "GetWindowLong", CharSet = CharSet.Auto)]
public static extern int GetWindowLong(HandleRef hWnd, int nIndex);

[DllImport("user32.dll", EntryPoint = "SetWindowLong", CharSet = CharSet.Auto)]
public static extern IntPtr SetWindowLong(HandleRef hWnd, int nIndex, int dwNewLong);

public NoBorder()
...{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
...{
int WS_SYSMENU = 0x00080000;

this.FormBorderStyle = FormBorderStyle.None;

int windowLong = (GetWindowLong(new HandleRef(this, this.Handle), -16));
SetWindowLong(new HandleRef(this, this.Handle), -16, windowLong | WS_SYSMENU);
}
protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0010)
{//屏蔽关闭消息
this.Hide();
}
else
{
base.WndProc(ref m);
}
}
}
}

Trackback:http://blog.csdn.net/hbxtlhx/archive/2007/08/01/1721061.aspx

2008年1月15日星期二

webbrowser_external

using System.Windows.Forms;
using System.Security.Permissions;

[PermissionSet(SecurityAction.Demand, Name="FullTrust")]
[System.Runtime.InteropServices.ComVisibleAttribute(true)]

public class Form1 : Form
{
private WebBrowser webBrowser1 = new WebBrowser();
private Button button1 = new Button();

[STAThread]
public static void Main()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}

public Form1()
{
button1.Text = "call script code from client code";
button1.Dock = DockStyle.Top;
button1.Click += new EventHandler(button1_Click);
webBrowser1.Dock = DockStyle.Fill;
Controls.Add(webBrowser1);
Controls.Add(button1);
Load += new EventHandler(Form1_Load);
}

private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.AllowWebBrowserDrop = false;
webBrowser1.IsWebBrowserContextMenuEnabled = false;
webBrowser1.WebBrowserShortcutsEnabled = false;
webBrowser1.ObjectForScripting = this;
// Uncomment the following line when you are finished debugging.
//webBrowser1.ScriptErrorsSuppressed = true;

webBrowser1.DocumentText =
"<html><head><script>" +
"function test(message) { alert(message); }" +
"</script></head><body><button " +
"onclick=\"window.external.Test('called from script code')\">" +
"call client code from script code</button>" +
"</body></html>";
}

public void Test(String message)
{
MessageBox.Show(message, "client code");
}

private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Document.InvokeScript("test",
new String[] { "called from client code" });
}

}

2008年1月3日星期四

让你的.NET程序脱离Framework跑起来

摘自:
Mono虽好,可是他毕竟不是Microsoft .NET Framework,至少它的WinForms是采用了java里swing同样的方法,所以无论用户的主题多么漂亮,WinForm都是传统的Windows界面,作为桌面应用时就显得格格不入。

安装

但.NET核心文件并不多(相对而言,相比mono你会发现他很庞大)

我给出我的报告文件,看这个要比看那2mb的log轻松得多。

///////////////////////

files:

c:\windows\system32\mscoree.dll

c:\windows\system32\mscorier.dll

c:\windows\system32\mscories.dll

c:\windows\system32\dfshim.dll

c:\windows\system32\netfxperf.dll

这几个文件一定要放在system32下面

C:\windows\system32\mui\0409\mscoreer.dll

C:\windows\system32\mui\0409\mscorees.dll

我猜想mui下面其他版本的也是必须的

C:\WINDOWS\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089

c:\windows\assembly\gac_32\[others]

需要其他的组件也要添加,比如System.Windows.Forms

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorjit.dll

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\[others]

这个文件夹下面只需要mscorjit.dll mscorwks.dll两个文件就可以使console运作正常,其他的我还没试过

c:\windows\winsxs\Manifests\...

c:\windows\winsxs\policies\...

c:\windows\winsxs\...

winsxs下有很多重要的组件,版本也很繁杂。确保一个都不能少。这些文件支撑着mscorwks.dll,没有他,mscorwks也无法加载。

////////////////////////////

REG:

HKEY_CLASSES_ROOT\TypeLib\{BED7F4EA-1A96-11D2-8F08-00A0C9A6186D}

HKEY_CLASSES_ROOT\TypeLib\{BED7F4EA-1A96-11D2-8F08-00A0C9A6186D}\2.0 = REG_SZ, "mscorlib.dll"

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\InstallRoot = "REG_SZ,C:\WINDOWS\Microsoft.NET\Framework\"

  只要设置了安装位置,jit自己能找到相应的framework

  有了这些文件,你就能运行.net 2.0的程序了。当然这是最小要求。

  我提供这些文件清单不是想让你把他们弄到你客户的电脑里去,而是希望有人能做出像thinstall那样的虚拟环境供程序运行,那么提供thinstall那样的功能也就不是什么难事了。

.NET Framework时,他对你系统的改动还真不少,光是一个记录文件就有2mb。(在一个不带.net framework的winxp sp2虚拟机上安装.net framework 2.0得到)

让 .Net 程序 脱离 .net framework框架 运行(源代码实现说明)

前面介绍了 “让 .Net 程序 脱离 .net framework框架 运行的方法”,
该方法主要是利用了Fetion的框架来实现的,
今天我们要介绍的是不使用Fetion的框架,自己来实现Fetion框架的相关功能,
并给出相关实现代码。

关于Fetion框架它主要是有两个文件,FetionVM.exe和FetionVM.rsm。其中对于第二个文件,我们在介绍 native compile 保护的dotNet本地程序还原成dotNet IL程序集 时已经给出了其实现的源代码。

今回就给出 FetionVM.exe 功能实现的,近似代码。

首先使用 remote的试用版 创建一个demo 程序,然后对这个demo程序进行分析,分析发现它的 loader 实际使用是通过调用 rsdeploy.dll 导出的三个函数完成初始化工作,并把控制权转交到dotNet程序集。

这三个函数的原型定义:
typedef BOOL (WINAPI* pInitialize)(HMODULE h, LPCSTR szModule, LPCSTR szMainExe);
typedef BOOL (WINAPI* pReloc)(HMODULE hModule, PIMAGE_NT_HEADERS pNtHeader);
typedef BOOL (WINAPI* pResolveImportDLL)(HMODULE);

有朋友对此多有不满,删除完整实现代码,只对实现代码进行说明

首先是Load要运行的dotNet程序文件,得到HMODULE 句柄,在三个函数中都要用到了。
然后调用 Initialize函数,szModule 是 dotNet程序的文件名,szMainExe 当前执行文件的文件名。
再调用 Reloc 处理重定位表。pNtHeader 也是 dotNet程序在内存中加载后的 NtHeader。
然后 调用ResolveImport,处理导入的dll。
最后将jmp到 dotNet程序的入口,转移控制权。


另外我还发现了另外一种使用实现方法,就是上次提到的那个 dotNet加密壳的 vm unpacker,它也使用了remotesoft 的虚拟框架,但是它没有使用rsdeploy导出的那三个函数。

昨天上 ReTeam 的论坛看到这个 unpacker 更新了。下载回来研究了一下,对于其初始化 DotNetVM 的部分还没有细看,主要看了一下它对框架 hook 的变化,发现其在Jit层中的 Hook 位置移动了。好像是Hook了 emitter对象的一个成员函数,emitter对象是被 complie调用的,位置应该算比较深了,方法体重构方式没有变化。目前的加密壳核心似乎都无法逃过其Hook的拦截。
它拦截的位置比较深,DNGuard HVM标准版对其也没有检测,不过对于DNGuard HVM标准加密的程序集,其脱壳功能仍然无害。试用版的就不能幸免了。

目前对其使用 dotnetvm 的方法比较感兴趣了,简单的看了一下,它只是load了rsdeploy.dll。没有调用rsdeploy导出的三个函数。看起来好像是直接调用了mscorwks中的函数,有可能它自己实现了这三个函数的功能。
感兴趣的朋友可以一起来分析一下,有什么收获再跟大家分享。

引用:

2008年1月2日星期三

.NET资源列表

迅雷博客上的一些视频教程:
http://xiazhi33.blog.xunlei.com

MicroSoft The .Net Show
http://msdn.microsoft.com/theshow/default.aspx
相当不错的~

C#高级编程(第3版)在线看
http://www.51shuji.com/article/10/16176/index.html

关于API的
http://www.webtropy.com/articles/Win32-API-DllImport-art9.asp