#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 注意螢幕中間的那一點不是世界空間的中心點,螢幕中間的...