特定のダイアログをメモリにロードする

先にも述べたとおり、1 つの DCL ファイルに複数のダイアログ ボックス定義が含まれる可能性があります。ダイアログ ボックスを使用する次のステップは、表示するダイアログ ボックス定義の指定です。次に、そのコードを示します。

(if (and dialogLoaded
        (not (new_dialog "gp_mainDialog" dcl_id))
     ) ;_ end of and
    (progn
      ;; There's a problem...
      (princ "\nCannot show dialog gp_mainDialog")
      (setq dialogShow nil)
    ) ;_ end of progn
) ;_ end of if

ダイアログがロードされたかどうか、および new_dialog が正常に呼び出されたかどうかをテストする and 関数の使い方に注目してください。 and 関数呼び出し内に、評価される複数の式がある場合、nil に評価された最初の式で、次の式の評価が終了します。この場合、フラグ dialogLoadednil(先のセクションのロード関数が失敗)だと、new_dialog 関数は実行されません。

DCL ファイルが正しく動作せず、変数 dialogShownil に設定される可能性があることにも注意してください。

new_dialog 関数は、ダイアログをメモリにロードするだけで、表示するわけではありません。start_dialog 関数が、ダイアログを表示します。タイルの値の設定、リスト ボックスのイメージやリストの作成、特定のタイルへのアクションの関連付けなど、ダイアログ ボックスのすべての初期化は、new_dialog を呼び出してから start_dialog を呼び出すまでの間に行わなければなりません。