NEWMENU

使い方:   #n = dllfunc("NEWMENU",$s1);
説明: MENU 関数 で表示するための ポップアップメニューの作成を開始します。 この関数は単に新しいメニュー(の識別名)を定義するだけです。 実際にメニューの項目を追加するには ADDMENUITEM 関数 を使用します。
引数:
$s1 : メニューの識別名
返り値: 関数が成功した場合は 1 を、失敗した場合は 0 を返します。
例:
if (dllfunc("NEWMENU","main") == 0  ||
    dllfunc("ADDMENUITEM","","項目1","") == 0  ||
    dllfunc("ADDMENUITEM","","","") == 0    ||
    dllfunc("ADDMENUITEM","","サブメニュー","sub") == 0) {
    message "メインメニューの作成に失敗!!";
    ...
}
if (dllfunc("NEWMENU","sub") == 0   ||
    dllfunc("ADDMENUITEM","","サブ項目1","") == 0  ||
    dllfunc("ADDMENUITEM","","サブ項目2","") == 0) {
    message "サブメニューの作成に失敗!!";
    ...
}
$select_item = dllfuncstr("MENU","main",hidemaruhandle(0));
if ($select_item == "!") {
    //  エラー!!
} else if ($select_item == "0") {
    //  キャンセル
} else if (leftstr($select_item,4) == "main") {
    //  メインメニュー("main")の項目が選択された
    #index = val(midstr($select_item,5,1)); //  項目のインデックス
    ...
} else {
    //  サブメニュー("sub")の項目が選択された
    #index = val(midstr($select_item,4,1)); //  項目のインデックス
    ...
}


ADDMENUITEM

使い方:   #n = dllfunc("ADDMENUITEM",$s1,$s2,$s3);
説明: NEWMENU 関数 で作成したメニューに 項目を追加します。
(ADDMENUITEMEX 関数 の 第4引数に "" を指定した場合と同じです。)
引数:
$s1 : NEWMENU 関数 の引数で指定した メニューの識別名
("" を指定すると、最新の NEWMENU 関数で作成したメニュー を指定したと解釈されます)
$s2 : メニュー項目の文字列
("" を指定するとセパレータと解釈されます)
$s3 : この項目がサブメニューを持つ時はそのサブメニューの識別名
サブメニューがない時は ""
返り値: 関数が成功した場合は 1 を、失敗した場合は 0 を返します。
例: (NEWMENU 関数 の例を参照して下さい)


ADDMENUITEMEX

使い方:   #n = dllfunc("ADDMENUITEMEX",$s1,$s2,$s3,$s4);
説明: NEWMENU 関数 で作成したメニューに 項目を追加します。 チェックの有無や有効・無効の状態を指定できます。
引数:
$s1 : NEWMENU 関数 の引数で指定した メニューの識別名
("" を指定すると、最新の NEWMENU 関数で作成したメニュー を指定したと解釈されます)
$s2 : メニュー項目の文字列
("" を指定するとセパレータと解釈されます)
$s3 : この項目がサブメニューを持つ時はそのサブメニューの識別名
サブメニューがない時は ""
$s4 : 項目の状態
"c" を指定すると項目の前にチェックがつきます。
また "d" を指定すると項目が無効状態(グレー表示)になり、 選択できなくなります。
"cd" のように両方を同時に指定することもできます。
返り値: 関数が成功した場合は 1 を、失敗した場合は 0 を返します。
例:
#n = dllfunc("ADDMENUITEMEX","","チェックをつける","","c");
#n = dllfunc("ADDMENUITEMEX","","無効にする","","d");
#n = dllfunc("ADDMENUITEMEX","","両方の指定","","cd");


CHANGEMENUITEM

