2012-05-04 19 views
0

我正在製作遊戲窗口中的「拖動」動作。我想要在一個地方mouse_down,然後mouse_up另一個地方。僅當移動鼠標時,SendMessage模擬操作才起作用。有沒有辦法解決這個問題?

這裏的C#代碼:

uint Iparm = makeDWord((ushort)x, (ushort)y); 
IntPtr xd = new IntPtr(Iparm); 
uint Iparm2 = makeDWord((ushort)x2, (ushort)y2); 
IntPtr xd2 = new IntPtr(Iparm2); 

SendMessage(p, (uint)0x201, (IntPtr)0x1, xd); // down button (start x,y) 
SendMessage(p, (uint)0x202, (IntPtr)0x0, xd2); // up button (final x,y) 

我已經連接了按鈕的代碼在C#的形式(可以說按鈕和一個名爲START)。當我按START並繼續移動鼠標時,它完美地工作。但是當我只按START並等待操作(不移動光標在屏幕上)時,什麼都不會發生。我用spy ++檢查了遊戲窗口,同時按下了我的表單中的按鈕,兩種推動按鈕的方式(移動/不移動光標)沒有區別。

我忘了補充一點,而移動光標,行動發生,即使是最小化的窗口位置(什麼是非常酷)

是什麼導致我的問題? :P

編輯:

WM_MOUSEDOWN = 0x201; 
WM_MOUSEUP = 0x202; 

該代碼被放置在一個功能中,p是窗處理,按鈕START執行該功能。

正如我以前說過,而我移動光標

+0

請原諒我沒有記住所有的Windows消息。什麼是0x201和0x202?那些WM_MOUSEDOWN和WM_MOUSEUP?另外,你的程序中的代碼在哪裏?它在你的開始按鈕的按鈕處理程序中嗎?多一點上下文會有所幫助。 –

+0

編輯您需要的信息:P – Patryk

回答

0

嘗試在上下之間,並會調用SendMessageWM_MOUSEMOVE消息代碼工作就好了。

+0

我試過了,發生過同樣的事情,所以我刪除了它 – Patryk

0

改爲使用SendInput

+0

我可以用它來最小化窗口嗎?到指定的窗口? – Patryk

+0

嗯。好點子。我不確定你可以,實際上... –

相關問題