差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| fltk:widget-basic-windows [2025/05/27 22:03] – [ウィンドウとアプリケーション] Fix a subtle expression freemikan | fltk:widget-basic-windows [2025/06/07 08:51] (現在) – [実験1] Remove a verbose punctuation freemikan | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== ウィンドウ ====== | ====== ウィンドウ ====== | ||
| - | {{: | + | [[fltk:|{{: |
| 典型的なGUIアプリケーションに特徴として、ウィンドウが存在するという点が挙げられます。 | 典型的なGUIアプリケーションに特徴として、ウィンドウが存在するという点が挙げられます。 | ||
| 行 37: | 行 37: | ||
| </ | </ | ||
| - | このコードを実行すると、次のような動作が観察できます。 | + | このプログラムを実行すると、次のような動作が観察できます。 |
| - 画面にウィンドウが表示される。 | - 画面にウィンドウが表示される。 | ||
| 行 51: | 行 51: | ||
| いくつかコードに変更を加えて変化を観察してみます。 | いくつかコードに変更を加えて変化を観察してみます。 | ||
| - | * '' | + | * '' |
| - | * '' | + | * '' |
| こういった変化が見られることから、次のように導かれます。 | こういった変化が見られることから、次のように導かれます。 | ||
| 行 58: | 行 58: | ||
| * window-> | * window-> | ||
| * ウィンドウが表示されている間、Fl:: | * ウィンドウが表示されている間、Fl:: | ||
| - | * 逆に言えば、ウィンドウが閉じられたらFl:: | + | * 逆に言えば、ウィンドウが閉じられたらFl:: |
| * Fl:: | * Fl:: | ||
| 行 67: | 行 67: | ||
| <code cpp> | <code cpp> | ||
| int main(int argc, char **argv) { | int main(int argc, char **argv) { | ||
| - | // Fl_Windowのオブジェクト(メインウィンドウ)を作成しない | + | // Fl_Windowクラスのオブジェクト(メインウィンドウ)を作成しない。 |
| - | // このFl_Boxのオブジェクトがルートのウィジェットになるはず。 | + | // このFl_Boxクラスのオブジェクトがルートのウィジェットになるはず。 |
| // ルートがFl_Windowでなければどうなるか? | // ルートがFl_Windowでなければどうなるか? | ||
| Fl_Box *box = new Fl_Box(20, 40, 300, 100, " | Fl_Box *box = new Fl_Box(20, 40, 300, 100, " | ||
| 行 137: | 行 137: | ||
| ===== Fl_WindowクラスはFl_Groupクラスから派生している ===== | ===== Fl_WindowクラスはFl_Groupクラスから派生している ===== | ||
| begin()とend()はFl_Windowクラスそのもののメンバ関数ではありません。 | begin()とend()はFl_Windowクラスそのもののメンバ関数ではありません。 | ||
| - | Fl_Groupクラスのメンバ関数です。 | + | Fl_Groupクラスのパブリックメンバ関数です。 |
| Fl_Groupクラスもやはりウィジェットです。 | Fl_Groupクラスもやはりウィジェットです。 | ||
| つまり、Fl_Widgetクラスから派生しています。 | つまり、Fl_Widgetクラスから派生しています。 | ||
| 行 156: | 行 156: | ||
| Fl_Groupクラスは抽象クラスではないので、そのインスタンスオブジェクトを作成することは可能で、ウィジェットをグループ化するためのウィジェットとして用いることができます。 | Fl_Groupクラスは抽象クラスではないので、そのインスタンスオブジェクトを作成することは可能で、ウィジェットをグループ化するためのウィジェットとして用いることができます。 | ||
| - | 同時に、継承することによってウィジェットのコンテナとしての機能を提供する役目もになっています。 | + | 同時に、継承されることによってウィジェットのコンテナとしての機能を派生クラスに提供する役目もになっています。 |
| - | ここで重要な点は、Fl_Groupクラスから派生するウィジェットのクラスはそこそこの数がありますが、そうでないもののほうがずっと多いということです。 | + | ひとつ気をつけたいおきたいことがあります。 |
| + | Fl_Groupクラスから派生するウィジェットのクラスはそこそこの数がありますが、そうでないものも多くあります。 | ||
| つまり、どのウィジェットでも子ウィジェットを持つことができるわけではありません。 | つまり、どのウィジェットでも子ウィジェットを持つことができるわけではありません。 | ||
| - | Fl_BoxクラスはFl_Groupクラスから派生していません。 | + | 例えば、Fl_BoxクラスはFl_Groupクラスから派生していません。 |
| - | したがって、Fl_Boxクラスのオブジェクトは、子ウィジェットを持つことができません。 | + | したがって、Fl_Boxクラスのオブジェクトは子ウィジェットを持つことができません。 |
| <code cpp> | <code cpp> | ||
| Fl_Box *box = new Fl_Box(...); | Fl_Box *box = new Fl_Box(...); | ||
| - | Fl_Box *child_box | + | Fl_Box *non_child_box |
| </ | </ | ||
| - | このコードで、child_boxはboxの子にはなりません。 | + | このコードで、non_child_boxはboxの子にはなりません。 |
| 一方で、Fl_WindowクラスはFl_Groupクラスから派生しているので、子ウィジェットを持つことができます。 | 一方で、Fl_WindowクラスはFl_Groupクラスから派生しているので、子ウィジェットを持つことができます。 | ||
| 行 176: | 行 177: | ||
| ===== 参考 ===== | ===== 参考 ===== | ||
| - | * [[https:// | + | * [[https:// |
| - | * [[https:// | + | * [[https:// |
