2011-12-13 114 views
2

我使用的粗系統直接發送WM_MOUSEMOVE事件到閃存窗口來控制Flash電影從C++/Win32程序。WM_MOUSEMOVE - 包裝x和y位置

它非常適用一軸:

SendMessage(m_targetWindowHWND, WM_MOUSEMOVE, 0, xpos); 

不過我想現在發送x和y的值。我知道這些被壓縮成WM_MOUSEMOVEs lparam。在C++中,可以使用MAKEPOINTS或GET_X_LPARAM/GET_Y_LPARAM解壓縮。

但我怎麼收拾x和y,基本上是做上面的宏相反。

我的猜測:

DWORD packed = y << 8 + x; 

感謝

+0

它們是16位字,移位16. –

回答

5

你要找的宏MAKELPARAM

http://msdn.microsoft.com/en-us/library/windows/desktop/ms632661(v=vs.85).aspx

LPARAM WINAPI MAKELPARAM(
    WORD wLow, 
    WORD wHigh 
); 

我相信這是相當於MAKELONG(同樣的事情,但返回DWORD),但隨後又......也許有一個平臺,在那裏,其中一個LPARAM和DWORD了不同的定義。 : -/


編輯:顯然LPARAM(!和WPARAM)現今無論是引擎蓋下定義爲你的平臺上指針的大小。 「L」(long)和「W」(word)是歷史數據:What are the definitions for LPARAM and WPARAM?

+0

謝謝,不能相信我無法通過谷歌找到這個。 – sipi