さて、今回は、
dglibで実装する感じで、ウィンドウを動かしてみます。
仕様としては、
ウィンドウがマウスに追従するって感じです。
発展すればマウスストーカーなんかも作れそうです。
dglibの解説は必要ないかと思います。
dglibを卒業している人にも実装可能だと思うので、ぜひ自力でやってみてNE☆
まずは前準備です。
前回解説した部分も出てきます。
main.cpp
#define WINNAME "Katuusagi_Program"
:
:
HWND hWnd; //ウィンドウハンドル
POINT mPos; //マウスの座標
//ウィンドウの大きさとか初期設定
dg_setscreen( 100 , 100 , 200 , 200 , 0 , WINNAME );
// ↑
// 同じ文字列を引数として渡す
// ↓
hWnd = FindWindow( NULL , WINNAME ); //ウィンドウ名からウィンドウハンドルを取得
|
FindWindow関数でウィンドウハンドルを取得します。
この際、ウィンドウ名は
事前に定数化しておきましょう。
あと、ほかのプログラムとは
被らないような名前にしましょう。
暗号文などでもかまいません。
ウィンドウハンドルさえあれば
いつでも、ウィンドウ名を変えることができます。
次に、プログラムのメインループです。
main.cpp
//ゲームループ*************************************************************
do{
GetCursorPos( &mPos ); //マウスの座標取得
MoveWindow( hWnd , mPos.x - 100 , mPos.y - 100 ,
200 , 200 , FALSE ); //ウィンドウを動かす
ML(); //メッセージループ
}while( !getch3( 'E' ) );
|
関数の説明をします。
1,マウスの座標を取得
BOOL GetCursorPos(
LPPOINT lpPoint // カーソルの位置
);
2,ウィンドウの座標、大きさ、再描画オプションを変更する関数
BOOL MoveWindow(
HWND hWnd, // ウィンドウのハンドル
int X, // 横方向の位置
int Y, // 縦方向の位置
int nWidth, // 幅
int nHeight, // 高さ
BOOL bRepaint // 再描画オプション
);
GetCurorPos関数でマウスの座標を、POINT構造体に取り込みます。
MoveWindow関数によってその座標に移動させます。
MoveWindow関数の
第1引数は、
ウィンドウのハンドルです。
第2,3引数に、
座標を渡します。
第4,5引数には
大きさを指定します。
第6引数には
再描画オプションを
TRUEか
FALSEで指定します。
これがFALSEだと、ウィンドウが画面外へ出た時に、描画されていたものが消えてしまいます。
毎ループ描画するタイプのプログラムなら問題ありません。
今回は何も描画しませんのでFALSEにしておきます。
これで完成です。
簡単ねぇ(*´ω`)
これくらいなら、みんな知ってると思いますが、
これからやっていく上で、まぁ触れとくべきことなのでやりました!
一応
ソースもアップしておきます。
最初にも書きましたが、
ウィンドウを自分で立てれる人は
自分なりの応用で実装してください。
そ~れ~で~は~(*´ω`)ノ
PR
COMMENT