# ダイアログ

## 🪟 1. ダイアログってなに？

****ダイアログ（ダイアログボックス）は、****  
****ユーザーに何かを聞いたり、設定を入力させたりするための小さなウィンドウ****です。

### 例：

- ファイルを保存するときの「名前を付けて保存」画面
- 「OK」「キャンセル」などを選ばせる小さなウィンドウ
- 設定画面（オプション、プロパティ）

---

## 🔄 2. モーダル vs モードレス

<table id="bkmrk-%E7%A8%AE%E9%A1%9E%E7%89%B9%E5%BE%B4%E4%BE%8B%E3%83%A2%E3%83%BC%E3%83%80%E3%83%AB%E4%BB%96%E3%81%AE%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%82%92%E6%93%8D%E4%BD%9C%E3%81%A7"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr><th>種類

</th><th>特徴

</th><th>例

</th></tr><tr><td>****モーダル****

</td><td>他のウィンドウを操作できなくなる（完了するまで）

</td><td>「保存しますか？」などの確認ダイアログ

</td></tr><tr><td>****モードレス****

</td><td>他のウィンドウも同時に操作できる

</td><td>検索ウィンドウ、ツールパレット

</td></tr></tbody></table>

### 💡 イメージ

- モーダル：****呼び出した人に返事を返すまで、他は触らせない！****
- モードレス：****聞くけど、待たなくていいよ。他のことしててOK！****

---

## 📦 3. よく使われる「コントロール（部品）」

### 🟢 ボタン類

<table id="bkmrk-%E5%90%8D%E5%89%8D%E8%AA%AC%E6%98%8Ebutton%EF%BC%88%E3%83%9C%E3%82%BF%E3%83%B3%EF%BC%89%E3%80%8Cok%E3%80%8D%E3%80%8C"><colgroup><col></col><col></col></colgroup><tbody><tr><th>名前

</th><th>説明

</th></tr><tr><td>****Button（ボタン）****

</td><td>「OK」「キャンセル」など。押すと動作を実行。

</td></tr><tr><td>****CheckBox（チェックボックス）****

</td><td>ON/OFF の選択に使う。複数選択も可能。

</td></tr><tr><td>****RadioButton（ラジオボタン）****

</td><td>選択肢を1つだけ選ぶ（複数ある中で1つ）

</td></tr></tbody></table>

### 🔵 入力系

<table id="bkmrk-%E5%90%8D%E5%89%8D%E8%AA%AC%E6%98%8Eedit%EF%BC%88%E3%82%A8%E3%83%87%E3%82%A3%E3%83%83%E3%83%88%EF%BC%89%E6%96%87%E5%AD%97%E3%82%92%E5%85%A5%E5%8A%9B"><colgroup><col></col><col></col></colgroup><tbody><tr><th>名前

</th><th>説明

</th></tr><tr><td>****Edit（エディット）****

</td><td>文字を入力するテキストボックス。

</td></tr><tr><td>****ComboBox（コンボボックス）****

</td><td>リストから選ぶ＋入力もできる。

</td></tr><tr><td>****ListBox（リストボックス）****

</td><td>複数行の選択肢から選ぶ。複数選択可もあり。

</td></tr></tbody></table>

### 🟣 表示系・他

<table id="bkmrk-%E5%90%8D%E5%89%8D%E8%AA%AC%E6%98%8Estatic%EF%BC%88%E3%82%B9%E3%82%BF%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%EF%BC%89%E6%96%87%E5%AD%97"><colgroup><col></col><col></col></colgroup><tbody><tr><th>名前

</th><th>説明

</th></tr><tr><td>****Static（スタティック）****

</td><td>文字や画像を表示するだけのラベル。

</td></tr><tr><td>****GroupBox****

</td><td>コントロールをグループ化して囲む枠。

</td></tr><tr><td>****ProgressBar（プログレスバー）****

</td><td>処理の進行度を表示するバー。

</td></tr></tbody></table>

---

## 🧑‍💻 4. 実際に使うとどうなる？

### モーダルダイアログを表示するコード例（Win32 API）

```cpp
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DialogProc);
```

### モードレスダイアログを表示するコード例

```cpp
CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, DialogProc);
ShowWindow(hDlg, SW_SHOW);
```

---

## 📌 5. まとめ

<table id="bkmrk-%E9%A0%85%E7%9B%AE%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AB%E8%B3%AA%E5%95%8F%E3%82%84%E6%93%8D"><colgroup><col></col><col></col></colgroup><tbody><tr><th>項目

</th><th>ポイント

</th></tr><tr><td>ダイアログ

</td><td>ユーザーに質問や操作を促す小ウィンドウ

</td></tr><tr><td>モーダル

</td><td>他の操作をブロックして返事を待つ

</td></tr><tr><td>モードレス

</td><td>他の操作もOK、自由に使える

</td></tr><tr><td>コントロール

</td><td>ボタン、入力欄、リストなど部品のこと

</td></tr></tbody></table>

---

### 🧁 もっとわかりやすく例えると…

> ダイアログは****コンビニのレジ****。  
> モーダルは「レジの人が“お会計終わるまで商品戻してね”って止める」状態。  
> モードレスは「セルフレジ。会計しながら他の人も動ける」状態です。