LOWORD与HIWORD,GetEditSel与SetEditSel

来源:互联网 发布:怎样与淘宝买家联系 编辑:程序博客网 时间:2024/06/16 23:23

两个宏函数

LOWORD

定义:

#define HIWORD(I) ( ( WORD ) ( ( ( DWORD )( I ) <<16) & 0xFFFF ) )。

取低位的16位数据。

HIWORD

定义:

#define HIWORD(I) ( ( WORD ) ( ( ( DWORD )( I ) >>16) & 0xFFFF ) )。

取高位的16位数据。

其中有个问题,就是主机字节序的问题,不同的机器不同的主机字节序,大部分都是小头字节序,就是在内存地址n~m中,低位在n这边,高位在m这边

但是大头字节序正好与此相反。

举网上发现的一个例子:

DWORD dwT = 0x01010202;内存地址从 0~3中数值分别是:00000002 00000002 00000001 00000001你机器可能是大头字节序,和小头的相反:举个例子:DWORD dwT = 0x01010202;内存地址从 0~3中数值分别是:00000001 00000001 00000002 00000002这时你取高位和低位和你理解的可能正好相反可以自己测试下机器是大头还是小头:比如:WORD wT = 0x01*((BYTE*)&wT) == 0; //表示大头*((BYTE*)&wT) == 1; //表示小头

 

GetEditSel()是列表框(List Box)和组合框(Combo List)的成员函数(operation)(member function)

返回一个DWORD 类型的数据,高位和低位分别保存的结束和开始的位置。但是在使用的时候,大多数的作用是还得到光标的位置。

比如我们在Combo List的编辑框中输入一个字母'A',那么调用GetEditSel得到的DWORD CurSel=0x00010001; 

如果再输入个字母,CurSel = 0x00020002; 依次类推 这主要用在组合框的自动查询功能里

 

 

SetEditSel(int nStartChar, int nEndChar)也是列表框(List Box)和组合框(Combo List)的成员函数(operation)(member function)

功能是选择编辑控件里的字符(Selects characters in the edit control of a combo box)

其中若nStartChar = -1,msdn里说是:then any existing selection is removed。通过实验我的理解是:-1就是无限大,这个函数的效果就是把光标放到最后。

nEndChar = -1, 则相当于nEndChar 无限大,直到编辑控件里面的最后一个字符,就选择nStartChar开始的到后面的所有字符。

SetEditSel()后面最好不要用MssageBox();会影响SetEditSel()表现出来的效果。

举例:

选择编辑控件里有字符串: "Saturday"

   调用SetEditSel(1,-1);得到的结果就是 :此时的光标在'S'后面。

再次调用SetEditSel(-1,2);(nEndChar 随便填)得到的结果就是光标落到 ' y '后面。