Windows中自带了字节拆分和组合的宏操作,可以方便的用于多字节的组合和单字节的组合。
- MAKELONG :将两个WORD类型的值组合成一个LONG类型的值。
- MAKEWORD:将两个BYTE类型的值组合成一个WORD类型的值。
- LOWORD:取LONG(DWORD)类型值的低16位作为一个WORD。
- HIWORD :取LONG(DWORD)类型值的高16位作为一个WORD。
- LOBYTE:取WORD类型值的低8位作为一个BYTE。
- HIBYTE :取WORD类型值的高8位作为一个BYTE。
实际应用
比如 GetSystemDefaultLangID() 函数的返回值为 LANGID 类型,LANGID 在 Winnt.h 中定义为 WORD 类型,LANGID 所表示的系统语言格式如下:
+------------------------+-----------------------------+
| 子语言(SubLanguage)ID | 主语言(Primary Language)ID |
+------------------------+-----------------------------+
15 10 9 0 bit
我们在用 GetSystemDefaultLangID() 判断操作系统语言类型时,只需要用LOBYTE取函数返回值的低8位作为主语言号进行判断即可。
switch(LOBYTE(GetSystemDefaultLangID()))
{
case LANG_CHINESE_SIMPLIFIED:
printf("简体中文");
break;
default:
printf("其他语言");
break;
}