>>2011年09月24日サブメニューの作成<メニューの作成を見ていないかたはそちらを先にご覧ください。>[メニューの作成]では、ウィンドウにメニューをつけることができました。メニューにはもう一種類あります。それは、サブメニューと呼ばれるものです。サブメニューとは、メニューを押したときにそのメニューの下に出てくる下層のメニューのことです。(下のスクリプトを実行して確かめてください。)では説明していきます。"[AAA]が押されました。"[BBB]が押されました。"[CCC]が押されました。"[XXX]が押されました。"[YYY]が押されました。"[ZZZ]が押されました。Mr.k5342>よく、ダイアログボックスとしてそのボタン類がどういう動作をするのか説明するために×ボタンの左に「?」マークがありますよね?今回はそれの付け方を。先にソースを実行してみるのがいいかと。「?」ボタンは最小化ボタンと最大化ボタンとは共存できません。最小化・最大化をはずしてから「?」を付けましょう。(0)「?」ボタンの説明のために、何の動作もしないボタンを用意します。(1)最小化・最大化ボタンをはずす。(2)「?」ボタンをつける(3)「?」ボタン関連のメッセージを受け取り処理する詳しい手順(0)「?」ボタンの説明のために、何の動作もしないボタンを用意します。ボタンを用意してください。その際、このボタンのウィンドウハンドルが必要になるので取っておいてください。(1)最小化・最大化ボタンをはずす。最大化・最小化ボタンをはずすには、GetWindowLong関数を使ってウィンドウのウィンドウスタイルを取得してから、その取得したウィンドウスタイルから最大化・最小化ボタン有無のスタイルをはずして、SetWindowLong関数で更新すればOKです。stat-(stat&(WS_MAXIMIZEBOX|WS_MINIMIZEBOX));はずす(分かりにくくてすいません注:-16はウィンドウスタイルの取得・変更です(2)「?」ボタンをつける「?」ボタンの有無は、ウィンドウの拡張ウィンドウスタイルで決まります。(1)と同じように、拡張ウィンドウスタイルを取得し「?」ボタン有無のスタイルをつけ足せばOK。stat^(WS_EX_CONTEXTHELP)注:-20は拡張ウィンドウスタイルの取得・変更です(3)「?」ボタン関連のメッセージを受け取り処理する「?」ボタン関連の情報をWINDOWSが検知するとウィンドウにWM_HELPを送ります。goto*HELP,WM_HELPのようにします。*HELPでは、どのボタン類のヘルプを必要としているかを確認する必要があります。確認するには、WM_JELPが送られてくるのと同時に、lparamにHELPINFO構造体へのポインタが格納されます。このHELPINFO構造体を調べればどのボタン類が押されているか判断できます。HELPINFO構造体の中身は、下のソースを見てわかるように、4番目のメンバにヘルプを必要としているボタン類のウィンドウハンドルが格納されています。hItemHandle,LPHELPINFO+4*3,4,vartype("int")のようにすれば、どのボタン類が押されているかはんだするためのウィンドウハンドルを取得することができます。同じであればそれに見合った動作をすればOKです。|2011年09月11日メニューの作成<メニューの付け方�@・新版><現在メニューの付け方は新版に移行しています。>ウィンドウにメニューをつけるには次のような方法をとります。�@CreateMenu関数で空のメニューを作る�AInsertMenuItem関数でメニューに項目を足す。�BSetMenu関数でメニューをウィンドウに張り付ける。�Concmd[hsp]で、項目が選択されたか判定する。Hpa=statこれを実行すると空のメニューが作成されます。戻り値にはメニューハンドルが帰って来ます。これはメニューの識別に必要なので保持しておきます。�AInsertMenuItem関数でメニューに項目を足す。hmenu,uItem,fByPosition,lpmiiこれを実行するとメニューに項目が追加されます。hmenu:項目を追加する先のメニューを指定します。uItem:追加したい項目の場所の後ろにある項目のIDを指定します。後ろに入れたいときは、自らの項目のIDを指定します。fByPosition:0を指定してください。lpmii:MENUITEMINFO構造体のアドレスを指定します。MENUITEMINFO構造体には、追加する項目の情報をインプットします。hWnd,hMenuこれを実行すると作成されたメニューをウィンドウに張り付けることができます。�Concmd[hsp]で、項目が選択されたか判定する。$111これを実行すると、どれかの項目が押された時、*commandにジャンプします。メニューバーの項目が押された時、lparamは0になります。0で無い時は違うので、判定しないでください。lparamが0のときには、wparamの下位ワードに押された項目のIDが代入されます。それを取り出して判定してください。$FFFF)このマクロで下位ワードが取得できます。以上を踏まえたうえで、プログラムを作成します。2.0Seesaaブログ×この広告は180日以上新しい記事の投稿がないブログに表示されております。