Kuina-chan

くいなちゃん2018年10月19日


プログラミング言語Kuin」の逆引き辞典9、ウインドウとコントロールの扱い方についてです。

目次

ウインドウを扱う

ウインドウをプログラム上で作成する

ウインドウをプログラム上で作成するには「wnd@makeWnd(親ウインドウ, ウインドウスタイル, , 高さ, タイトル)」とします(ウインドウのプログラム上での作成)。
var wndMain: wnd@Wnd
  
func main()
  do @wndMain :: wnd@makeWnd(null, %normal, 800, 450, "Title")
  
  while(wnd@act())
  end while
end func
ウインドウのプログラム上での作成
第2引数のウインドウスタイルには、「%normal」を指定するとサイズ変更や最大化や最小化ができる一般的なウインドウになります。 「%fix」はサイズ変更も最大化も最小化もできない固定ウインドウになります。 「%aspect」はアスペクト比を維持するウインドウで、ゲームを制作するときに使います。
6行目の「wnd@act」関数は、ウインドウを移動させる処理など、ウインドウに関わる様々な処理を行うため定期的に呼び出す必要があります。 呼び出さない間はウインドウが「応答なし」になります。 ウインドウが閉じられるとfalseが返るため、直ちにプログラムを終了します。
実行するとウインドウのようになります。
ウインドウ
ウインドウ

ウインドウを視覚的に配置して作成する

(この記事は執筆中です!)

ダイアログボックスを表示する

メッセージボックスを表示する

メッセージボックスとはメッセージボックスのような、メッセージを表示してユーザに確認を求めることができるダイアログボックスです。
メッセージボックス
メッセージボックス
メッセージボックスを表示するには、「wnd@msgBox(親ウインドウ, メッセージ, タイトル, アイコン, ボタン)」とします(メッセージボックスの表示)。
func main()
  var result: wnd@MsgBoxResult :: wnd@msgBox(null, "プログラムを終了しますか?", "確認", %warn, %yesNoCancel)
end func
メッセージボックスの表示
第4引数のアイコンは、「%none」でアイコンなし、「%info」で情報を表す「i」アイコン、「%question」で質問を表す「?」アイコン、「%warn」で警告を表す「!」アイコン、「%err」でエラーを表す「×」アイコンです。
第5引数のボタンは、「%ok」で「[OK]」、「%okCancel」で「[OK][キャンセル]」、「%yesNo」で「[はい][いいえ]」、「%yesNoCancel」で「[はい][いいえ][キャンセル]」などがあります。
ユーザが押したボタンは戻り値として取得でき、「%ok」なら「[OK]」、「%cancel」なら「[キャンセル]」または右上の「×」ボタン、「%yes」なら「[はい]」、「%no」なら「[いいえ]」ボタンが選ばれたことを表します。

インプットボックスを表示する

インプットボックスとはインプットボックスのような、ユーザに文字列を入力させるダイアログボックスです。
インプットボックス
インプットボックス
インプットボックスを表示するには、「wndex@inputBox(親ウインドウ, メッセージ, タイトル, 初期値, 検証関数)」とします(インプットボックスの表示)。
func main()
  var result: []char :: wndex@inputBox(null, "あなたの名前を入力してください。", "確認", "Kuina", null)
end func
インプットボックスの表示
ユーザが入力した文字列が戻り値で返ります。 キャンセルボタンまたは右上の「×」ボタンが押された場合にはnullが返ります。
第5引数にコールバック関数を指定すると、入力が一定の形式に沿うまで確定できないようにできます(インプットボックスの検証関数)。
func main()
  var result: []char :: wndex@inputBox(null, "1桁の整数を入力してください。", "確認", null, validate)
  
  func validate(value: []char): bool
    var intValue: int
    if(!value.toInt(&intValue))
      ret false {整数に変換できないなら確定させない}
    end if
    if(intValue < 0 | 9 < intValue)
      ret false {0以上9以下の範囲外なら確定させない}
    end if
    ret true {確定させる}
  end func
end func
インプットボックスの検証関数

ファイルを開くダイアログを表示する

ファイルを開くダイアログとはファイルを開くダイアログのような、ユーザに開くファイルを指定させるダイアログボックスです。
ファイルを開くダイアログ
ファイルを開くダイアログ
ファイルを開くダイアログを表示するには、「wnd@openFileDialog(親ウインドウ, フィルター, 最初に選択されるフィルターの番号)」とします(ファイルを開くダイアログの表示)。
func main()
  var path: []char :: wnd@openFileDialog(null, ["画像ファイル(*.png,*.jpg)", "*.png;*.jpg", "すべてのファイル", "*.*"], 0)
end func
ファイルを開くダイアログの表示
フィルターは、指定した拡張子のファイルのみを一覧させることができ、「[表示テキスト0,拡張子0,表示テキスト1,拡張子1,表示テキスト2,拡張子2,...]」と2つ1組で並べます。 拡張子は「;」で区切って、「"*.拡張子;*.拡張子;*.拡張子;..."」の形で複数指定できます。
選択されたファイルのフルパスが返ります。 キャンセルされた場合にはnullが返ります。
最初に表示されるディレクトリを設定するには、事前に「wnd@fileDialogDir(ディレクトリパス)」を呼び出しておきます。 デフォルトでは「wnd@fileDialogDir(null)」が設定されていて、最初に表示されるディレクトリはOSに任せられます。

名前を付けて保存ダイアログを表示する

名前を付けて保存ダイアログとは名前を付けて保存ダイアログのような、ユーザに保存するファイルを指定させるダイアログボックスです。
名前を付けて保存ダイアログ
名前を付けて保存ダイアログ
名前を付けて保存ダイアログを表示するには、「wnd@saveFileDialog(親ウインドウ, フィルター, 最初に選択されるフィルターの番号, 拡張子が省略されたときに自動で付ける拡張子)」とします(名前を付けて保存ダイアログの表示)。
func main()
  var path: []char :: wnd@saveFileDialog(null, ["画像ファイル(*.png,*.jpg)", "*.png;*.jpg", "すべてのファイル", "*.*"], 0, "png")
end func
名前を付けて保存ダイアログの表示
フィルターおよび戻り値は、wnd@openFileDialogと同様です。

ボタンコントロールを扱う

(この記事は執筆中です!)
1539959137jaf