{{div_begin}} [[← 14 章に戻る|Palm OS Programmer's API Reference/14]] [[↑トップへ|Palm OS Programmer's API Reference]] [[16 章に進む →|Palm OS Programmer's API Reference/16]] {{div_end}} {{div_begin style="margin-bottom:-10px"}} !!!15 メニュー {{div_end}} {{div_begin "style='position:absolute;right:0px;font-size:70%;margin-right:15px;margin-top:15px;width:250px;'"}} *{{goto Menu Data Structures,メニュー データ構造体}} **{{goto MenuBarAttrType,MenuBarAttrType}} **{{goto MenuCmdBarButtonType,MenuCmdBarButtonType}} **{{goto MenuCmdBarResultType,MenuCmdBarResultType}} **{{goto MenuCmdBarType,MenuCmdBarType}} **{{goto MenuBarPtr,MenuBarPtr}} **{{goto MenuBarType,MenuBarType}} **{{goto MenuItemType,MenuItemType}} **{{goto MenuPullDownPtr,MenuPullDownPtr}} **{{goto MenuPullDownType,MenuPullDownType}} *{{goto Menu Constants,メニュー定数}} *{{goto Menu Resources,メニュー リソース}} *{{goto Menu Functions,メニュー関数}} **{{goto MenuAddItem,MenuAddItem}} **{{goto MenuCmdBarAddButton,MenuCmdBarAddButton}} **{{goto MenuCmdBarDisplay,MenuCmdBarDisplay}} **{{goto MenuCmdBarGetButtonData,MenuCmdBarGetButtonData}} **{{goto MenuDispose,MenuDispose}} **{{goto MenuDrawMenu,MenuDrawMenu}} **{{goto MenuEraseStatus,MenuEraseStatus}} **{{goto MenuGetActiveMenu,MenuGetActiveMenu}} **{{goto MenuHandleEvent,MenuHandleEvent}} **{{goto MenuHideItem,MenuHideItem}} **{{goto MenuInit,MenuInit}} **{{goto MenuSetActiveMenu,MenuSetActiveMenu}} **{{goto MenuSetActiveMenuRscID,MenuSetActiveMenuRscID}} **{{goto MenuShowItem,MenuShowItem}} {{div_end}} {{div_begin "style='position:relative;padding:0px;padding-right:5px;padding-left:10px;margin-right:250px;margin-top:20px;width:auto;border-right-style:dotted;border-right-width:2px;border-right-color:silver;'"}} この章では、ヘッダ ファイル {{span style='color:blue;font-family:monospace;',Menu.h}} で定義されている、メニュー API について説明します。以下のことについて説明します。 *{{goto Menu Data Structures,メニュー データ構造体}} *{{goto Menu Constants,メニュー定数}} *{{goto Menu Resources,メニュー リソース}} *{{goto Menu Functions,メニュー関数}} メニューについての追加情報は、''Palm OS Programmer's Companion, vol. I'' の[[「メニュー」|Palm OS Programmer's Companion Volume I/4-6]]を参照してください。 !!{{anchor Menu Data Structures}}メニュー データ構造体 {{goto top,^TOP^}} !{{anchor MenuBarAttrType}}MenuBarAttrType 構造体 {{goto top,^TOP^}} '''目的''' {{span style='color:blue;font-family:monospace;',MenuBarAttrType}} ビット フィールドはメニュー バーの特性を定義します。 //---- //{{span style='color:red;font-weight:bold;',WARNING!}} PalmSource 社(訳者注: 現 ACCESS 社)は {{span style='color:blue;font-family:monospace;',MenuBarAttrType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしてはいけません。そのようなコードは将来のバージョンでは機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 //---- ::{{span style='color:red;font-weight:bold;',WARNING!}} :::PalmSource 社(訳者注: 現 ACCESS 社)は {{span style='color:blue;font-family:monospace;',MenuBarAttrType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしてはいけません。そのようなコードは将来のバージョンでは機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 '''Prototype''' typedef struct { UInt16 visible : 1; UInt16 commandPending : 1; UInt16 insPtEnabled : 1; UInt16 needsRecalc : 1; } MenuBarAttrType; コードは {{span style='color:blue;font-family:monospace;',MenuBarAttrType}} を実体の無いものとして扱うべきです。各値を取得、セットするために、以下の説明で指定される関数を使用してください。構造体メンバを直接変更しようとしないでください。 '''フィールド''' *{{span style='color:blue;font-family:monospace;',visible}} **セットされている場合、メニュー バーは描かれ、スクリーン上で可視になります。この属性は、メニューが描かれるときに呼び出される {{goto MenuDrawMenu,MenuDrawMenu()}} の中でセットされます。 *{{span style='color:blue;font-family:monospace;',commandPending}} **セットされている場合、メニュー コマンド ショートカットは進行中です。このビットは、メニュー ショートカット キー入力を受け取った場合に {{MenuHandleEvent,MenuHandleEvent()}} の中でセットされます。タイムアウト値が届く前に次のキーを受け取った場合、キーは有効なメニュー コマンドかどうかチェックされます。 *{{span style='color:blue;font-family:monospace;',insPtEnabled}} **メニューが描かれた時点での挿入ポイントの状態を保存します。それにより、メニューが消されたときに挿入ポイントの状態を元に戻すことが可能です。 *{{span style='color:blue;font-family:monospace;',needsRecalc}} **セットされている場合、メニューの次元(サイズ?)を再計算します。 '''互換性''' {{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、{{span style='color:blue;font-family:monospace;',needsRecalc}} は存在します。 !{{anchor MenuCmdBarButtonType}}MenuCmdBarButtonType 構造体 {{goto top,^TOP^}} '''目的''' {{span style='color:blue;font-family:monospace;',MenuCmdBarButtonType}} 構造体はコマンド バー上に表示されるボタンを定義します。{{goto MenuCmdBarType,MenuCmdBarType}} 構造体の {{span style='color:blue;font-family:monospace;',buttonsData}} フィールドはこの構造体の配列を保持します。 //---- //{{span style='color:red;font-weight:bold;',WARNING!}} PalmSource 社(訳者注: 現 ACCESS 社)は {{span style='color:blue;font-family:monospace;',MenuCmdBarButtonType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしてはいけません。そのようなコードは将来のバージョンでは機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 //---- ::{{span style='color:red;font-weight:bold;',WARNING!}} :::PalmSource 社(訳者注: 現 ACCESS 社)は {{span style='color:blue;font-family:monospace;',MenuCmdBarButtonType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしてはいけません。そのようなコードは将来のバージョンでは機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 '''Prototype''' typedef struct { UInt16 bitmapId; Char name[menuCmdBarMaxTextLength]; MenuCmdBarResultType resultType; UInt8 reserved; UInt32 result; } MenuCmdBarButtonType; コードは {{span style='color:blue;font-family:monospace;',MenuBarAttrType}} を実体の無いものとして扱うべきです。構造体メンバを直接変更しようとしないでください。その代わり、表示されるボタンを追加するために {{goto MenuCmdBarAddButton,MenuCmdBarAddButton()}} を使用してください。{{span style='color:blue;font-family:monospace;',MenuCmdBarAddButton}} のパラメータは {{span style='color:blue;font-family:monospace;',MenuCmdBarButtonType}} のフィールドとほとんど同じです。そのため、このフィールドを直接変更する必要はないはずです。 {{goto MenuCmdBarGetButtonData,MenuBarGetButtonData()}} を使ってコマンド バー ボタンについての情報にアクセスすることができます。 '''フィールド''' *{{span style='color:blue;font-family:monospace;',bitmapId}} **ボタン上に表示されるビットマップのリソース ID。このビットマップは高さ 13 ピクセル×幅 16 ピクセルにすべきです。 *{{span style='color:blue;font-family:monospace;',name}} **ユーザがボタンをタップしたときステータス メッセージに表示されるテキスト。 *{{span style='color:blue;font-family:monospace;',resultType}} **{{span style='color:blue;font-family:monospace;',result}} フィールドに保持されるデータの型を指定します。{{goto MenuCmdBarResultType,MenuCmdBarResultType}} を参照してください。 *{{span style='color:blue;font-family:monospace;',reserved}} **将来使用するために予約されています。 *{{span style='color:blue;font-family:monospace;',result}} **ユーザがボタンをクリックしたときに送られるデータを指定します。データは {{span style='color:blue;font-family:monospace;',resultType}} で指定された型であると解釈されます。結果は {{goto keyDownEvent,keyDownEvent|Palm OS Programmer's API Reference/2}} の中に加えられるショートカット文字、{{goto menuEvent,menuEvent|Palm OS Programmer's API Reference/2}} の中に加えられるアイテム ID、あるいはブロードキャストされる通知になる可能性があります。 '''互換性''' この構造体は、{{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、定義されます。 !{{anchor MenuCmdBarResultType}}MenuCmdBarRedultType 列挙体 {{goto top,^TOP^}} '''目的''' {{span style='color:blue;font-family:monospace;',MenuCmdBarResultType}} 列挙体は {{goto MenuCmdBarButtonType,MenuCmdBarButtonType}} 構造体の中の {{span style='color:blue;font-family:monospace;',result}} フィールドがどのように解釈されるべきなのかを指定します。 '''Prototype''' typedef enum { menuCmdBarResultNone, menuCmdBarResultChar, menuCmdBarResultMenuItem, menuCmdBarResultNotify } MenuCmdBarResultType; '''定数''' *{{span style='color:blue;font-family:monospace;',menuCmdBarResultNone}} **何も送りません。 *{{span style='color:blue;font-family:monospace;',menuCmdBarResultChar}} **結果は {{goto keyDownEvent,keyDownEvent|Palm OS Programmer's API Reference/2}} の中に送られる文字です。 *{{span style='color:blue;font-family:monospace;',menuCmdBarResultMenuItem}} **結果は {{goto menuEvent,menuEvent|Palm OS Programmer's API Reference/2}} の中に送られるメニュー アイテムの ID です。 *{{span style='color:blue;font-family:monospace;',menuCmdBarResultNotify}} **結果は {{goto SysNotifyBroadcastDeferred,SysNotifyBroadcastDeferred()|Palm OS Programmer's API Reference/43}} を使ってブロードキャストされる通知定数です。 '''互換性''' この列挙体は、{{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、定義されます。 !{{anchor MenuCmdBarType}}MenuCmdBarType 構造体 {{goto top,^TOP^}} '''目的''' {{span style='color:blue;font-family:monospace;',MenuCmdBarType}} 構造体はコマンド ツールバーを定義します。このコマンド ツールバーは、ユーザが入力エリアにショートカット キー入力をしたときに、割り当てられ、表示されます。{{goto MenuEarseStatus,MenuEraseStatus()}} が呼び出されたときに、割り当てを解除されます。これはたいていタイムアウト値が経過したときに起こります。 //---- //{{span style='color:red;font-weight:bold;',WARNING!}} PalmSource 社(訳者注: 現 ACCESS 社)は {{span style='color:blue;font-family:monospace;',MenuCmdBarType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしてはいけません。そのようなコードは将来のバージョンでは機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 //---- ::{{span style='color:red;font-weight:bold;',WARNING!}} :::PalmSource 社(訳者注: 現 ACCESS 社)は {{span style='color:blue;font-family:monospace;',MenuCmdBarType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしてはいけません。そのようなコードは将来のバージョンでは機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 '''Prototype''' typedef struct MenuCmdBarType { WinHandle bitsBehind; Int32 timeoutTick; Coord top; Int16 numButtons; Boolean insPtWasEnabled; Boolean gsiWasEnabled; Boolean feedbackMode; MenuCmdBarButtonType *buttonsData; } MenuCmdBarType; コードは {{span style='color:blue;font-family:monospace;',MenuCmdBarType}} を実体の無いものとして扱うべきです。構造体メンバを直接変更しようとしないでください。 '''フィールド''' *{{span style='color:blue;font-family:monospace;',bitsBehid}} **コマンド ツールバーによって隠される領域を保持するウィンドウのためのハンドル。 *{{span style='color:blue;font-family:monospace;',timeoutTick}} **システム時計に与えられるタイムアウト値。この値の時間が経過した時点でユーザがコマンドを指定していなければ、コマンド ツールバーはスクリーンから消され、メモリの割り当てを解除されます。この値はまた、ユーザがコマンド入力に成功した場合にどれくらいの時間ステータス メッセージを表示するかも指定します。 *{{span style='color:blue;font-family:monospace;',top}} **コマンド ツールバーの上端の境界位置をディスプレイからの相対座標で示します。コマンド ツールバーの幅はスクリーンの幅と等しく、スクリーンの最下段に表示されます。 *{{span style='color:blue;font-family:monospace;',numButtons}} **コマンド ツールバー上に表示されるボタンの数。 *{{span style='color:blue;font-family:monospace;',insPtWasEnabled}} **{{span style='color:blue;font-family:monospace;',true}} の場合、コマンド ツールバーが表示される前の時点で挿入ポイントは使用可能であって、コマンド ツールバーが消されるときに挿入ポイントを再度使用可能にするべきです。{{span style='color:blue;font-family:monospace;',false}} の場合、挿入ポイントは使用不可でした。 *{{span style='color:blue;font-family:monospace;',gsiWasEnabled}} **{{span style='color:blue;font-family:monospace;',true}} の場合、コマンド ツールバーが表示される前の時点でシフト指示子は使用可能であって、コマンド ツールバーが消されるときにシフト指示子を再度使用可能にするべきです。{{span style='color:blue;font-family:monospace;',false}} の場合、シフト指示子は使用不可でした。 *{{span style='color:blue;font-family:monospace;',feedbackMode}} **{{span style='color:blue;font-family:monospace;',true}} の場合、コマンド ツールバーは現在ステータス メッセージを表示しています。ステータス メッセージはユーザに実行されようとしているコマンドは何なのかを知らせるために表示されます。{{span style='color:blue;font-family:monospace;',false}} の場合、コマンド ツールバーは入力待ちの状態です。 *{{span style='color:blue;font-family:monospace;',buttonsData}} **コマンド ツールバー上に表示されるボタンのリスト。{{goto MenuCmdBarButtonType,MenuCmdBarButtonType}} を参照してください。ボタンはこのリストに右端のボタン(インデックス 0)から順に保存されています。{{goto MenuCmdBarGetButtonData,MenuCmdBarGetButtonData()}} を使ってアクセスします。 '''互換性''' この構造体は、{{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、定義されます。 !{{anchor MenuBarPtr}}MenuBarPtr Typedef {{goto top,^TOP^}} '''目的''' {{span style='color:blue;font-family:monospace;',MenuBarPtr}} 型は {{goto MenuBarType,MenuBarType}} へのポインタを定義します。 '''Prototype''' typedef MenuBarType *MenuBarPtr; !{{anchor MenuBarType}}MenuBarType 構造体 {{goto top,^TOP^}} '''目的''' {{span style='color:blue;font-family:monospace;',MenuBarType}} 構造体はメニュー バーを定義します。フォームごとに 1 つのメニュー バーがあります。 //---- //{{span style='color:red;font-weight:bold;',WARNING!}} PalmSource 社(訳者注: 現 ACCESS 社)は {{span style='color:blue;font-family:monospace;',MenuBarType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしてはいけません。そのようなコードは将来のバージョンでは機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 //---- ::{{span style='color:red;font-weight:bold;',WARNING!}} :::PalmSource 社(訳者注: 現 ACCESS 社)は {{span style='color:blue;font-family:monospace;',MenuBarType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしてはいけません。そのようなコードは将来のバージョンでは機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 '''Prototype''' typedef struct { WinHandle barWin; WinHandle bitsBehind; WinHandle savedActiveWin; WinHandle bitsBehindStatus; MenuBarAttrType attr; Int16 curMenu; Int16 curItem; Int32 commandTick; Int16 numMenus; MenuPullDownPtr menus; } MenuBarType; コードは {{span style='color:blue;font-family:monospace;',MenuBarType}} を実体の無いものとして扱うべきです。構造体メンバを直接変更しようとしないでください。 '''フィールド''' *{{span style='color:blue;font-family:monospace;',barWin}} **メニュー バーを保持するウィンドウのためのハンドル *{{span style='color:blue;font-family:monospace;',bitsBehid}} **コマンド ツールバーによって隠される領域を保持するウィンドウのためのハンドル。 *{{span style='color:blue;font-family:monospace;',saveActiveWin}} **現在アクティブなウィンドウを保存しておくためのハンドル。これにより、メニューが消されたときにウィンドウを元に戻すことが可能です。 *{{span style='color:blue;font-family:monospace;',bitsBehindStatus}} **ステータス メッセージの背後にあるビットを保存しておくためのハンドル。これにより、メッセージが消されたときにビットを元に戻すことが可能です。ステータス メッセージは、ユーザがコマンド キー入力をしてメニューをアクティブにしたときに、表示されます。 *{{span style='color:blue;font-family:monospace;',attr}} **メニュ バー属性。{{goto MenuBarAttrType,MenuBarAttrType}} を参照してください。 *{{span style='color:blue;font-family:monospace;',curMenu}} **現在可視のメニューのメニュー番号。メニューは 0 から順に番号を付けられます。メニュー バーが棄却される(訳者注: dismiss、表示が消される?メモリが解放される?)とき、この値は保存されます。{{span style='color:blue;font-family:monospace;',noMenuSelection}} の値は現在プル-ダウン メニューが無いことを示します。 *{{span style='color:blue;font-family:monospace;',curItem}} **現在ハイライトされているメニュ アイテムのアイテム番号。各メニューのアイテムは 0 から順に番号を付けられます。{{span style='color:blue;font-family:monospace;',noMenuItemSelection}} の値は現在選択されているアイテムが無いことを示します。 *{{span style='color:blue;font-family:monospace;',commandTick}} **ステータス メッセージが消されるべき時間をカウントする時計。 *{{span style='color:blue;font-family:monospace;',numMenus}} **メニュー バー上のプル-ダウン メニューの数。 *{{span style='color:blue;font-family:monospace;',menus}} **{{goto MenuPullDownType,MenuPullDownType}} 構造体の配列。 '''互換性''' {{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合、{{span style='color:blue;font-family:monospace;',bitsBehindStatus}} と {{span style='color:blue;font-family:monospace;',commandTick}} フィールドは定義されますが使用されません。その代わり、{{goto MenuCmdBarType,MenuCmdBarType}} 構造体の中の {{span style='color:blue;font-family:monospace;',bitsBehindStatus}} と {{span style='color:blue;font-family:monospace;',commandTick}} フィールドが背後にあるウィンドウの保存用ハンドルとコマンド ツールバーのためのタイムアウト値を定義します。 !{{anchor MenuItemType}}MenuItemType 構造体 {{goto top,^TOP^}} '''目的''' {{span style='color:blue;font-family:monospace;',MenuItemType}} 構造体はメニューの中のある特定のアイテムを定義します。{{goto MenuPullDownType,MenuPullDownType}} 構造体の中の {{span style='color:blue;font-family:monospace;',items}} 配列は、プル-ダウン メニューの中にある各メニュー アイテムに対して 1 つの {{span style='color:blue;font-family:monospace;',MenuItemType}} 構造体を保持します。 {{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合、{{goto MenuAddItem,MenuAddItem()}} を使ってプログラム上でメニュー アイテムをプル-ダウン メニューに追加することができます。 //---- //{{span style='color:red;font-weight:bold;',WARNING!}} PalmSource 社(訳者注: 現 ACCESS 社)は {{span style='color:blue;font-family:monospace;',MenuItemType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしてはいけません。そのようなコードは将来のバージョンでは機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 //---- ::{{span style='color:red;font-weight:bold;',WARNING!}} :::PalmSource 社(訳者注: 現 ACCESS 社)は {{span style='color:blue;font-family:monospace;',MenuItemType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしてはいけません。そのようなコードは将来のバージョンでは機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 '''Prototype''' typedef struct { UInt16 id; Char command; UInt8 hidden: 1; UInt8 reserved: 7; Char *itemStr; } MenuItemType; '''フィールド''' *{{span style='color:blue;font-family:monospace;',id}} **メニュ アイテムの作成時に指定された ID 値。この ID 値は{{goto menuEvent,menuEvent|Palm OS Programmer's API Reference/2}} のイベント データの一部として含まれます。 *{{span style='color:blue;font-family:monospace;',command}} **ショートカット キー。ショートカットを提供する場合、各ショートカットはその時点で使用可能なすべてのコマンド間で固有であることを確認してください。 *{{span style='color:blue;font-family:monospace;',hidden}} **{{span style='color:blue;font-family:monospace;',true}} の場合、メニュー アイテムは隠されます。{{span style='color:blue;font-family:monospace;',false}} の場合、表示されます。{{goto MenuHideItem,MenuHideItem()}} と {{goto MenuShowItem,MenuShowItem()}} を使ってこの値をセット、クリアすることができます。 *{{span style='color:blue;font-family:monospace;',reserved}} **将来使用するために予約されています。 *{{span style='color:blue;font-family:monospace;',itemStr}} **このメニュー アイテムに表示されるテキストへのポインタ。このテキストはショートカット キーを含みます。ショートカット キーを含めるには、文字列をアイテムのテキストから開始し、それからタブ文字、それからアイテムのショートカット キーと続けます。セパレータ バーを作成するには、{{span style='color:blue;font-family:monospace;',MenuSeparatorChar}} 定数を保持する 1 文字の文字列を作成してください。 '''互換性''' {{span style='color:blue;font-family:monospace;',hidden}} と {{span style='color:blue;font-family:monospace;',reserved}} フィールドは、{{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、定義されます。 !{{anchor MenuPullDownPtr}}MenuPullDownPtr Typedef {{goto top,^TOP^}} {{span style='color:blue;font-family:monospace;',MenuPullDownPtr}} 型は {{goto MenuPullDownType,MenuPullDownType}} へのポインタを定義します。 '''Prototype''' typedef MenuPullDownType *MenuPullDownPtr; !{{anchor MenuPullDownType}}MenuPullDownType 構造体 {{goto top,^TOP^}} '''目的''' {{span style='color:blue;font-family:monospace;',MenuPullDownType}} 構造体はメニュー バーからアクセスされるある特定のメニューを定義します。{{goto MenuBarType,MenuBarType}} 構造体の中のメニュー配列は、メニュー バーに関連付けられた各プル-ダウン メニューに対して 1 つの {{span style='color:blue;font-family:monospace;',MenuPullDownType}} を保持します。 //---- //{{span style='color:red;font-weight:bold;',WARNING!}} PalmSource 社(訳者注: 現 ACCESS 社)は {{span style='color:blue;font-family:monospace;',MenuPullDownType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしてはいけません。そのようなコードは将来のバージョンでは機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 //---- ::{{span style='color:red;font-weight:bold;',WARNING!}} :::PalmSource 社(訳者注: 現 ACCESS 社)は {{span style='color:blue;font-family:monospace;',MenuPullDownType}} 構造体の下位互換をサポートしていません。構造体メンバに直接アクセスしてはいけません。そのようなコードは将来のバージョンでは機能しないかもしれません。以下の情報はデバッグ目的でのみ使用してください。 '''Prototype''' typedef struct { WinHandle menuWin; RectangleType bounds; WinHandle bitsBehind; RectangleType titleBounds; Char *title; UInt16 hidden : 1; UInt16 numItems : 15; MenuItemType *items; } MenuPullDownType; '''フィールド''' *{{span style='color:blue;font-family:monospace;',menuWin}} **メニューを保持するウィンドウのためのハンドル。 *{{span style='color:blue;font-family:monospace;',bounds}} **プル-ダウン メニューの位置とサイズ(ピクセル単位)。 *{{span style='color:blue;font-family:monospace;',bitsBehind}} **メニューによって隠される領域を保持するウィンドウのハンドル。 *{{span style='color:blue;font-family:monospace;',title}} **メニュー バーの中に表示されるメニュー タイトル(null で終了する文字列)。 *{{span style='color:blue;font-family:monospace;',titleBounds}} **メニュー バーの中のタイトルの位置とサイズ(ピクセル単位)。 *{{span style='color:blue;font-family:monospace;',hidden}} **{{span style='color:blue;font-family:monospace;',true}} の場合、メニューは隠されます。{{span style='color:blue;font-family:monospace;',false}} の場合、表示されます。このフィールドは現在使用されません。 *{{span style='color:blue;font-family:monospace;',numItems}} **メニューの中のアイテムの数。セパレータはアイテムとしてカウントされます。 *{{span style='color:blue;font-family:monospace;',items}} **{{goto MenuItemType,MenuItemType}} 構造体の配列。 '''互換性''' {{span style='color:blue;font-family:monospace;',hidden}} フィールドは、{{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、定義されます。 !!{{anchor Menu Constants}}メニュー定数 {{goto top,^TOP^}} ,定数,値,説明 ,"{{span style='color:blue;font-family:monospace;',noMenuSelection}}",-1,"{{goto MenuBarType,MenuBarType}} の {{span style='color:blue;font-family:monospace;',curMenu}} フィールドは、現在選択されているメニューが無いとき、この値にセットされます。" ,"{{span style='color:blue;font-family:monospace;',noMenuItemSelection}}",-1,"{{span style='color:blue;font-family:monospace;',MenuBarType}} の {{span style='color:blue;font-family:monospace;',curItem}} フィールドは、現在選択されているメニュー アイテムが無いとき、この値にセットされます。" ,"{{span style='color:blue;font-family:monospace;',separatorItemSelection}}",-2,"{{span style='color:blue;font-family:monospace;',MenuBarType}} の {{span style='color:blue;font-family:monospace;',curItem}} フィールドは、メニュー セパレータ アイテムが選択されているとき、この値にセットされます。" ,"{{span style='color:blue;font-family:monospace;',MenuSeparatorChar}}","'-'","メニュー アイテムがメニュー アイテムをグループ分けするのに使用されるバーであることを示す特別な文字。{{goto MenuItemType,MenuItemType}} の中の {{span style='color:blue;font-family:monospace;',itemStr}} 文字列の最初の文字がこの値にセットされます。" !!{{anchor Menu Resources}}メニュー リソース {{goto top,^TOP^}} メニュー バー(MBAR)とプル-ダウン メニュー(MENU)リソースはスクリーン上のメニュー オブジェクトを表すために一緒に使用されます。追加情報は、''Palm OS User Interface Guidelines'' を参照してください。 !!{{anchor Menu Functions}}メニュー関数 {{goto top,^TOP^}} !{{anchor MenuAddItem}}MenuAddItem 関数 {{goto top,^TOP^}} '''目的''' 現在のアクティブなメニューにアイテムを追加します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' Err MenuAddItem ( UInt16 positionId, UInt16 id, Char cmd, const Char *textP ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ positionId}} **存在しているメニュー アイテムの ID。新しいメニュー アイテムはこのメニュー アイテムの後に追加されます。 *{{span style='color:blue;font-family:monospace;',→ id}} **新しいメニュー アイテムのために使われる ID。 *{{span style='color:blue;font-family:monospace;',→ cmd}} **ショートカット キー。ショートカットを提供する場合、各ショートカットはその時点ですべての使用可能なコマンド間で固有であることを確認してください。 *{{span style='color:blue;font-family:monospace;',→ textP}} **このメニュー アイテムに表示されるテキストへのポインタ。ショートカット キーを含みます。ショートカット キーを含めるには、アイテムのテキストから始めて、それからタブ文字を追加し、それからアイテムのショートカット キーを追加します。セパレータ バーを作成するには、{{span style='color:blue;font-family:monospace;',MenuSeparatorChar}} 定数を保持する 1 文字の文字列を作成してください。 '''返り値''' 成功時には 0 を返します。エラーが起きた場合は以下に示すエラーの 1 つを返します。 *{{span style='color:blue;font-family:monospace;',menuErrNoMenu}} **{{span style='color:blue;font-family:monospace;',textP}} パラメータが {{span style='color:blue;font-family:monospace;',NULL}} です。 *{{span style='color:blue;font-family:monospace;',menuErrSameId}} **メニューはすでに ID {{span style='color:blue;font-family:monospace;',id}} を持つアイテムを保持しています。 *{{span style='color:blue;font-family:monospace;',menuErrNotFound}} **メニューは ID {{span style='color:blue;font-family:monospace;',positionId}} を持つアイテムを保持していません。 現在のメニューが無い場合、致命的なエラー メッセージを表示するかもしれません。 '''コメント''' この関数は新しい {{goto MenuItemType,MenuItemType}} 構造体を作成し、それを {{goto MenuBarType,MenuBarType}} のアイテム リストに追加します。 この関数を {{goto menuOpenEvent,menuOpenEvent|Palm OS Programmer's API Reference/2}} への応答の中でのみ呼び出すべきです。このイベントはメニューが最初にアクティブにされたときに生成されます。一般に、フォームのメニューは、{{span style='color:blue;font-family:monospace;',vchrMenu}} または {{span style='color:blue;font-family:monospace;',vchrCommand}} を持つ {{goto keyDownEvent,keyDownEvent|Palm OS Programmer's API Reference/2}} が最初に生成されたときに、アクティブになり、そのメニューは、新しいフォーム(モーダル ファームまたはアラート パネルを含む)が表示されるか、フォームのメニューを変更するために {{goto FrmSetMenu,FrmSetMenu()|Palm OS Programmer's API Reference/11-2}} が呼び出されるまで、アクティブであり続けます。Palm OS user Interface guidelines は、メニューが最初にアクティブにされるとき以外はいつでも、メニュー アイテムを追加したり隠したりすることを妨げます。 '''互換性''' {{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、実装されます。 !{{anchor MenuCmdBarAddButton}}MenuCmdBarAddButton 関数 {{goto top,^TOP^}} '''目的''' コマンド ツールバー上に表示されるボタンを定義します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' Err MenuCmdBarAddButton ( UInt8 where, UInt16 bitmapId, MenuCmdBarResultType resultType, UInt32 result, Char *nameP ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ where}} **ボタンをコマンド ツールバー上にある他のボタンの左側に追加する場合 {{span style='color:blue;font-family:monospace;',menuCmdBarOnLeft}}、他のボタンの右側またはボタンの正確な位置を示す数の位置に追加する場合は {{span style='color:blue;font-family:monospace;',menuCmdBarOnRight}} でどちらかの値になります。ボタンの位置は右から左へ番号付けされ、右端の位置が番号 1 です。 *{{span style='color:blue;font-family:monospace;',→ bitmapId}} **ボタンの上に表示されるビットマップのリソース ID。ビットマップの大きさは高さ 13 ピクセル、幅 16 ピクセルであるべきです。 *{{span style='color:blue;font-family:monospace;',→ resultType}} **{{span style='color:blue;font-family:monospace;',result}} パラメータの中に保持されるデータのタイプ。{{goto MenuCmdBarResultType,MenuCmdBarResultType}} を参照してください。 *{{span style='color:blue;font-family:monospace;',→ result}} **ユーザがこのボタンをタップしたときに送られるデータ。この値は、文字、メニュー アイテム ID、通知定数になることができます。 *{{span style='color:blue;font-family:monospace;',→ nameP}} **ユーザがボタンをタップした場合にステータス メッセージの中に表示されるテキストへのポインタ。{{span style='color:blue;font-family:monospace;',NULL}} の場合、{{span style='color:blue;font-family:monospace;',result}} の中で保持されている ID またはショートカット文字に一致するメニュー アイテムがあれば、そこからテキストを取り出します。このパラメータにテキスト バッファを提供した場合、{{span style='color:blue;font-family:monospace;',MenuCmdBarAddButton}} はバッファのコピーを作成します。 '''返り値''' 成功時には 0 を返します。エラーが起きた場合、以下に示すエラー コードの 1 つを返します。 *{{span style='color:blue;font-family:monospace;',menuErrOutOfMomery}} **操作を行うのに必要な空き容量が足りません。 *{{span style='color:blue;font-family:monospace;',menuErrTooManyItems}} **コマンド ツールバーはすでに許される最大数のボタンを持っています。(現在のところ最大数は 8) '''コメント''' {{goto menuCmdBarOpenEvent,menuCmdBarOpenEvent|Palm OS Programmer's API Reference/2}} または通知 {{goto sysNotifyMenuCmdBarOpenEvent,sysNotifyMenuCmdBarOpenEvent|Palm OS Programmer's API Reference/3}} への応答の中でこの関数を呼び出します。これらは両方ともユーザがコマンド キー入力を行い、コマンド ツールバーがオープンされようとしていることを知らせるものです。応答として、ボタンをツールバーに追加し、{{span style='color:blue;font-family:monospace;',false}} を返すべきです。それによりイベントを完全にはハンドルしていないことを示します。 {{span style='color:blue;font-family:monospace;',sysNotifyMenuCmdBarOpenEvent}} 通知は、共有ライブラリ、システム拡張、イベント ループを使用しない他のコード リソースによってのみ使用されることを意図しています。アプリケーションを作成する場合、常に通知の代わりにイベントに応答するようにしてください; アプリケーションは、そのアプリケーションが現在のアプリケーションである場合にのみ、ツールバーにボタンを追加すべきです。通知に応答する場合(通知イベントをハンドルする場合)、アプリケーションがアクティブかどうかにかかわらず、コマンド ツールバーが表示されるたびに通知を受け取ります。 コマンド ツールバーはオープンされるたびに割り当てを受け、スクリーンから消されるたびに割り当てを解除されるということに注意してください。 コマンド ツールバー上にボタンを表示するスペースには限りがあります。ボタンの数を 4 つまたは 5 つに制限すべきです。システムによって許される最大数は 8 ですが、ユーザが動作を選択した後に表示されるステータス メッセージのためにスペースを残しておくべきです。ボタンは状況にあったものであるべきです; 例えば、フィールド コードはクリップボードにテキストがある場合にのみ貼付ボタンを表示すべきです。ボタンのためのビットマップは 16 X 13 ピクセルであるべきです。 コマンド ツールバーがオープンされるときにフィールドがフォーカスされている場合、フィールド マネージャは切取、コピー、貼付、取消のためのボタンを追加します。アプリケーションがこのデフォルトの振る舞いを望まない場合、{{span style='color:blue;font-family:monospace;',menuCmdBarOpenEvent}} 構造体の中の {{span style='color:blue;font-family:monospace;',preventFieldButtons}} を {{span style='color:blue;font-family:monospace;',true}} にセットしてください。(通知ハンドラ内からのフィールド ボタンを表示させない方法は無いということに注意してください。) 以下に示すコマンド ツールバーのためのビットマップは {{span style='color:blue;font-family:monospace;',UIResources.h}} の中で定義されています。システムとビルド-イン アプリケーションはこれらのビットマップを、表の中でリストされているコマンドを表すために、使用します。作成するアプリケーションが同じ動作を行う場合も、これらを使うべきです。これらのボタンのいずれかを使用する場合、これらのボタンを右から左へと表示される順に追加します。(例えば、{{span style='color:blue;font-family:monospace;',BarDeleteBitmap}} を使用する場合、それは常に右端のボタンであるべきです。) ,'''ビットマップ''','''コマンド''' ,"{{span style='color:blue;font-family:monospace;',BarDeleteBitmap}}","レコードを削除する。" ,"{{span style='color:blue;font-family:monospace;',BarPasteBitmap}}","クリップボードの内容を挿入ポイントに貼り付ける。" ,"{{span style='color:blue;font-family:monospace;',BarCopyBitmap}}","選択されているものをコピーする。" ,"{{span style='color:blue;font-family:monospace;',BarCutBitmap}}","選択されているものを切り取る。" ,"{{span style='color:blue;font-family:monospace;',BarUndoBitmap}}","前の動作を取り消す。" ,"{{span style='color:blue;font-family:monospace;',BarSecureBitmap}}","セキュリティ ダイアログを表示する。" ,"{{span style='color:blue;font-family:monospace;',BarBeamBitmap}}","現在のレコードを無線通信で送る。" ,"{{span style='color:blue;font-family:monospace;',BarInfoBitmap}}","情報ダイアログを表示する。(起動する。(訳者注: ? 原文 Launcher))" ボタンを左側に追加するのが最善です。右側にボタンを追加する場合、この関数は存在するすべてのボタンを 1 つ分左に移動させます。また、{{span style='color:blue;font-family:monospace;',where}} パラメータで特定の位置を指定することもできます。位置は右から左へと順に、右端が 1 になるように番号を付けられています。特定の位置を指定する場合、この関数は他のボタンのためのスペースを残します。例えば、位置 3 を指定し、位置 1 と 2 に表示されているボタンが無い場合、追加されたボタンの右側に空白ができます。 {{span style='color:blue;font-family:monospace;',result}} と {{span style='color:blue;font-family:monospace;',resultType}} パラメータは、ユーザがボタンをタップして場合に、結果がどうなるべきなのかを指定します。{{span style='color:blue;font-family:monospace;',result}} は実際のデータを保持し、{{span style='color:blue;font-family:monospace;',resultType}} は {{span style='color:blue;font-family:monospace;',result}} の中のデータのタイプを指定する定数を保持します。通常、結果は {{goto menuEvent,menuEvent|Palm OS Programmer's API Reference/2}} の中に送られます。このケースでは、{{span style='color:blue;font-family:monospace;',resultType}} は {{span style='color:blue;font-family:monospace;',menuCmdBarResultMenuItem}} で、{{span style='color:blue;font-family:monospace;',result}} はイベントの中に含まれるべきであるメニュー アイテムの ID です。 メニュー ID の代わりにショートカット文字を指定することもあるかもしれませんが、それは効率が悪いです。{{span style='color:blue;font-family:monospace;',result}} がショートカット文字である場合、{{goto MenuHandleEvent,MenuHandleEvent()}} 関数は {{span style='color:blue;font-family:monospace;',result}} の中の文字を持つ {{goto keyDownEvent,keyDownEvent|Palm OS Programmer's API Reference/2}} をイベント キューに追加します。イベント ループの次のサイクルで、{{span style='color:blue;font-family:monospace;',MenuHandleEvent}} は {{span style='color:blue;font-family:monospace;',keyDownEvent}} への応答として {{span style='color:blue;font-family:monospace;',menuEvent}} をイベント キューに追加します。つまり、ボタンが直接 {{span style='color:blue;font-family:monospace;',menuEvent}} をイベント キューに追加するほうが良いのです。 あなたがアプリケーションの外側で {{span style='color:blue;font-family:monospace;',MenuCmdBarAddButton}} を呼び出した場合、あなたはアクティブなメニューの中にあるメニュー アイテムのいずれのことも知らないかもしれません(あなたのコードが {{goto MenuAddItem,MenuAddItem()}} を使って追加したアイテムでない限り)。このケースでは、ブロードキャストされる通知を指定します。通知は次のイベント ループの先頭にブロードキャストされ、カスタム データを保持していてはいけません。(アプリケーションは通知の結果タイプをも使用するかもしれません。) '''互換性''' {{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、実装されます。 '''参照''' {{goto MenuCmdBarDisplay,MenuCmdBarDisplay()}}, {{goto MenuCmdBarGetButtonData,MenuCmdBarGetButtonData()}} !{{anchor MenuCmdBarDisplay}}MenuCmdBarDisplay 関数 {{goto top,^TOP^}} '''目的''' コマンド ツールバーを表示します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' void MenuCmdBarDisplay ( void ) '''パラメータ''' ありません。 '''返り値''' 返り値はありません。 '''コメント''' この関数は、ユーザがコマンド キー入力を行ったとき、コマンド ツールバーを表示します。通常、この関数を作成するコードで呼び出すことはありません。フォーム マネージャが、{{goto menuCmdBarOpenEvent,menuCmdBarOpenEvent|Palm OS Programmer's API Reference/2}} のハンドルするとき最後にこの関数を呼び出します。 '''互換性''' {{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、実装されます。 '''参照''' {{goto MenuCmdBarAddButton,MenuCmdBarAddButton()}}, {{goto MenuCmdBarGetButtonData,MenuCmdBarGetButtonData()}} !{{anchor MenuCmdBarGetButtonData}}MenuCmdBarGetButtonData 関数 {{goto top,^TOP^}} '''目的''' 与えられたコマンド ボタンのためのデータを取得します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' Boolean MenuCmdBarGetButtonData( Int16 buttonIndex, UInt16 *bitmapIdP, MenuCmdBarResultType *resultTypeP, UInt32 *resultP, Char *nameP ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ buttonIndex}} **あなたが情報を取得したいボタンのインデックス。ボタンは右から左に並んでいて、右端のボタンがインデックス 0 です。 *{{span style='color:blue;font-family:monospace;',← bitmapIdP}} **ボタン上に表示されるビットマップのリソース ID。この値を取得したくない場合は、{{span style='color:blue;font-family:monospace;',NULL}} を渡します。 *{{span style='color:blue;font-family:monospace;',← resultTypeP}} **このボタンがとるアクションのタイプ。この値を取得したくない場合は、{{span style='color:blue;font-family:monospace;',NULL}} を渡します。 *{{span style='color:blue;font-family:monospace;',← resultP}} **ボタンをタップした結果。この値を取得したくない場合は、{{span style='color:blue;font-family:monospace;',NULL}} を渡します。 *{{span style='color:blue;font-family:monospace;',← nameP}} **このボタンがタップされたときにステータス メッセージの中に表示されるテキスト。この値を取得したくない場合は、{{span style='color:blue;font-family:monospace;',NULL}} を渡します。{{span style='color:blue;font-family:monospace;',NULL}} でない場合、{{span style='color:blue;font-family:monospace;',nameP}} はサイズ {{span style='color:blue;font-family:monospace;',menuCmdBarMaxTextLength }} の文字列を指さなくてはなりません。 '''結果''' 情報が成功裏に取得された場合、{{span style='color:blue;font-family:monospace;',true}} を返します。コマンド ツールバーが無い場合、または、{{span style='color:blue;font-family:monospace;',buttonIndex}} のボタンが無い場合、{{span style='color:blue;font-family:monospace;',false}} を返します。 '''コメント''' この関数を使ってコマンド ツールバー上に表示されるボタンについての情報を取得することができます。コマンド ツールバーがまだ初期化されていない場合、この関数は {{span style='color:blue;font-family:monospace;',false}} を返します。 コマンド ツールバーは、ユーザがコマンド キー入力をしたときに割り当てられ、{{goto MenuEraseStatus,MenuEraseStatus()}} が呼び出されたときに割り当てを解除されることに注意してください。それゆえ、{{span style='color:blue;font-family:monospace;',MenuCmdBarGetButtonData}} を呼び出す論理的な場所は、{{goto menuCmdBarOpenEvent,menuCmdBarOpenEvent|Palm OS Programmer's API Reference/1}} または {{goto sysNotifyMenuCmdBarOpenEvent,sysNotifyMenuCmdBarOpenEvent|Palm OS Programmer's API Reference/3}} 通知に応答するときだけです。 '''互換性''' {{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、実装されます。 '''参照''' {{goto MenuCmdBarDisplay,MenuCmdBarDisplay()}}, {{goto MenuCmdBarAddButton,MenuCmdBarAddButton()}} !{{anchor MenuDispose}}MenuDispose 関数 {{goto top,^TOP^}} メニューとコマンド ステータスに割り当てられたいたすべてのメモリを解放し、保存されていたビットをスクリーンに戻します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' void MenuDispose ( MenuBarType *menuP ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ menuP}} **処分するメニュー オブジェクトへのポインタ。({{goto MenuBarType,MenuBarType}} を参照してください。){{span style='color:blue;font-family:monospace;',NULL}} の場合、この関数はただちに返ります。 '''返り値''' 返り値はありません。 '''コメント''' たいていのアプリケーションはこの関数を直接呼び出す必要はありません。{{span style='color:blue;font-family:monospace;',MenuDispose}} は、メニューを保持しているフォームがもはやアクティブなフォームでなくなったとき、メニューを保持しているフォームが解放されたとき、それに {{goto FrmSetMenu,FrmSetMenu|Palm OS Programmer's API Reference/11}} がフォームのメニュー バーを変更するために呼び出されたときに、システムによって呼び出されます。 '''参照''' {{goto MenuInit,MenuInit()}}, {{goto MenuDrawMenu,MenuDrawMenu()}} !{{anchor MenuDrawMenu}}MenuDrawMenu 関数 {{goto top,^TOP^}} '''目的''' 現在のメニュー バーと最後に可視だったプル-ダウンをを描きます。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' void MenuDrawMenu ( MenuBarType *menuP ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ menuP}} **{{goto MenuBarType,MenuBarType}} へのポインタ。{{span style='color:blue;font-family:monospace;',NULL}} であってはいけません。 '''返り値''' 返り値はありません。 '''コメント''' たいていのアプリケーションはこの関数を直接呼び出す必要はありません。{{goto MenuHandleEvent,MenuHandleEvent()}} は、ユーザがメニュー シルク-スクリーン ボタンをタップしたとき(または Palm OS 3.5 以降ではフォームのタイトルをタップしたとき)、{{span style='color:blue;font-family:monospace;',MenuDrawMenu}} を呼び出します。 メニュー バーとプル-ダウン メニューは、すべてのアプリケーション ウィンドウよりも前面に描かれます。挿入ポイントの状態、メニュー バーとプル-ダウン メニューによって覆い隠されるビット、現在アクティブなウィンドウはメニューが描かれる前に保存されます。これらは、メニューが消されるとき、すべて元に戻されます。 メニューは、メニューがアクティブである限り、最後に表示されたプル-ダウン メニューを追跡し続けます。メニューは以下の条件でそのアクティブ状態を失います: *フォーム上のアクティブなメニューを変更するために {{goto FrmSetMenu,FrmSetMenu|Palm OS Programmer's API Reference/11}} が呼び出されたとき。 *新しいフォーム - モーダル フォーム、アラート パネルであっても - がアクティブになったとき。 ユーザがあなたのアプリケーションの Options メニューから About アイテムを選択し、それからメイン フォームに戻るために OK ボタンをクリックすると仮定します。About ダイアログが表示されるとき、それはアクティブなフォームになり、結果としてメイン フォームのメニュー状態は消去されます。このメニュー状態は、メイン フォームが再びアクティブになったとき、元に戻されません。次に {{span style='color:blue;font-family:monospace;',MenuDrawMenu}} が呼び出されるとき(つまり、次にユーザがメニュー シルク-スクリーン ボタンをタップするとき)、メニュー バーは以前のように表示され、Options プル-ダウン メニューの代わりにメニュー バーの中でリストされている最初のプル-ダウン メニューが表示されます。 '''参照''' {{goto MenuInit,MenuInit()}}, {{goto MenuDispose,MenuDispose()}} !{{anchor MenuEraseStatus}}MenuEarseStatus 関数 {{goto top,^TOP^}} '''目的''' メニュー コマンド ステータスを消去します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' void MenuEraseStatus ( MenuBarType *menuP ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ menuP}} **{{goto MenuBarType,MenuBarType}} へのポインタ。現在のメニューの場合は {{span style='color:blue;font-family:monospace;',NULL}}。 '''返り値''' 返り値はありません。 '''コメント''' ユーザがコマンドキー入力を使ってメニュー コマンドを選択したとき、コマンド ツールバーまたはステータス メッセージがスクリーン最下部に表示されます。{{span style='color:blue;font-family:monospace;',MenuEraseStatus}} はツールバー またはステータス メッセージを消去します。 たいていの状況では、あなたはこの関数を明示的に呼び出す必要はありません - ただ、現在のメニュー コマンド ステータスにそれ自身を自動的に削除させるだけです。さもなければ、あなたはユーザがそれを見るよりも早くテキストを消去するかもしれません。 あなたは、コマンド ツールバーがユーザが選択したメニュー コマンドによって変更されるものをカバーする場合にのみ、{{span style='color:blue;font-family:monospace;',MenuEraseStatus}} を明示的に呼び出します。例えば、ユーザが新しいフォームを表示させるコマンドを選択した場合、コマンドを実行する前に {{span style='color:blue;font-family:monospace;',MenuEraseStatus}} を呼び出します。またh、コマンドが何かを ウィンドウの下部に描く場合、描画関数を実行する前に {{span style='color:blue;font-family:monospace;',MenuEraseStatus}} を呼び出します。 '''互換性''' メニュー ショートカット文字が入力されたときの正確な動作は、実行されているオペレーティング システムのバージョン次第です。リリース 3.5 よりも前のバージョンでは、システムは、ユーザが Graffiti または Graffiti 2 コマンド入力をしたとき、スクリーンの左下に文字列 "Command:" を表示します。Palm OS 3.5 以降では、コマンド入力はコマンド ツールバーを表示します。このツールバーはスクリーンと同じ幅を持ち、ユーザがその他のキー入力をする代わりにタップすることができるボタンを表示します。ユーザがボタンをタップするか、アクティブ メニュー上に表示されているショートカット文字と一致する文字を入力したとき、コマンドが実行されている間ステータス メッセージがツールバーの中に表示されます。Palm OS 3.5 以降で {{span style='color:blue;font-family:monospace;',MenuEraseStatus}} を呼び出すと、コマンド ツールバー データ構造体の割り当てを解除するのと同時にスクリーンからコマンド ツールバーを消去します。 コマンド ツールバーは Palm OS 3.5 以降ではステータス メッセージの表示以上のことをするため、あなたはそれより前のバージョンの Palm OS よりも頻繁に {{span style='color:blue;font-family:monospace;',MenuEraseStatus}} を呼び出す必要があるかもしれません。 '''参照''' {{goto MenuInit,MenuInit()}} !{{anchor MenuGetActiveMenu}}MenuGetActiveMenu {{goto top,^TOP^}} '''目的''' 現在アクティブなメニューへのポインタを返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' MenuBarType *MenuGetActiveMenu ( void ) '''パラメータ''' ありません。 '''返り値''' 現在アクティブなメニューへのポインタを返します。ポインタが無い場合は、{{span style='color:blue;font-family:monospace;',NULL}} を返します。 '''コメント''' アクティブなメニューは必ずしもスクリーン上で可視であるわけではありません。例えば、コマンド ショートカットが入力された場合、メニューはアクティブであるけれども可視ではないかもしれません。一般に、フォームのメニューはまず最初に {{goto keyDownEvent,keyDownEvent,|Palm OS Programmer's API Reference/2}} が {{span style='color:blue;font-family:monospace;',vchrMenu}} または {{span style='color:blue;font-family:monospace;',vchrCommand}} と共に生成されたときにアクティブになり、新しいフォーム(モーダル フォームまたはアラート パネルを含む)が表示されるか、{{goto FrmSetMenu,FrmSetMenu()|Palm OS Programmer's API Reference/11}} が呼び出されてフォームのメニューが変更されるまで、アクティブのままでいます。 ウィンドウへのカスタム描画を行うアプリケーションはしばしば、メニューの上に描画していないことを保証するためにメニューが可視であるかどうかをチェックします。どのようにメニューの可視性を検証するかについての説明は、''Palm OS Programmer's Companion, vol. I'' の {{goto p3,「メニューの可視性チェック」|Palm OS Programmer's Companion Volume I/4-6}} を参照してください。 '''参照''' {{goto MenuHandleEvent,MenuHandleEvent()}}, {{goto MenuSetActiveMenu,MenuSetActiveMenu()}} !{{anchor MenuHandleEvent}}MenuHandleEvent 関数 {{goto top,^TOP^}} '''目的''' 現在のメニューの中のイベントを処理します。このルーチンは 2 タイプのイベント - {{goto penDownEvent,penDownEvent|Palm OS Programmer's API Reference/2}} と {{goto keyDownEvent,keyDownEvent|Palm OS Programmer's API Reference/2}} を処理します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' Boolean MenuHandleEvent ( MenuBarType *menuP, EventType *event, UInt16 *error ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ menuP}} **{{goto MenuBarType,MenuBarType}} データ 構造体へのポインタ。 *{{span style='color:blue;font-family:monospace;',→ event}} **{{goto EventType,EventType|Palm OS Programmer's API Reference/2}} 構造体へのポインタ。 *{{span style='color:blue;font-family:monospace;',→ error}} **エラー(エラー無しの場合は 0)。現在のところ、この関数は常に11{{span style='color:blue;font-family:monospace;',error}} に 0 をセットします。 '''返り値''' イベントが処理された場合、{{span style='color:blue;font-family:monospace;',true}} を返します。つまり、イベントがメニュー バーまたはメニュー内部での {{goto penDownEvent,penDownEvent|Palm OS Programmer's API Reference/2}} であるか、メニューがサポートする {{goto keyDownEvent,keyDownEvent|Palm OS Programmer's API Reference/2}} である場合です。それ以外のイベントでは {{span style='color:blue;font-family:monospace;',false}} を返します。 '''コメント''' {{goto penDownEvent,penDownEvent|Palm OS Programmer's API Reference/2}} がメニュー バーの中で受信された場合、{{span style='color:blue;font-family:monospace;',MenuHandleEvent}} はペンをペンが持ち上がるまで追跡します。ペンがメニュー バーの領域内で持ち上がった場合、選択されたタイトルは反転し、適切なプル-ダウン メニューが表示されます。それ以前のプル-ダウン メニューは消去されます。ペンがメニュー バーとプル-ダウン メニューの外側で持ち上がった場合、メニューは消去されます。 {{span style='color:blue;font-family:monospace;',penDownEvent}} がプル-ダウン メニューの中で受信された場合、{{span style='color:blue;font-family:monospace;',MenuHandleEvent}} はペンをペンが持ち上がるまで追跡します。ペンがメニューの領域内で持ち上がった場合、選択されたメニュー アイテムのリソース ID を保持している {{goto menuEvent,menuEvent|Palm OS Programmer's API Reference/2}} がイベント キューに追加されます。ペンがメニューとメニュー バーの外側で持ち上がった場合、メニューはしょうきょされます。 {{span style='color:blue;font-family:monospace;',vchrMenu}} を持つ {{goto keyDownEvent,keyDownEvent|Palm OS Programmer's API Reference/2}} が受信された場合、メニューはメニューが可視でないなら描かれ、メニューが可視なら消去されます。 {{span style='color:blue;font-family:monospace;',vchrCommand}} を持つ {{span style='color:blue;font-family:monospace;',keyDownEvent}} が樹脂インされた場合、コマンド ショートカットが実行されます。コマンド ショートカットは、実行されている Palm OS のバージョンによってことなる扱われ方をします。3.5 よりも前のバージョンでは、次の {{span style='color:blue;font-family:monospace;',keyDownEvent}} が有効なメニュー ショートであるかどうかを調べるためにチェックされます。有効なショートカットであるなら、{{goto menuEvent,menuEvent|Palm OS Programmer's API Reference/2}} がイベント キューに追加されます。 Palm OS 3.5 以降で {{span style='color:blue;font-family:monospace;',vchrCommand, }} を持つ {{span style='color:blue;font-family:monospace;',keyDownEvent}} が受信された場合、{{span style='color:blue;font-family:monospace;',MenuHandleEvent}} はツールバーがまだオープンされていないなら {{goto menuCmdBarOpenEvent,menuCmdBarOpenEvent|Palm OS Programmer's API Reference/2}} をキューに追加します。{{span style='color:blue;font-family:monospace;',menuCmdBarOpenEvent}} はアプリケーションにそれ自身のボタンをコマンド ツールバーに追加する機会を与えます。次のイベントはショートカットとなる文字を持つ {{span style='color:blue;font-family:monospace;',keyDownEvent}} であるか、ツールバー上のボタンの 1 つでの {{span style='color:blue;font-family:monospace;',penDownEvent}} であるかもしれません。{{span style='color:blue;font-family:monospace;',keyDownEvent}} は以前のリリースと同じように処理されます - それが有効なメニュー ショートカットであるなら、{{goto menuEvent,menuEvent|Palm OS Programmer's API Reference/2}} がイベント キューに追加されます。次のイベントが {{span style='color:blue;font-family:monospace;',penDownEvent}} の場合、ペンは持ち上がるまで追跡されます。ペンがボタンの領域内で持ち上がった場合、適切なアクションがとられます。更なる情報は、{{goto MenuCmdBarAddButton,MenuCmdBarAddButton()}} の説明を参照してください。 Palm OS バージョン 3.5 以降では、{{span style='color:blue;font-family:monospace;',vchrMenu}} または {{span style='color:blue;font-family:monospace;',vchrCommand}} のどちらかのイベントが最初にメニューをアクティブ化と初期化した場合、そのメニューが初期化された理由({{span style='color:blue;font-family:monospace;',vchrMenu}} に対する {{span style='color:blue;font-family:monospace;',menuButtonCause}} または {{span style='color:blue;font-family:monospace;',vchrCommand}} に対する {{span style='color:blue;font-family:monospace;',menuCommandCause}})を保持している {{goto menuOpenEvent,menuOpenEvent|Palm OS Programmer's API Reference/2}} がイベント キューに追加され、それから現在のイベントがその後に追加されます。 !{{anchor MenuHideItem}}MenuHideItem 関数 {{goto top,^TOP^}} '''目的''' 指定されたメニュー アイテムを隠します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' Boolean MenuHideItem ( UInt16 id ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ id}} **隠すメニュー アイテムの ID。 '''返り値''' 指定されたアイテムの {{span style='color:blue;font-family:monospace;',hidden}} 属性のセットに成功した場合、{{span style='color:blue;font-family:monospace;',true}} を返します。そうでない場合、{{span style='color:blue;font-family:monospace;',false}} を返します。 '''コメント''' {{goto menuOpenEvent,menuOpenEvent|Palm OS Programmer's API Reference/2}} への応答としてのみ、この関数を呼び出すべきです。このイベントは、メニューが最初にアクティブ化されるときに、生成されます。一般に、フォームのメニューは、{{span style='color:blue;font-family:monospace;',vchrMenu}} または {{span style='color:blue;font-family:monospace;',vchrCommand}} を持つ {{goto keyDownEvent,keyDownEvent|Palm OS Programmer's API Reference/2}} が初めて生成されるときにアクティブ化され、新しいフォーム(モーダル フォームやアラート パネルを含む)が表示されるかフォームのメニューを変更するために {{goto FrmSetMenu,FrmSetMenu()|Palm OS Programmer's API Reference/11}} が呼び出されるまでアクティブのままでいます。Palm OS ユーザ インターフェイス ガイドラインは、メニューが初めてアクティブ化されるとき以外で、メニュー アイテムを追加または隠すことをしないように勧めています。 '''互換性''' {{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、実装されます。 '''参照''' {{goto MenuShorItem,MenuShowItem()}} !{{anchor MenuInit}}MenuInit 関数 {{goto top,^TOP^}} '''目的''' リソース ファイルからメニュー リソースを読み込みます。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' MenuBarType *MenuInit ( UInt16 resourceId ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ resourceId}} **メニュー リソースを指定する ID。 '''返り値''' メニュー リソースを保持するために割り当てられたメモリ ブロックへのポインタ({{goto MenuBarType,MenuBarType}} へのポインタ)を返します。 '''コメント''' メニューは、{{goto MenuSetActivate,MenuSetActivate()}} が呼び出されるまで、使用不可です。 通常、この関数を直接呼び出す必要はありません。フォームはそのフォームに関連付けられているメニューのリソース ID を保存して、必要があればそのメニューを初期化します。あなたがそのフォームのメニューを変更することを望む場合、{{goto FrmSetMenu,FrmSetMenu()|Palm OS Programmer's API Reference/11}} を呼び出します。{{span style='color:blue;font-family:monospace;',FrmSetMenu()}} は、フォームの現在のメニューの処分、新しいメニューのフォームへの関連付け、必要があれば初期化を行います。 '''参照''' {{goto MenuSetActiveMenu,MenuSetActiveMenu()}}, {{goto MenuDispose,MenuDispose()}} !{{anchor MenuSetActiveMenu}}MenuSetActiveMenu 関数 {{goto top,^TOP^}} '''目的''' 現在のメニューをセットします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' MenuBarType *MenuSetActiveMenu( MenuBarType *menuP ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ menuP}} '''返り値''' 新しいメニューがセットされる前にアクティブだったメニューへのポインタを返します。アクティブだったメニューが無い場合は {{span style='color:blue;font-family:monospace;',NULL}} を返します。 '''コメント''' この関数はアクティブ メニューをセットしますが、それをフォームに関連付けることはしません。{{span style='color:blue;font-family:monospace;',MenuSetActiveMenu}} の代わりに {{goto FrmSetMenu,FrmSetMenu()|Palm OS Programmer's API Reference/11}} を呼び出すことを推奨します。{{span style='color:blue;font-family:monospace;',FrmSetMenu}} はアクティブ メニューをセットし、古いメニューを解放し、新しいアクティブ メニューをフォームに関連付けします。これは、フォームが解放されるときにそのメニューも解放されることを意味します。 '''参照''' {{goto MenuGetActiveMenu,MenuGetActiveMenu()}} !{{anchor MenuSetActiveMenuRscID}}MenuSetActiveMenuRscID 関数 {{goto top,^TOP^}} '''目的''' 現在のメニューをリソース ID でセットします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' void MenuSetActiveMenuRscID ( UInt16 resourceId ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ resourceId}} **アクティブ化するメニューのリソース ID。 '''返り値''' 返り値はありません。 '''コメント''' この関数は、あなたがメニュー構造体へのポインタの代わりにメニューのリソース ID を渡す点を除いて、{{goto MenuSetActiveMenu,MenuSetActiveMenu()}} と同じです。この関数は最適化として使用されます; {{span style='color:blue;font-family:monospace;',MenuSetActiveMenu}} では、あなたはメニューをアクティブ化する前にそのメニューを初期化しなければなりません。可能性として、アプリケーションはメニューが必要とされる前に終了するかもしれません。この場合、メニューへのメモリ割り当ては不要です。{{span style='color:blue;font-family:monospace;',MenuSetActiveMenuRscID}} は単にリソース ID を保存するだけです。メニューが必要になったときに、メニューはこのリソースから初期化されます。 {{span style='color:blue;font-family:monospace;',MenuSetActiveMenu}} で説明したのと同じ理由で、この関数を呼び出す代わりに {{goto FrmSetMenu,FrmSetMenu()|Palm OS Programmer's API Reference/11}} を呼び出すことを推奨します。 '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、実装されます。 !{{anchor MenuShowItem}}MenuShowItem 関数 {{goto top,^TOP^}} '''目的''' 指定されたメニュー アイテムを可視にします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',Menu.h}} '''Prototype''' Boolean MenuShowItem ( UInt16 id ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ id}} **表示するメニュー アイテムの ID。 '''返り値''' {{span style='color:blue;font-family:monospace;',hidden}} 属性を不能にすることに成功した場合、{{span style='color:blue;font-family:monospace;',true}} を返します。そうでない場合、{{span style='color:blue;font-family:monospace;',false}} を返します。 '''コメント''' {{goto menuOpenEvent,menuOpenEvent|Palm OS Programmer's API Reference/2}} への応答としてのみ、この関数を呼び出すべきです。このイベントは、メニューが最初にアクティブ化されるときに、生成されます。一般に、フォームのメニューは、{{span style='color:blue;font-family:monospace;',vchrMenu}} または {{span style='color:blue;font-family:monospace;',vchrCommand}} を持つ {{goto keyDownEvent,keyDownEvent|Palm OS Programmer's API Reference/2}} が初めて生成されるときにアクティブ化され、新しいフォーム(モーダル フォームやアラート パネルを含む)が表示されるかフォームのメニューを変更するために {{goto FrmSetMenu,FrmSetMenu()|Palm OS Programmer's API Reference/11}} が呼び出されるまでアクティブのままでいます。Palm OS ユーザ インターフェイス ガイドラインは、メニューが初めてアクティブ化されるとき以外で、メニュー アイテムを追加または隠すことをしないように勧めています。 '''互換性''' {{goto 3.5 New Feature Set,3.5 New Feature Set|Palm OS Programmer's API Reference/B-1}} が存在する場合にのみ、実装されます。 '''参照''' {{goto MenuHideItem,MenuHideItem()}} {{div_end}} {{div_begin "style='border-top-style:solid;border-top-width:1px;border-top-color:silver;'"}} [[← 14 章に戻る|Palm OS Programmer's API Reference/14]] [[↑トップへ|Palm OS Programmer's API Reference]] [[16 章に進む →|Palm OS Programmer's API Reference/16]] {{div_end}}