D3D滑鼠輸入處理

2021-05-09 12:07:52 字數 3031 閱讀 7693

#include

#include

#include

#pragma    comment(lib,"dxguid.lib")

#pragma    comment(lib,"dinput8.lib")

#pragma    comment(lib,"odbc32.lib")

#pragma    comment(lib,"odbccp32.lib")

//定義全域性變數

hinstance g_hinst;

hwnd g_hwnd;

const tchar g_szwndclass="game";

const tchar g_szwndtitle="directinput滑鼠輸入";

wndclas*** g_wcex;

extern long g_lmousemovex,g_lmousemovey;

//函式原型宣告

atom regwndclass(hinstance);

bool createwnd(hinstance, int);

lresult callback  wndproc(hwnd, uint, wparam, lparam);

extern bool initmouse();

extern void capturemouse();

extern bool islbuttonpressed();

extern bool isrbuttonpressed();

extern bool ismbuttonpressed();

extern void releasecomobject();

//函式定義

int apientry winmain(hinstance hinstance,       //傳入的視窗控制代碼

hinstance hprevinstance,   //已存在的視窗控制代碼

lpstr     lpcmdline,        //傳入的命令列引數

int       ncmdshow)         //設定視窗的顯示方式

msg msg;

hdc hdc;

point cur_point;  //滑鼠當前位置

g_hinst=hinstance;

if(!hprevinstance)

#define items_num 10  //緩衝區的陣列元素個數

lpdirectinput8 pidirectinput=null;

lpdirectinputdevice8 pidirectinputdevice=null;

dideviceobjectdata dideviceobjectdata[items_num];

long g_lmousemovex=0;  //滑鼠x軸的總移動量

long g_lmousemovey=0;  //滑鼠y軸的總移動量

bool initmouse();      //建立directinput滑鼠裝置

void capturemouse();   //讀取滑鼠輸入資料

bool islbuttonpressed();  //判斷滑鼠左鍵按下

bool isrbuttonpressed();  //判斷滑鼠右鍵按下

bool ismbuttonpressed();  //判斷滑鼠滾輪按下

void releasecomobject();

#include "handlemouse.h"

bool initmouse()

//滑鼠輸入裝置

hr=pidirectinput->createdevice(guid_sysmouse,&pidirectinputdevice,null);//guid_sysmouse

if(failed(hr))

//設定滑鼠裝置的資料格式

hr=pidirectinputdevice->setdataformat(&c_dfdimouse);

if(failed(hr))

//設定滑鼠裝置的協調級別

hr=pidirectinputdevice->setcooperativelevel(g_hwnd,discl_foreground|discl_nonexclusive);

if(failed(hr))

//設定滑鼠裝置的屬性(使用緩衝區讀資料)

dipropdword dipropword;

dipropword.diph.dwsize=sizeof(dipropdword);

dipropword.diph.dwheadersize=sizeof(dipropheader);

dipropword.diph.dwobj=0;

dipropword.diph.dwhow=diph_device;

dipropword.dwdata=items_num;  //#define items_num 10

if(failed(pidirectinputdevice->setproperty(diprop_buffersize,&dipropword.diph)))

//獲取滑鼠裝置的訪問權

hr=pidirectinputdevice->acquire();

if(failed(hr))

return true; }

void capturemouse()

} if(dideviceobjectdata[i].dwofs==dimofs_x)

if(dideviceobjectdata[i].dwofs==dimofs_y)

} }

//判斷滑鼠左鍵按下

bool islbuttonpressed()

} return false; }

//判斷滑鼠右鍵按下

bool isrbuttonpressed()

} return false; }

//判斷滑鼠滾輪按下

bool ismbuttonpressed()

} return false; }

void releasecomobject()

D3D 滑鼠拾取技術

d3d 滑鼠拾取技術對用directx編寫網路遊戲的愛好者,尤其是初學者來說是一項非常重要的藥掌握的技術。開始學寫遊戲時,它總是困擾著初學者.我這會兒剛完成了,寫點心得 新手分享 就說說思想,畢竟,有了思想,技術上很好實現.首先呢,我們可以通過獲得視窗上滑鼠的然後呢,將它轉化到世界矩陣裡.呵呵,這點...

D3D基本框架 即D3D標頭檔案分類

了dxut的結構 後,發現微軟程式設計師的編碼風格太深奧了。各種巨集定義 預編譯跳得頭暈,由於對於window api的不精通,導致寫出符合dxut風格的框架以現在的水平來看是不可能的。既然沒有弄通dxut,我也暫時不想套用了,那麼還是先自己用自己的框架來寫把。框架如下 雖然沒學會dxut,但是微軟...

d3d矩陣變換

1.d3d的繪製流水線 區域性座標系 模型空間 世界座標系 觀察座標系 背面消隱 光照 裁剪 投影 視口變化 光柵化 每個3d模型都有自己的空間,空間的中心 原點 就是模型的中心。世界空間就是物體 模型 存在的地方。世界的中心就是原點 0,0,0 注意螢幕中間的那一點不是世界空間的中心點,螢幕中間的...