消息处理函数返回值LRESULT数据类型转换成int类型
在《3D游戏引擎编程》中有两个这样的函数:
void* GetSelectedItem(HWND hWnd)
{
WPARAM wParam=(WPARAM)((int)(DWORD)SendMessage(hWnd,CB_GETCURSEL,0,0)); //返回ComboBox中的被选中项的索引
return ((void*)SendMessage(hWnd,CB_GETITEMDATA,wParam,0));
}
void AddItem(HWND hWnd,char *ch,void *pData)
{
WPARAM wParam=(WPARAM)((int)(DWORD)SendMessage(hWnd,CB_ADDSTRING,0,(LPARAM)ch));
SendMessage(hWnd,CB_SETITEMDATA,wParam,(LPARAM)pData);
}
SendMessage()函数的返回值是LRESULT,是32位数据类型,而int也是32位数据类型,为什么由LRESULT转换成int要先转换成DWORD?
如果是因为LRESULT是UINT_PTR,而DWORD是unsigned 32位?