コードの中に(HMENU)と言うのがあったのですが、
これはどういう役割を持つものなんですか?
調べても分からなかったので教えていたただきたいです。
メニューのハンドルでし。
ハンドルっていうのは(ここでは)ウィンドウズがから見た識別番号みたいなものでし。
あ、メニューのハンドルにキャストしてるのかな?
前後関係がわからないのでちょっとなんともいえませんけど。
前後関係なのですが…こんな感じのプログラムです。
ウィンドウズの識別番号って…何を識別しているんですか?
すみません、初心者で…。
if (!hwnd)
{
return FALSE ;
}
ShowWindow (hwnd, nCmdShow) ;
UpdateWindow (hwnd) ;
GetClientRect(hwnd, (LPRECT) &rc);
hEditWnd[0] = CreateWindow ( LISTBOX,",
WS_CHILD | LBS_USETABSTOPS | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL,
0,0,
(rc.right-rc.left),
(rc.bottom-rc.top),
hwnd,
(HMENU)1,
hInstance,
NULL );
hEditWnd[1] = CreateWindow ( LISTBOX,",
WS_CHILD, 0, 0,
rc.right, rc.bottom,
hwnd,
(HMENU)1,
hInstance,
NULL );
あ、ちょっと複雑ですね。
ヘルプの(プラットフォームSDKの)CreateWindowの説明を読んでやってください。
このソースだと、おそらくウィンドウの中に子ウィンドウ(リストボックス?)
を作ってますよね。
そうすると、このパラメータは子ウィンドウのIDとして使われます。
で、両方に1を渡しているのは・・・これでいいんでしょうか?
ちょっとわかりません。ごめんなさい
で識別番号うんぬんですが、
Windowsが実際にアプリケーションに対してメッセージとかを送ったりするとき、
どれがどれかとかを『Windowsが』識別するために使用するのがハンドルです。
たとえ話ですけど、わたしたち人間は
「このウィンドウ」とか「このボタン」とか「このアイコン」とか
あるいはその名前とかでいろんなものを識別しますが、
ウィンドウズさんは 「ハンドル1000のウィンドウ」とか「ハンドル768のメニュー」
とか、そんな感じでものを識別しとるわけです。
そういうののVC++での型としての表現が
HANDLEであったりHMENUであったりHWNDであったりするわけです。
ありがとうございますPAIさん!!
なるほどそういうことだったんですね。
すごく良くわかりました。
でも両方に1を渡しているのは確かにおかしいですよね…。
う~む。。。
> でも両方に1を渡しているのは確かにおかしいですよね…。
あとでこの番号を使って2つのリストボックスを区別するつもりが
ないのであれば、同じ値を指定しておいても問題ありません。