HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0301
begriff子ウィンドウに対してのメニューバー2解決


begriff

リンク

2008/3/1(Sat) 09:11:50|NO.13843

子ウィンドウにメニューバーを張ることは可能でしょうか。
クライアント領域が関係しているのですかね。

#func SetMenu "SetMenu" int, int #func GetMenuItemRect "GetMenuItemRect" int, int, int, sptr #func DrawMenuBar "DrawMenuBar" int #func DestroyMenu "DestroyMenu" int #deffunc menubar str menu1,var hm menu=menu1 b="" tag_(0)="" notesel menu sindo=1 CreateMenu id=stat hm=id hmenupar=id hmenu_(sindo)=id while(i<=notemax) noteget b,i koro=instr(b,0,":") if koro!-1{ kako=gen gen=0 tag="" if ":"=strmid(b,koro+1,1){ tag=strmid(b,koro+2,strlen(b)-koro-2) gosub *kai gen=1 }else:if ">"=strmid(b,koro+1,1){ gosub *kai gen=2 }else:if "<"=strmid(b,koro+1,1){ gosub *kai gen=3 }else:if "-"=strmid(b,koro+1,1){ gosub *kai gen=4 } if gen=1&&tugi=2{ tag_(sindo)=tag } if gen=1&&tugi!2{ l+ AppendMenu Hmenu_(sindo),0,l,tag } if gen=4&&tugi!2{ AppendMenu Hmenu_(sindo),$800,$0,"" } if gen=2&&kako=1{ sindo+ CreatePopupMenu id=stat hmenu_(sindo)=id } if gen=3{ sindo- if sindo<1:sindo=1:else{ AppendMenu Hmenu_(sindo),$10,hmenu_(sindo+1),tag_(sindo) } } } i+ wend SetMenu hwnd,hmenupar DrawMenuBar hwnd dim rect,4 GetMenuItemRect hwnd, hm,0,varptr(rect) return rect(3)-rect(1) *kai ii=i+1 tugi=0 while(ii<=notemax&&flag=0) noteget b,ii koro=instr(b,0,":") if koro!-1{ if ":"=strmid(b,koro+1,1){ flag=1 tugi=1 }else:if ">"=strmid(b,koro+1,1){ flag=1 tugi=2 }else:if "<"=strmid(b,koro+1,1){ flag=1 tugi=3 }else:if "-"=strmid(b,koro+1,1){ flag=1 tugi=4 } } ii+ wend flag=0 return #deffunc delmenu int hm_ SetMenu hwnd,0 DestroyMenu hm_ DrawMenuBar hwnd mes hm_ return #global #uselib "user32" #func SetWindowLong "SetWindowLongA" int,int,int #cfunc GetWindowLong "GetWindowLongA" int, int bgscr 2 mes strf("%08x",getwindowlong(hwnd,-16)) setwindowlong hwnd ,-16,$50000000 mes strf("%08x",getwindowlong(hwnd,-16)) #const global WM_COMMAND 0x0111 oncmd gosub *OnCommand, WM_COMMAND menu={" ::ファイル :> ::新規(&N)\t ::開く(&O)...\tCtrl+O ::上書き保存(&S)\tCtrl+S ::名前を付けて保存(&A)... :- ::ページ設定(&U)... ::印刷(P)...\tCtrl+P :- ::終了(&X)\tCtrl+Q :< ::編集 :> ::ok :< "} menubar menu,hm mes stat mes hm wait 100 delmenu hm stop *OnCommand l=wparam & 0xFFFF ;dialog ""+l return



この記事に返信する


pizza

リンク

2008/3/1(Sat) 23:11:29|NO.13848

SetMenu関数の解説に子ウィンドウはダメって書いてありますね。

子ウィンドウの場合、メニューハンドルを保存する場所にIDを保存しているので、
メニューを持てないのでは無いでしょうか?


#define GWL_ID (-12) // 親ならメニューハンドル、子ならIDを取得 mes GetWindowLong(hwnd, GWL_ID)



begriff

リンク

2008/3/2(Sun) 01:18:15|NO.13854

返答ありがとうございます。

了解いたしました。



ONION software Copyright 1997-2023(c) All rights reserved.