調べましたが「ドロップダウンボタン」というようですね。
こんな感じで作ってみましたが、どうでしょうか。
(dupptrって初めて使うので一寸不安な部分はありますが…)
//参考:
// http://chokuto.ifdef.jp/advanced/shortcutmenu.html
// http://chokuto.ifdef.jp/urawaza/message/WM_NOTIFY.html
// "BS_SPLITBUTTON"と"BCN_DROPDOWN"でググった結果も参考に
#include "user32.as"
#const p_opt 0x80|0x100|0x2 //TPM_NONOTIFY | TPM_RETURNCMD | TPM_RIGHTBUTTON
button gosub "Default",*def
b_id=stat
b_h=objinfo(b_id,2) //ボタンのハンドル
GetWindowLong b_h,-16
SetWindowLong b_h,-16,stat | 0xC //0xC=BS_SPLITBUTTON ドロップダウンボタンにする
oncmd gosub *notify,0x4E //0x4E=WM_NOTIFY
//ポップアップメニューの作成
CreatePopupMenu
p_h=stat //ポップアップメニューのハンドル
AppendMenu p_h,0,1,"1番目"
AppendMenu p_h,0,2,"2番目"
AppendMenu p_h,0,3,"3番目"
onexit goto *exit //終了時にポップアップメニューを削除する必要あり
stop
*def
dialog "デフォルトの動作です"
return
*notify
dupptr nmhdr,lparam,12
if (nmhdr(0)=b_h)&(nmhdr(2)=-1248) { //-1248=BCN_DROPDOWN
TrackPopupMenuEx p_h,p_opt,ginfo_mx,ginfo_my,hwnd,0 //ポップアップメニューの表示
if stat!=0 {
pm_id=stat //メニュー項目のID
switch pm_id
case 1
dialog "1番目が選ばれました"
swbreak
case 2
dialog "2番目が選ばれました"
swbreak
case 3
dialog "3番目が選ばれました"
swbreak
swend
}
}
return
*exit
//終了時処理
DestroyMenu p_h
end