etc.negui.window.menu.menu

メニュー。
一応メニューバーとポップアップメニューを考慮。 まぁポップアップしか作りませんが。
class MenuException: etc.negui.system.exception.NeGuiException;

abstract class Menu: etc.negui.system.raii.Raii, etc.negui.system.raii.IHandle;
メニュー基底。
メニューハンドルをラップして使用。 アイテムは相対位置ではなくIDで指定する(※今後内部フラグで切り替えるようにする可能性有)。
History:
1.00β20
  • program各々のハンドルが自身のオブジェクトを保持。
protected Menu[COMMAND_ID] SubMenus;
GC用サブメニュー。
protected HMENU hMenu;
メニューハンドル。
void Kill();
History:
1.00β11
  • 使用していなかったログ機能の撤廃。
this(HMENU hMenu , bool Suicide = false, bool DataSet = true);
コンストラクタ
bool insert(ref const(MENUITEM) MenuItem );
メニューアイテムの挿入。
Params:
const(MENUITEM) MenuItem
挿入するアイテムの情報。
Returns:
成功した場合はtrue、失敗した場合はfalseを返す。
bool set(ref const(MENUITEM) MenuItem );
メニューアイテムの設定。
Params:
const(MENUITEM) MenuItem
設定するアイテムの情報。
Returns:
成功した場合はtrue、失敗した場合はfalseを返す。
const bool get(ref MENUITEM MenuItem );
History:
1.021
  • source引数属性変更。
const bool del(COMMAND_ID Id );
メニューアイテムの削除。
Params:
COMMAND_ID Id
削除するアイテムID。
Returns:
成功した場合はtrue、失敗した場合はfalseを返す。
History:
1.010
  • bugパラメータ順序。
bool insertText(COMMAND_ID Id , in Text text , bool Enable = true);
History:
1.021
  • source引数属性変更。
bool insertSeparator(COMMAND_ID Id = (COMMAND_ID).max);

bool insertSubMenu(COMMAND_ID Id , in Text text , Menu SubMenu , bool Enable = true);
History:
1.021
  • source引数属性変更。
1.00β11
  • 事前条件のSubMenuの判定方法を変更。
const COMMAND_ID posToID(size_t Position );
ID取得。
Params:
size_t Position
メニューアイテムの位置。
Returns:
PositionにあるメニューアイテムのID。
Throws:
Positionからメニューアイテムを取得できない場合にMenuExceptionを投げる。
History:
1.021
  • sourceメソッド属性変更。
Menu getSubMenu(COMMAND_ID Id );
意味ね~。
bool radio(COMMAND_ID StartID , COMMAND_ID EndID , COMMAND_ID TargetID );
ラジオチェック設定。
Params:
COMMAND_ID StartID
グループの先頭。
COMMAND_ID EndID
グループの最後。
COMMAND_ID TargetID
チェックを入れる項目。
Throws:
TargetIDがグループに無ければMenuException。
Returns:
成功すればtrue、失敗すればfalse。
const bool check(COMMAND_ID Id );
指定IDのチェック状態を調べる。
Params:
COMMAND_ID Id
調べたいID。
Returns:
チェックしていればtrue、していなければfalse。
Throws:
メニュー項目を取得できなければMenuException。
History:
1.021
  • sourceメソッド属性変更。
void check(COMMAND_ID Id , bool Check );
指定IDのチェック状態を設定。
Params:
COMMAND_ID Id
調べたいID。
bool Check
ON/OFF。
Throws:
メニュー項目を取得・設定できなければMenuException。
static bool isMenu(HANDLE Handle );

MENU_FLAG enable(COMMAND_ID Id , MENU_FLAG MenuFlags );

static Menu getMenuObject(HMENU hMenu );

class OtherMenu: etc.negui.window.menu.menu.Menu;
History:
1.00β20
  • 新規作成。
Menu GetMenuNeGui(HMENU hMenu );

struct MENUITEM;
メニューアイテム
History:
1.00β20
  • sourcealiasをdeprecatedに変更。
MENUITEMINFO MenuItemInfo;
メニューアイテムの実態だけど通常は構造体メソッドを使用。
void initialize();
初期化サイズ。
enum MASK;
どのメンバ変数を利用するかを指定します。
CHECKMARKS
hbmpChecked、hbmpUnchecked メンバが有効になります。
DATA
dwItemData メンバが有効になります。
ID
wID メンバが有効になります。
STATE
fState メンバが有効になります。
SUBMENU
hSubMenu メンバが有効になります。
TYPE
fType、dwTypeData メンバが有効になります。
enum TYPE;
メニュー項目のタイプを、以下の定数を組み合わせて指定します。
BITMAP
ビットマップを使用してメニューを表示します。dwTypeData メンバの下位ワードでビットマップ ハンドルを指定します。cch メンバは無視されます。
MENUBARBREAK
メニュー項目を、新しい行に配置します。ドロップダウン メニュー、サブメニュー、ショートカット メニューの場合は行間に線が引かれます。
MENUBREAK
メニュー項目を、新しい行に配置します。ドロップダウン メニュー、サブメニュー、ショートカット メニューのときは、行間に線が引かれません。
OWNERDRAW
メニューの描画をオーナーウィンドウに任せます。dwTypeData メンバはアプリケーション定義の32ビット値をもちます。
RADIOCHECK
hbmpChecked メンバが NULL のとき、ラジオボタンのチェックマークをメニュー項目のチェックマークにします。
RIGHTJUSTIFY
以降のメニュー項目を右揃えで表示します。メニュー バーにのみ有効です。
RIGHTORDER
右から左へメニュー項目を表示します。アラビア語やヘブライ語を表示するために使用します。(Windows95、WindowsNT5.0以降)
SEPARATOR
メニュー項目がセパレータであることを示します。dwTypeData メンバ、cch メンバは無視されます。
STRING
文字列を使ってメニュー項目を表示します。dwTypeData メンバには NULL で終わる文字列バッファへのポインタを指定します。cch メンバには文字列のバイト数を指定します。
enum STATE;
メニュー項目の状態を、以下の定数を組み合わせて指定します。
CHECKED
チェック マークを表示します。
DEFAULT
デフォルトのメニュー項目に設定します。メニュー項目は太字で表示されます。
DISABLED
メニュー項目を選択不可にします。淡色表示にはなりません。
ENABLED
メニュー項目を有効にします。
GRAYED
メニュー項目を選択不可にし、淡色表示します。
HILITE
メニュー項目を強調表示します。
UNCHECKED
チェック マークを解除します。
UNHILITE
強調表示を解除します。
const bool haveSubMenu();
サブメニューを所持しているか。
History:
1.00β20
  • sourceメソッド名をisSubMenuからhaveSubMenuに変更。
  • features有無の判定を厳しめに。
void subMenu(Menu SubMenu );
サブメニュー取得・設定。
Params:
Menu SubMenu
サブメニュー。
Returns:
自殺しないPopUpメニュー。
Throws:
取得時にメニューが無効の場合にMenuExceptionを投げる。
wchar* text();
void text(wchar* TypeData );
wchar* text(in Text TypeData );
タイプデータ。 大抵は文字列。