首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 遊戲手柄程式開發——API 篇(一)中:被動模式 joySetCapture 訊息處理

     編輯:關於C語言

兩種開發模式

  • 主動模式:自行呼叫 joyGetPos/joyGetPosEx 輪詢狀態。
  • 被動模式:呼叫 joySetCapture 向系統申請捕捉,系統定時發送訊息通知。

本篇講解被動模式。

joySetCapture 定義

[DllImport("winmm.dll")]
public static extern int joySetCapture(IntPtr hWnd, int uJoyID, int uPeriod, bool fChanged);
  • hWnd:視窗控制代碼
  • uJoyID:手柄 ID (0-15),如 JOYSTICKID1/JOYSTICKID2
  • uPeriod:輪詢間隔 (毫秒)
  • fChanged:是否僅在移動一定距離後才通知

成功回傳 JOYERR_NOERROR (0),失敗回傳其他值。不需時呼叫 joyReleaseCapture 釋放。

系統發送訊息

JOYSTICKID1說明
MM_JOY1MOVE位置變動或按鈕按下
MM_JOY1BUTTONDOWNA/B/C/D 鍵按下
MM_JOY1BUTTONUPA/B/C/D 鍵彈起

JOYSTICKID2 對應 MM_JOY2MOVE、MM_JOY2BUTTONDOWN、MM_JOY2BUTTONUP。

注意:無論是否按鈕,系統皆定時發送 MM_JOYxMOVE。

按鍵判斷:WParam 與 LParam

  • WParam:儲存除方向鍵外所有按鈕的復合值(如 JOY_BUTTON1 | JOY_BUTTON2)。
  • LParam:儲存方向鍵座標(高 16 位 Y、低 16 位 X)。

不同訊息類型的按鍵值定義不同,需留意區分。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved