(HMENU)とはなんですか?

[戻る]
あるA子 2002/06/24(月) 14:15:25
コードの中に(HMENU)と言うのがあったのですが、
これはどういう役割を持つものなんですか?
調べても分からなかったので教えていたただきたいです。

PAI 2002/06/24(月) 14:20:23
メニューのハンドルでし。
ハンドルっていうのは(ここでは)ウィンドウズがから見た識別番号みたいなものでし。

PAI 2002/06/24(月) 14:21:23
あ、メニューのハンドルにキャストしてるのかな?
前後関係がわからないのでちょっとなんともいえませんけど。

あるA子 2002/06/24(月) 14:27:46
前後関係なのですが…こんな感じのプログラムです。    
ウィンドウズの識別番号って…何を識別しているんですか?
すみません、初心者で…。

     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 );

PAI 2002/06/24(月) 15:36:30
あ、ちょっと複雑ですね。
ヘルプの(プラットフォームSDKの)CreateWindowの説明を読んでやってください。

このソースだと、おそらくウィンドウの中に子ウィンドウ(リストボックス?)
を作ってますよね。
そうすると、このパラメータは子ウィンドウのIDとして使われます。
で、両方に1を渡しているのは・・・これでいいんでしょうか?
ちょっとわかりません。ごめんなさい

で識別番号うんぬんですが、
Windowsが実際にアプリケーションに対してメッセージとかを送ったりするとき、
どれがどれかとかを『Windowsが』識別するために使用するのがハンドルです。

たとえ話ですけど、わたしたち人間は
「このウィンドウ」とか「このボタン」とか「このアイコン」とか
あるいはその名前とかでいろんなものを識別しますが、
ウィンドウズさんは 「ハンドル1000のウィンドウ」とか「ハンドル768のメニュー」
とか、そんな感じでものを識別しとるわけです。
そういうののVC++での型としての表現が
HANDLEであったりHMENUであったりHWNDであったりするわけです。

あるA子 2002/06/24(月) 15:59:11
ありがとうございますPAIさん!!
なるほどそういうことだったんですね。
すごく良くわかりました。

でも両方に1を渡しているのは確かにおかしいですよね…。
う〜む。。。

dairygoods 2002/06/24(月) 16:20:25
> でも両方に1を渡しているのは確かにおかしいですよね…。

あとでこの番号を使って2つのリストボックスを区別するつもりが
ないのであれば、同じ値を指定しておいても問題ありません。

古いスレッドには追加発言できません。