hamach です。
話をそらす種元な話題をふりかけて申し訳ございません。
さて、ww302jpさんの質問
> ウィンドウズXPにあるメモ帳 のメニューかボタンのメニューは どちらの方が良いですか?
に対してですが、ボタンの配置センスにもよりますが、
シンプルにしたいのならメニューバーの方がよいでしょう。
また、ボタンをクリックしてメニューが出てくるのも面白いですね。
ご自身のアイディアで素晴らしいソフトを開発してください。
// 注意⇒サンプル作成中少々戸惑ったので一部
// Kpanさんのモジュールを参考にさせていただいております。
// 著作権は Kpanさんに帰属します
//
#uselib "USER32.DLL"
#cfunc CreatePopupMenu "CreatePopupMenu"
#func AppendMenu "AppendMenuA" int, int, int, str
#func TrackPopupMenu "TrackPopupMenu" int, int, int, int, int, int
#func DestroyMenu "DestroyMenu" int
#func GetWindowRect "GetWindowRect" int, int
screen 0,640,480,0
syscolor 15 : boxf : syscolor 8
onexit *exit
hMenu(0) = CreatePopupMenu ()
AppendMenu hMenu(0), , $100, "新規作成(&N)"
AppendMenu hMenu(0), , $200, "開く(&O)"
AppendMenu hMenu(0), , $300, "上書き保存(&S)"
AppendMenu hMenu(0), , $400, "名前をつけて保存(&A)"
AppendMenu hMenu(0), $800, $500, ""
AppendMenu hMenu(0), , $600, "終了(&X)"
pos 0,0
objsize 80,20
button gosub "ファイル(&F)", *click
hBtn = objinfo(stat, 2) // ハンドルを代入
dim position,4 // GetWindowRect用の構造体代入用に配列を確保する
sdim buf,1024*100
pos 0,20
mesbox buf,640,440
id = stat
stop
*click
; オブジェクトの外側サイズを取得するGetWindowRect関数。
; RECT構造体として左上XY座標、右下XY座標が返ります。
GetWindowRect hBtn,varptr(position)
; ボタンの右側にメニュー表示。
; 第3、第4パラにボタンの右上XY座標を指定。
; RECT.0、RECT.3を指定すると、ボタンの真下にメニューが表示されます。
TrackPopupMenu hMenu.0, $100,position(0),position(3), , hwnd
if stat = $100 {
objprm id,""
}
if stat = $200 {
dialog "txt;*.htm;*.html",16,"テキストファイル"
if stat : return
}
if stat = $300 {
objprm id,"上書き保存"
}
if stat = $400 {
objprm id,"名前をつけて保存"
}
if stat = $500 {
}
if stat = $600 {
goto *exit
}
objsel id
return
*exit
DestroyMenu hMenu(0) // 破棄
end