#define MAKELONG(a, b) ((LONG)(((WORD)((DWORD_PTR)(a) & 0xffff)) | ((DWORD)((WORD)((DWORD_PTR)(b) & 0xffff))) << 16))
这个是windows sdk中的一个宏,
俺不太清楚这里(WORD)((DWORD_PTR)(a) & 0xffff)为啥要先转换成WORD,然后再转换成DWORD,
直接转换成DWORD会有啥问题吗.注: 俺比较笨,回答的朋友请讲详细点,最好有例子或可参考的资料,不要回"存在溢出问题"之类的简短回答
这个是windows sdk中的一个宏,
俺不太清楚这里(WORD)((DWORD_PTR)(a) & 0xffff)为啥要先转换成WORD,然后再转换成DWORD,
直接转换成DWORD会有啥问题吗.注: 俺比较笨,回答的朋友请讲详细点,最好有例子或可参考的资料,不要回"存在溢出问题"之类的简短回答
解决方案 »
- 怎样用高斯滤波对直方图进行平滑
- 关于Dialog背景颜色的问题
- 英文版XP下使用英文版VC界面出现乱码的问题
- ListCtrl 的选择可见问题
- ado获取数据库字段值函数GetCollect().date如何如何转换成为字符串
- 请问:exe调用dll时,传参数的问题!
- 请教如何像很多应用程序那样在一个TreeView里面显示我的电脑->各驱动器这样的Tree?
- 關於OnKeyDown的問題
- 我机器上有一些.swf的文件用Realplay播放声音出不来,那我该怎么才能播放.swf的文件呢?
- 求救,VC安装问题——在线等待
- vs2005在release下调试时提示错误的问题
- 急!连接EXCEL SQL语句带WHERE限制提示错误
(WORD)((DWORD_PTR)(a) & 0xffff))。超过了也把你阉了。
为啥呢?
因为LONG是4个字节,你传2个,一个高位的2个字节,一个低位的2个字节。WORD就是2个字节。明白了吧
俺的问题是: 为啥要先转换成WORD,然后再转换成DWORD,直接转换成DWORD会有啥问题吗.
俺的问题不是: 这个宏的作用是什么