差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
fltk:widget-basic-windows [2025/05/28 06:45] – [実験1] main → main関数 freemikanfltk:widget-basic-windows [2025/06/07 08:51] (現在) – [実験1] Remove a verbose punctuation freemikan
行 1: 行 1:
 ====== ウィンドウ ====== ====== ウィンドウ ======
-{{:fltk:fltk_shadow.png?200|FLTK}}+[[fltk:|{{:fltk:fltk_shadow.png?200|}}]]
  
 典型的なGUIアプリケーションに特徴として、ウィンドウが存在するという点が挙げられます。 典型的なGUIアプリケーションに特徴として、ウィンドウが存在するという点が挙げられます。
行 51: 行 51:
 いくつかコードに変更を加えて変化を観察してみます。 いくつかコードに変更を加えて変化を観察してみます。
  
-  * ''window->show(argc, argv);''の行を削除すると、ウィンドウは表示されなくなり、すぐにプログラムは終了してしまいます。 +  * ''window->show(argc, argv);''の行を削除すると、ウィンドウは表示されなくなり、すぐにプログラムは終了してしま 
-  * ''return Fl::run();''の行を削除すると、やはりウィンドウは表示さなくなり、すぐにプログラムは終了してしまいます。+  * ''return Fl::run();''の行を削除すると、やはりウィンドウは表示さなくなり、すぐにプログラムは終了してしま
  
 こういった変化が見られることから、次のように導かれます。 こういった変化が見られることから、次のように導かれます。
行 58: 行 58:
   * window->show()が呼び出されなければ、ウィンドウは表示されない。   * window->show()が呼び出されなければ、ウィンドウは表示されない。
   * ウィンドウが表示されている間、Fl::run()の呼び出しが完了することはない。   * ウィンドウが表示されている間、Fl::run()の呼び出しが完了することはない。
-    * 逆に言えば、ウィンドウが閉じられたらFl::run()の呼び出しは完了してmain関数に戻ってくる。そしてプログラムは終了する。+    * 逆に言えば、ウィンドウが閉じられたらFl::run()の呼び出しは完了してmain関数に戻ってくる。そしてプログラムは終了する。
   * Fl::run()が呼び出されなければ、ウィンドウが閉じられるのを待つことなくプログラムは終了する。   * Fl::run()が呼び出されなければ、ウィンドウが閉じられるのを待つことなくプログラムは終了する。
  
行 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, "Hello, World!");   Fl_Box *box = new Fl_Box(20, 40, 300, 100, "Hello, World!");
行 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 = new Fl_Box(...);+Fl_Box *non_child_box = new Fl_Box(...);
 </code> </code>
  
-このコードで、child_boxはboxの子にはなりません。+このコードで、non_child_boxはboxの子にはなりません。
  
 一方で、Fl_WindowクラスはFl_Groupクラスから派生しているので、子ウィジェットを持つことができます。 一方で、Fl_WindowクラスはFl_Groupクラスから派生しているので、子ウィジェットを持つことができます。
行 176: 行 177:
 ===== 参考 ===== ===== 参考 =====
  
-  * [[https://www.fltk.org/doc-1.4/classFl__Window.html|Fl_Windowクラス]] +  * [[https://www.fltk.org/doc-1.4/classFl__Window.html|Fl_Windowクラスのリファレンス]] 
-  * [[https://www.fltk.org/doc-1.4/classFl__Group.html|Fl_Groupクラス]]+  * [[https://www.fltk.org/doc-1.4/classFl__Group.html|Fl_Groupクラスのリファレンス]]
  
文書の先頭へ