游戲操縱桿模擬鼠標的C++程序
}本文引用地址:http://dyxdggzs.com/article/148825.htm
//繼續傳遞消息
Tform::Dispatch(Message);
}
//自定義的MM_JOY1MOVE消息響應函數OnJoyDown
void __fastcall TForm1::OnJoyMove(Tmessage Message)
{
int x,y;
POINT pt;
//取得鼠標當前坐標
GetCursorPos(pt);
x=LOWORD(Message.Lparam);
y=HIWORD(Message.Lparam);
if(x!=32678)
{
if(x)
{
//向右
pt.x+=10;
}
else
{
//向左
pt.x-=10;
}
}
if(y!=32678)
{
if(y)
{
//向下
pt.y+=10;
}
else
{
//向上
pt.y-=10;
}
}
//設置鼠標坐標
SetCursorPos(pt.x,pt.y);
//繼續傳遞消息
Tform::Dispatch(Message);
}
注意:調試運行這個(gè)程序,系統必須要安裝有游戲操縱桿。自定義的消息處理函數末尾最好加一句 TForm1::Dispatch(Message),這條語(yǔ)句的作用是讓消息繼續傳遞下去。Windows是使用用消息處理機制的,如果沒(méi)有這一句語(yǔ)句,消息將完全被攔截,Windows程序可能由于得不到消息而無(wú)法實(shí)現正常的功能。
但是在C++ Builder中,這兩條消息并不是標準的Windows消息,這就需要我們自已定義和處理消息了。在C++ Builder里響應自定義消息的步驟為:
1.建立消息映射表
2.聲明消息處理函數
3.編寫(xiě)消息處理函數
首先在代碼編輯窗口點(diǎn)擊右鍵,選擇彈出菜單的“Open Source/Header File”或是按熱鍵Ctrl+F6,打開(kāi)窗體Form1頭文件“Uint1.h”。
在窗體的TForm1類(lèi)中的公有成員中加入代碼來(lái)建立消息映射表,把消息的處理權交給自定義的消息處理函數:
public:
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(MM_JOY1BUTTONDOWN,Tmessage,OnJoyDown)
MESSAGE_HANDLER(MM_JOY1MOVE,Tmessage,OnJoyMove)
END_MESSAGE_MAP(Tform)
然后在類(lèi)的私有成員中加入代碼聲明消息處理函數:
private:
void __fastcall OnJoyDown(Tmessage Message);
void __fastcall OnJoyMove(Tmessage Message);
最后,按Ctrl+F6鍵切換回“Uint1.cpp”的編輯窗口,在末尾空白處添加下面兩個(gè)自定義的消息響應函數:
//自定義的MM_JOY1BUTTONDOWN消息響應函數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)
{
//模擬鼠標左鍵抬起
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Caption=左鍵抬起;
}
if(Message.Wparam JOY_BUTTON4)
{
//模擬鼠標右鍵抬起
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
Caption=右鍵抬起;
c++相關(guān)文章:c++教程
評論