確認ダイアログを表示する
Top > Tips > Alert

PalmOSには確認ダイアログ(ALERT)などの処理を行なう機能が提供されていて、 リソースのALERTを使うことにより簡単に使用することができます。 呼出し方も FrmAlert関数に リソースでて意義しているALERTのリソースIDを指定して呼ぶだけで、 戻り値としてALERTで押されたボタンの番号(0〜)が返ってきます。
ボタンはリソースのBUTTONSに必要なボタン分だけ、ボタンの表示文字列を並べて記述するだけです。

また、ALERTのタイプを表すアイコン表示は、下記の4種類を設定することができます。
アイコンキーワード意味
information INFORMATION 情報
confirmation CONFIRMATION   確認
warning WARNING 警告
error ERROR エラー 

リソースのDEFAULTBUTTONは、ALERT表示中にハードボタン等が押されてアプリケーションの切り替えが起こったときに、 押された事にするボタンの番号(0〜)です。
下記のサンプルでは、1を指定しているので、Cancelボタンが押されたことになります。

サンプル画面

ヘッダファイル
#define MainForm        1000
#define SaveButton      1001

#define QuestionAlert   2000

リソースファイル
FORM ID MainForm AT (0 0 160 160)
NOFRAME
BEGIN
    TITLE "Alert"
    BUTTON "Save" ID SaveButton AT (4 108 25 12) FONT 0
END

ALERT ID QuestionAlert
CONFIRMATION
DEFAULTBUTTON 1
BEGIN
    TITLE "Question"
    MESSAGE "Overwrite?"
    BUTTONS "OK" "Cancel"
END

イベントハンドラ
Boolean MainFormHandleEvent(
    EventPtr pEvent)    /* I:イベント */
{
    Boolean     handled = false;
    FormPtr     pForm;

    switch (pEvent->eType)
    {
    case frmOpenEvent:     /* フォームオープンイベント */
        pForm = FrmGetActiveForm();
        FrmDrawForm(pForm);
        handled = true;
        break;

    case ctlSelectEvent:    /* コントロール選択イベント */
        if (SaveButton == pEvent->data.ctlSelect.controlID)   /* saveボタン押下? */
        {
            if (0 == FrmAlert(QuestionAlert))   /* OKボタン押下? */
            {
                /* 保存処理 */
            }
            handled = true;
        }
        break;

    default:
        break;
    }

    return handled;
}

'06/3/4 新規作成