基于C++的游戲操縱桿模擬鼠標(biāo)的程序
捕獲游戲操縱桿后,Windows會(huì)把所有的操縱桿消息發(fā)送給窗口Form1。當(dāng)操縱桿的方向鈕按被按下時(shí),產(chǎn)生的是MM_JOY1MOVE消息,當(dāng)功能按鈕被按下時(shí),產(chǎn)生MM_JOY1BUTTONDOWN消息。在程序中分別響應(yīng)并處理這兩個(gè)消息,就可以模擬鼠標(biāo)的移動(dòng)和點(diǎn)擊。
但是在C++ Builder中,這兩條消息并不是標(biāo)準(zhǔn)的Windows消息,這就需要我們自已定義和處理消息了。在C++ Builder里響應(yīng)自定義消息的步驟為:
1.建立消息映射表
2.聲明消息處理函數(shù)
3.編寫(xiě)消息處理函數(shù)
首先在代碼編輯窗口點(diǎn)擊右鍵,選擇彈出菜單的“Open Source/Header File”或是按熱鍵Ctrl+F6,打開(kāi)窗體Form1頭文件“Uint1.h”。
在窗體的TForm1類中的公有成員中加入代碼來(lái)建立消息映射表,把消息的處理權(quán)交給自定義的消息處理函數(shù):
public:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(MM_JOY1BUTTONDOWN,Tmessage,OnJoyDown)
MESSAGE_HANDLER(MM_JOY1MOVE,Tmessage,OnJoyMove)
END_MESSAGE_MAP(Tform)
然后在類的私有成員中加入代碼聲明消息處理函數(shù):
private:
void __fastcall OnJoyDown(Tmessage Message);
void __fastcall OnJoyMove(Tmessage Message);
最后,按Ctrl+F6鍵切換回“Uint1.cpp”的編輯窗口,在末尾空白處添加下面兩個(gè)自定義的消息響應(yīng)函數(shù):
//自定義的MM_JOY1BUTTONDOWN消息響應(yīng)函數(shù)OnJoyDown
void __fastcall TForm1::OnJoyDown(Tmessage Message)
{
if(Message.Wparam JOY_BUTTON1)
{
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
Caption=左鍵按下;
}
if(Message.Wparam JOY_BUTTON2)
{
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
Caption=右鍵按下;
}
if(Message.Wparam JOY_BUTTON3)
{
//模擬鼠標(biāo)左鍵抬起
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Caption=左鍵抬起;
}
if(Message.Wparam JOY_BUTTON4)
{
//模擬鼠標(biāo)右鍵抬起
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
Caption=右鍵抬起;
評(píng)論