メニュー。
一応メニューバーとポップアップメニューを考慮。
まぁポップアップしか作りませんが。
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;
protected HMENU hMenu;
void Kill();
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
);
const bool del(COMMAND_ID Id
);
メニューアイテムの削除。
- Params:
- COMMAND_ID Id
- 削除するアイテムID。
- Returns:
- 成功した場合はtrue、失敗した場合はfalseを返す。
bool insertText(COMMAND_ID Id
, in Text text
, bool Enable
= true);
bool insertSubMenu(COMMAND_ID Id
, in Text text
, Menu SubMenu
, bool Enable
= true);
const COMMAND_ID posToID(size_t Position
);
ID取得。
- Params:
- size_t Position
- メニューアイテムの位置。
- Returns:
- PositionにあるメニューアイテムのID。
- Throws:
- Positionからメニューアイテムを取得できない場合にMenuExceptionを投げる。
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。
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;
Menu GetMenuNeGui(HMENU hMenu
);
struct MENUITEM;
メニューアイテム
- History:
- 1.00β20
- sourcealiasをdeprecatedに変更。
MENUITEMINFO MenuItemInfo;
メニューアイテムの実態だけど通常は構造体メソッドを使用。
void initialize();
enum MASK;
どのメンバ変数を利用するかを指定します。
CHECKMARKS
hbmpChecked、hbmpUnchecked メンバが有効になります。
DATA
ID
STATE
SUBMENU
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
- サブメニュー。
- Throws:
- 取得時にメニューが無効の場合にMenuExceptionを投げる。
wchar* text();
void text(wchar* TypeData
);
wchar* text(in Text TypeData
);