差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
fltk:widget-basic-menus [2025/06/14 11:14] – [Fl_Menu_Buttonクラス] Add class diagram image freemikan | fltk:widget-basic-menus [2025/06/14 12:25] (現在) – [Fl_Menu_Buttonクラス] Write body text freemikan | ||
---|---|---|---|
行 24: | 行 24: | ||
==== Fl_Menu_Barクラス ==== | ==== Fl_Menu_Barクラス ==== | ||
+ | [[https:// | ||
+ | <WRAP centeralign> | ||
+ | |||
+ | |||
典型的なGUIアプリケーションで目にする、ウィンドウ最上部のメニューバーを実現するためのクラスです。 | 典型的なGUIアプリケーションで目にする、ウィンドウ最上部のメニューバーを実現するためのクラスです。 | ||
FLTKではメニューバーもやはりウィジェットです。 | FLTKではメニューバーもやはりウィジェットです。 | ||
行 37: | 行 41: | ||
<code cpp> | <code cpp> | ||
#include < | #include < | ||
- | #include <FL/Fl_Flex.H> | + | #include <FL/Fl_File_Chooser.H> |
#include < | #include < | ||
#include < | #include < | ||
- | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
- | #include < | ||
#include < | #include < | ||
行 75: | 行 77: | ||
int main(int argc, char **argv) { | int main(int argc, char **argv) { | ||
- | auto window = new Fl_Window{400, | + | auto window = new Fl_Window{400, |
auto menu_bar = new Fl_Menu_Bar{0, | auto menu_bar = new Fl_Menu_Bar{0, | ||
行 96: | 行 98: | ||
auto group = new Fl_Group{0, menu_bar-> | auto group = new Fl_Group{0, menu_bar-> | ||
group-> | group-> | ||
+ | window-> | ||
- | window-> | ||
window-> | window-> | ||
window-> | window-> | ||
行 118: | 行 120: | ||
<WRAP centeralign> | <WRAP centeralign> | ||
+ | Fl_Menu_Buttonクラスのウィジェットは、クリックすると選択項目が表示されるドロップダウン形式のボタンです。 | ||
+ | また、メンバ関数type()でポップアップのタイプを設定することによってポップアップメニューとして利用できます。 | ||
+ | これによって、多くのGUIアプリケーションやウィンドウシステムが採用している典型的な右クリックメニューを実現できます。 | ||
<code cpp> | <code cpp> | ||
#include < | #include < | ||
- | #include < | ||
- | #include < | ||
#include < | #include < | ||
#include < | #include < | ||
行 129: | 行 132: | ||
#include < | #include < | ||
+ | // ダミーのコールバック | ||
void the_cb(Fl_Widget *w, void *data) {} | void the_cb(Fl_Widget *w, void *data) {} | ||
void strange_cb(Fl_Widget *w, void *data) {} | void strange_cb(Fl_Widget *w, void *data) {} | ||
行 136: | 行 140: | ||
int main(int argc, char **argv) { | int main(int argc, char **argv) { | ||
- | auto window = new Fl_Window{400, | + | auto window = new Fl_Window{400, |
// https:// | // https:// | ||
- | Fl_Menu_Item | + | Fl_Menu_Item |
- | {"& | + | |
- | {" | + | |
- | {"& | + | |
- | {"& | + | |
- | {"& | + | |
- | {" | + | |
- | {" | + | |
- | {" | + | |
- | {" | + | |
- | {" | + | |
- | {0}, | + | |
- | {" | + | |
- | {" | + | |
- | {" | + | |
- | {" | + | |
- | {0}}; | + | |
- | | + | |
- | auto menu_button = new Fl_Menu_Button{0, 0, 0, 0, "& | + | auto menu_button = new Fl_Menu_Button{10, 10, 150, 30, "& |
- | menu_button-> | + | menu_button-> |
- | flex-> | + | |
- | flex-> | + | |
- | auto group = new Fl_Group{0, flex-> | + | |
- | | + | // ボタンの位置とサイズがクリックの有効範囲となる |
+ | | ||
+ | menu_popup->menu(menu_table); | ||
+ | | ||
- | window-> | ||
window-> | window-> | ||
window-> | window-> |