★原因は wc.hCursor を設定していなかった。
・ウィンドウクラスの登録 InitApp() 関数の構造体メンバ wc.hCursor にカーソルの
ハンドルをセットしていないのでウインドウが正しく表示されなかったようです。
マウスカーソルのハンドルをセットしてコンパイルすると表示され、コメントアウト
すると正常にコンパイルできても実行時に表示されなくなりました。お陰で今後の
ちょっとしたミスに気づく良い経験になりました。有り難うございます。
・要するに sakusaker7 さんのアドバイス通りですね。ただし、
>InitApp で登録しようとしている情報で、hIconメンバーに対する代入を行っていませんが
>ポカミスですか?
は『hIcon』ではなく『hCursor』ですね。→sakusaker7 さんもポカミスですね(笑)
その他:
・LoadImage() 関数の引数が多いため便利マクロ関数を紹介します。
#define MacroLoadIcon(inst,id) (HICON)LoadImage(inst,id,IMAGE_ICON,0,0,LR_DEFAULTSIZE | LR_SHARED)
#define MacroLoadCursor(inst,id) (HCURSOR)LoadImage(inst,id,IMAGE_CURSOR,0,0,LR_DEFAULTSIZE | LR_SHARED)
マクロ関数名は適当に変更してお使い下さい。
使い方は InitApp() 関数を例に
wc.hIcon = MacroLoadIcon( NULL, MAKEINTRESOURCE(IDI_APPLICATION) );
wc.hIconSm = MacroLoadIcon( NULL, MAKEINTRESOURCE(IDI_APPLICATION) );
wc.hCursor = MacroLoadCursor( NULL, MAKEINTRESOURCE(IDC_ARROW) );
と使います。『inst』がインスタンスハンドルで『id』が識別文字列です。
・このマクロ関数は、LoadIcon()、LoadCursor() 関数に合わせて命名と引数を決めています。
実際の LoadIcon()、LoadCursor() 関数を使っても良いが、MSDN マニュアルに
>注意 この関数は、LoadImage 関数に取って代わられました。
となっています。もう古い関数群ですので今後は LoadImage() 関数を使えって事かな。
そこで参考にしている『猫でもわかるwindowsプログラミング』の本は積極的に
LoadImage() 関数を使っているようだ。
・私も普段は LoadImage() 関数をマクロ定義して使っている。→上記で紹介したマクロだ。
ただし、マクロ名を TipAPILoadIcon、TipAPILoadCurosor として使っています。
他にもたくさんのマクロ関数を定義して使っています。
・もう一つ『break』付きの case、default キーワードを紹介します。
#define CASE break;case
#define DEFAULT break;default
使い方はウィンドウプロシージャを例に
switch(msg){
CASE WM_CREATE:
/* 処理 */
CASE WM_COMMAND:
/* 処理 */
CASE WM_PAINT:
/* 処理 */
CASE WM_CLOSE:
/* 処理 */
CASE WM_DESTROY:
PostQuitMessage(0);
DEFAULT:
return DefWindowProc(hWnd, msg, wp, lp );
}
と使います。switch 文の多くは break して抜けることが多いため私は CASE、DEFAULT の
記号定数キーワードを使っています。本来の case、default と分けるために大文字にしています。
また、break なしの CASE を使いたいときは本来の case を記述すればよい。
良かったらお使い下さい。→使うときにはヘッダ部に記述するとか他の人でも分かりやすくしておく。
・以上。おわり。
お礼
貴重な時間を割いてのアドバイス、有難うございます。 ご指摘のとおり 『wc.hCursor = (HCURSOR)LoadImage()~』の、ハンドルが設定してありませんでした、 ソースを書き直すたびに何度も確認をしたのですが、『コンパイルが来た』と言うだけで別に原因があるものと思い込んでいたようです。 確認がおろそかでした。今は無事実行することが出来、『画面の表示も出来ます。』本当に有難うございました。 また、参考となるアドバイスをたくさんして頂きとても感謝しています。これからの学習にとても助かります。 まだ未熟なためご迷惑をおかけしました。 有難うございました。