使い方:   #n = dllfunc("CHANGEMENUITEM",$s1,#n2,$s3);
説明: メニュー項目のテキストを変更します。 なお、項目の種類(普通の項目か、セパレータか、サブメニューの有無)は 変更できません。
(CHANGEMENUITEMEX 関数 の 第4引数に "" を指定した場合と同じです。)
引数:
$s1 : NEWMENU 関数 の引数で指定した メニューの識別名
("" を指定すると、最新の NEWMENU 関数で作成したメニュー を指定したと解釈されます)
#n2 : 変更する項目の番号
(番号は セパレータも含めて 1 から数えます)
$s3 : 新しい項目テキスト
返り値: 関数が成功した場合は 1 を、失敗した場合は 0 を返します。
例:
if (!dllfunc("NEWMENU","test")  ||
    !dllfunc("ADDMENUITEM","","1 回目の表示","")) {
    message "メニューの作成に失敗しました";
    ...
}
#n = 1;
while (1) {
    $sel = dllfuncstr("MENU","test",hidemaruhandle(0));
    if ($sel == "!" || $sel == "") break;
    #n = #n + 1;
    if (!dllfunc("CHANGEMENUITEM","test",1,str(#n)+" 回目の表示")) break;
}
...

CHANGEMENUITEMEX

使い方:   #n = dllfunc("CHANGEMENUITEMEX",$s1,#n2,$s3,$4);
説明: メニュー項目のテキスト及び属性を変更します。 なお、項目の種類(普通の項目か、セパレータか、サブメニューの有無)は 変更できません。
引数:
$s1 : NEWMENU 関数 の引数で指定した メニューの識別名
("" を指定すると、最新の NEWMENU 関数で作成したメニュー を指定したと解釈されます)
#n2 : 変更する項目の番号
(番号は セパレータも含めて 1 から数えます)
$s3 : 新しい項目テキスト
$s4 : 新しい項目属性
(指定方法は ADDMENUITEMEX 関数 と同じです)
返り値: 関数が成功した場合は 1 を、失敗した場合は 0 を返します。
例: (省略)


DELETEMENUITEM

使い方:   #n = dllfunc("DELETEMENUITEM",$s1,#n2);
説明: 指定したメニュー項目を削除します。
引数:
$s1 : NEWMENU 関数 の引数で指定した メニューの識別名
("" を指定すると、最新の NEWMENU 関数で作成したメニュー を指定したと解釈されます)
#n2 : 削除する項目の番号
(番号は セパレータも含めて 1 から数えます) (0 を指定すると全ての項目を削除します)
返り値: 関数が成功した場合は 1 を、失敗した場合は 0 を返します。
例:
...
if (!dllfunc("DELETEMENUITEM","main",0)) {
    message "メニュー項目のクリアに失敗しました";
    ...
}
##a = 1;
while (##a > 10) {
    if (!dllfunc("ADDMENUITEM","main","新項目"+str(##a),"") break;
    ##a = ##a + 1;
}
...


MENU

使い方:   $s = dllfuncstr("MENU",$s1,#n2);
説明: NEWMENU 関数ADDMENUITEM 関数 等で作成した メニューを表示して、ユーザーが選択した結果を返します。
引数:
$s1 : NEWMENU 関数 の引数で指定した メニューの識別名
#n2 : マウスカーソルの位置にメニューを表示する時は 0、
キャレット(|)の位置にメニューを表示する時は 秀丸のウィンドウハンドル(= hidemaruhandle(0))
返り値:
  • エラーの場合は "!"
  • キャンセルの場合は "0"
  • 選択された場合は "menuname:index"
    menuname は選択項目を含むメニュー(またはサブメニュー)の識別名、 index は項目の番号 (一番上が 1 で、セパレータも含めて順番に 1 づつ増える)
例: (NEWMENU 関数 の例を参照して下さい)


MENUEX

使い方:   $s = dllfuncstr("MENUEX",$s1,#n2);
説明: NEWMENU 関数ADDMENUITEM 関数 等で作成した メニューを指定した位置に表示して、 ユーザーが選択した結果を返します。
引数:
$s1 : NEWMENU 関数 の引数で指定した メニューの識別名
#n2 : マウスカーソルの位置にメニューを表示する時は 0、
キャレット(|)の位置にメニューを表示する時は 秀丸のウィンドウハンドル(= hidemaruhandle(0))
#n3 : #2 で指定した位置からの横方向のずれ(ピクセル単位)
#n4 : #2 で指定した位置からの縦方向のずれ(ピクセル単位)
返り値:
  • エラーの場合は "!"
  • キャンセルの場合は "0"
  • 選択された場合は "menuname:index"
    menuname は選択項目を含むメニュー(またはサブメニュー)の識別名、 index は項目の番号 (一番上が 1 で、セパレータも含めて順番に 1 づつ増える)
例:
// (これ以前に "main" という名前でメニューを作成しておく)

// カーソル位置から1行分下にメニューを表示
// (fontsize はフォントの高さを表す秀丸マクロのキーワード)
$select_item = dllfuncstr("MENUEX","main",hidemaruhandle(0),0,fontsize);
if ($select_item == "!") {
    //  エラー!!
} else if ($select_item == "0") {
    //  キャンセル
} else if (leftstr($select_item,4) == "main") {
    //  メインメニュー("main")の項目が選択された
    #index = val(midstr($select_item,5,1)); //  項目のインデックス
    ...
} else {
    //  サブメニュー("sub")の項目が選択された
    #index = val(midstr($select_item,4,1)); //  項目のインデックス
    ...
}