忍者ブログ

神戸電子専門学校ゲームソフト学科の生徒が運営するGESのブログです。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

WindowsAPI講座【ウィンドウで遊ぼう編】 Part2

やぁやぁこんにちは、克兎さんです。

奥歯が痛いんだけど、これって、
噂に聞く虫歯ってやつでしょうか?

自分だけはならないと思ってたんだけどね~。
激甘だった。

噛むと痛いのよ噛むと、
力仕事できねーよ!

今日中に歯医者、行ってくるわん。

拍手[1回]


さて、今回は、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引数には再描画オプション
TRUEFALSEで指定します。

これがFALSEだと、ウィンドウが画面外へ出た時に、描画されていたものが消えてしまいます。
毎ループ描画するタイプのプログラムなら問題ありません。

今回は何も描画しませんのでFALSEにしておきます。

これで完成です。

簡単ねぇ(*´ω`)

これくらいなら、みんな知ってると思いますが、
これからやっていく上で、まぁ触れとくべきことなのでやりました!

一応ソースもアップしておきます。

最初にも書きましたが、
ウィンドウを自分で立てれる人は

自分なりの応用で実装してください。

そ~れ~で~は~(*´ω`)ノ
PR

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

ブログ内検索

最新コメント

[01/29 人面犬]
[10/01 8ch]
[09/12 uncle]
[09/10 某卒業生]
[06/07 uncle]

カレンダー

10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

テスト

Copyright ©  -- GESブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]