このサイトは2013/3/20に新しい名前になりました(ニックネーム変更のため)

2011年09月24日

サブメニューの作成

<メニューの作成を見ていないかたはそちらを先にご覧ください。>


[メニューの作成]では、ウィンドウにメニューをつけることができました。
ですが、メニューにはもう一種類あります。それは、サブメニューと呼ばれるものです。
サブメニューとは、メニューを押したときにそのメニューの下に出てくる下層のメニューのことです。
(下のスクリプトを実行して確かめてください。)
では説明していきます。


@Create


<Menu2.hsp>
#include "user32.as"//関数を使うためのソースを結合
#define ctype LOWORD(%1) (%1 & $FFFF)//下位ワード取得マクロ

oncmd gosub *command, $111//コマンド処理

#enum ID_MENU1 = 1//メニュー用ID列挙
#enum ID_MENU2
#enum ID_CH1_1
#enum ID_CH1_2
#enum ID_CH1_3
#enum ID_CH2_1
#enum ID_CH2_2
#enum ID_CH2_3

  alloc HMI,48//MENUITEMINFO構造体の準備
  lpoke HMI,4*0,48
  

CreatePopupMenu: Hch1=stat
  
  Name="AAA"
  lpoke HMI,4*1,0x00000002|0x00000010
  lpoke HMI,4*4,ID_CH1_1
  lpoke HMI,4*9,varptr(Name)
  InsertMenuItem Hch1 , ID_CH1_1 , 0, varptr(HMI)
  
  Name="BBB"
  lpoke HMI,4*1,0x00000002|0x00000010
  lpoke HMI,4*4,ID_CH1_2
  lpoke HMI,4*9,varptr(Name)
  InsertMenuItem Hch1 , ID_CH1_2 , 0, varptr(HMI) 
  
  Name="CCC"
  lpoke HMI,4*1,0x00000002|0x00000010
  lpoke HMI,4*4,ID_CH1_3
  lpoke HMI,4*9,varptr(Name)
  InsertMenuItem Hch1 , ID_CH1_3 , 0, varptr(HMI)
  
CreatePopupMenu: Hch2=stat
  
  Name="XXX"
  lpoke HMI,4*1,0x00000002|0x00000010
  lpoke HMI,4*4,ID_CH2_1
  lpoke HMI,4*9,varptr(Name)
  InsertMenuItem Hch2 , ID_CH2_1 , 0, varptr(HMI)
  
  Name="YYY"
  lpoke HMI,4*1,0x00000002|0x00000010
  lpoke HMI,4*4,ID_CH2_2
  lpoke HMI,4*9,varptr(Name)
  InsertMenuItem Hch2 , ID_CH2_2 , 0, varptr(HMI) 
  
  Name="ZZZ"
  lpoke HMI,4*1,0x00000002|0x00000010
  lpoke HMI,4*4,ID_CH2_3
  lpoke HMI,4*9,varptr(Name)
  InsertMenuItem Hch2 , ID_CH2_3 , 0, varptr(HMI)
  
CreateMenu: Hpa=stat
  
  Name="情報"
  lpoke HMI,4*1,0x00000002|0x00000010|0x00000004
  lpoke HMI,4*4,ID_MENU1
  lpoke HMI,4*5,Hch1
  lpoke HMI,4*9,varptr(Name)
  InsertMenuItem Hpa , 0 , 0, varptr(HMI)
  
  Name="help"
  lpoke HMI,4*1,0x00000002|0x00000010|0x00000004
  lpoke HMI,4*4,ID_MENU2
  lpoke HMI,4*5,Hch2
  lpoke HMI,4*9,varptr(Name)
  InsertMenuItem Hpa , 0 , 0, varptr(HMI)
  
SetMenu hwnd, Hpa
  
stop
  
*command//コマンド処理
 if lparam==0{
  cID=LOWORD(wparam)
  if cID=ID_CH1_1{dialog "[AAA]が押されました。"}
  if cID=ID_CH1_2{dialog "[BBB]が押されました。"}
  if cID=ID_CH1_3{dialog "[CCC]が押されました。"}
  if cID=ID_CH2_1{dialog "[XXX]が押されました。"}
  if cID=ID_CH2_2{dialog "[YYY]が押されました。"}
  if cID=ID_CH2_3{dialog "[ZZZ]が押されました。"}
 }
return



posted by ? at 14:44| Comment(0) | WINAPIメモ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。