リソースファイル、その2。
メッセージの流れを勉強するはずの項目なのにリソースファイルでこってり時間をとられてる自分。
ダイアログボックスプロシージャを使ってのメッセージの流れをつかむプログラムをやったんですが――、
そもそもダイアログボックスが表示されない。
サンプルを見た限りソースの中身は同じ(本見ながらだからなあ
でリソースだよ、やっぱり。
#define MENU 100
これだ、これが原因だった。
リソースの方でマクロ展開されてた所為でうまく動いていなかったらしいのだ。
上の一文を消すか、プログラムのDialogBox()の中身をキャストするかで解決した。
結論
-----------------------------------------------------
//main.cpp
DialogBox( hInstance, (LPCSTR)MENU,
HWND_DESKTOP,
(DLGPROC)dlgProc);
-----------------------------------------------------
----------------------------------------------------- //Modal.rc MENU DIALOGEX 0, 0, 185, 115 -----------------------------------------------------
----------------------------------------------------- //resource.h #define MENU 100 -----------------------------------------------------
修正前は、
----------------------------------------------------- //main.cpp DialogBox( hInstance, "MENU", HWND_DESKTOP, (DLGPROC)dlgProc); -----------------------------------------------------
だった。
修正前の main.cpp のまま通したい場合は resource.h の一行を消せばすんなり実行される。
これに二、三時間かかりました。
リソースファイル。
リソースファイルを少し触りました。
WinAPIを少しずつ進めています。
で、メニューをつけるってことになりまして、例の本を頼りにプログラムを書いていたらメニューが表示されないので、ぐーぐる先生を頼ってみると、リソースファイルが必要だとか。
プログラム初心者の僕が読む本じゃないって事ですね、はい。
とりあえず――、
MENU MENU { POPUP "ファイル" { MENUITEM "描く", 40001 MENUITEM "消す", 40002 MENUITEM "終了", 40003 } }
リソースファイルにはこれ書きました。
@@@ MENU{
の@@@の部分書かなきゃダメなのに気づくまで10分かかったよ。
なんだかんだで。
時間が開いたけど、勉強しました。
といっても少しね。ページ数的には13ページほど。
今回やったこと、ウインドウの作り方? のようなもの。
主にメッセージの流れを勉強したらしい。
WNDCLASSEX の構造体で属性設定して、
RegisterClassEx(&〜) でウインドウクラス登録して、
CreateWindow でウインドウ作るって流れを一つ覚え。
WinMain の while 内では DispatchMessage などの処理を書き、ほかの詳細な動作は WndProc の方でやらせるようにするらしい、こと。
DispatchMessage で CALLBACK を呼び出すんだってことも勉強。
あとは DefWindowProc は大事だった! 書かないと動かないなあ。
最後にlp〜系はポインタだってことを今日初めて知る。
long point だったのね。
――ところで、ポインタってなんだろう。
プログラムはじめ。
これから先、就職にはぐれないためにプログラムを勉強しよう。
そこで怠惰な自分を矯正するためにその過程をメモしていこうと思うのです。
とりあえず、今日なんか本を買ってこようかと思います。