(HMENU)とはなんですか? – プログラミング – Home

通知
すべてクリア

(HMENU)とはなんですか?


あるA子
 あるA子
(@あるA子)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

コードの中に(HMENU)と言うのがあったのですが、
これはどういう役割を持つものなんですか?
調べても分からなかったので教えていたただきたいです。


引用解決済
トピックタグ
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

メニューのハンドルでし。
ハンドルっていうのは(ここでは)ウィンドウズがから見た識別番号みたいなものでし。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

あ、メニューのハンドルにキャストしてるのかな?
前後関係がわからないのでちょっとなんともいえませんけど。


返信引用
あるA子
 あるA子
(@あるA子)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

前後関係なのですが…こんな感じのプログラムです。
ウィンドウズの識別番号って…何を識別しているんですか?
すみません、初心者で…。

     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
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

あ、ちょっと複雑ですね。
ヘルプの(プラットフォームSDKの)CreateWindowの説明を読んでやってください。

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

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

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


返信引用
あるA子
 あるA子
(@あるA子)
ゲスト
結合: 23年前
投稿: 3
Topic starter  

ありがとうございますPAIさん!!
なるほどそういうことだったんですね。
すごく良くわかりました。

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


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました