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

2011年09月11日

メニューの作成

<メニューの付け方@・新版><現在メニューの付け方は新版に移行しています。>

ウィンドウにメニューをつけるには次のような方法をとります。
@CreateMenu関数で空のメニューを作る
AInsertMenuItem関数でメニューに項目を足す。
BSetMenu関数でメニューをウィンドウに張り付ける。
Concmd[hsp]で、項目が選択されたか判定する。

@CreateMenu関数で空のメニューを作る
CreateMenu : Hpa=stat
これを実行すると空のメニューが作成されます。戻り値にはメニューハンドルが帰って来ます。
これはメニューの識別に必要なので保持しておきます。

AInsertMenuItem関数でメニューに項目を足す。
InsertMenuItem hmenu,uItem,fByPosition,lpmii
これを実行するとメニューに項目が追加されます。
hmenu:項目を追加する先のメニューを指定します。
uItem:追加したい項目の場所の後ろにある項目のIDを指定します。一番後ろに入れたいときは、自らの項目のIDを指定します。
fByPosition:0を指定してください。
lpmii:MENUITEMINFO構造体のアドレスを指定します。
MENUITEMINFO構造体には、追加する項目の情報をインプットします。

BSetMenu関数でメニューをウィンドウに張り付ける
SetMenu hWnd,hMenu
これを実行すると作成されたメニューをウィンドウに張り付けることができます。

Concmd[hsp]で、項目が選択されたか判定する。
oncmd gosub *command, $111
これを実行すると、どれかの項目が押された時、*commandにジャンプします。
メニューバーの項目が押された時、lparamは0になります。0で無い時は違うので、判定しないでください。
lparamが0のときには、wparamの下位ワードに押された項目のIDが代入されます。
なのでそれを取り出して判定してください。
#define ctype LOWORD(%1) (%1 & $FFFF)
このマクロで下位ワードが取得できます。

以上を踏まえたうえで、プログラムを作成します。

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

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

#enum ID_MENU1 = 1//メニュー用ID列挙
#enum ID_MENU2 


CreateMenu: Hpa=stat

Name="情報"
alloc HMI,48
lpoke HMI,4*0,48
lpoke HMI,4*1,0x00000002|0x00000010
lpoke HMI,4*4,ID_MENU1
lpoke HMI,4*9,varptr(Name)
InsertMenuItem Hpa , ID_MENU1 , 0, varptr(HMI)

Name="help"
lpoke HMI,4*4,ID_MENU2
lpoke HMI,4*9,varptr(Name)
InsertMenuItem Hpa , ID_MENU2 , 0, varptr(HMI)

SetMenu hwnd, Hpa

stop

*command//コマンド処理
if lparam==0{
cID=LOWORD(wparam)
if cID=ID_MENU1{mes "情報:情報はありません"}
if cID=ID_MENU2{mes "help:ヘルプはありません"}
}
return


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

メールアドレス:

ホームページアドレス:

コメント:

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


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

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