Mercurial > dwindows
changeset 2889:4b075e64536c
C++: Add some simple menu code to see if things are working.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Thu, 22 Dec 2022 19:20:39 +0000 |
parents | ec0d34798706 |
children | ab4c86ddc63a |
files | dw.hpp dwtest.c dwtestoo.cpp |
diffstat | 3 files changed, 45 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/dw.hpp Thu Dec 22 19:08:39 2022 +0000 +++ b/dw.hpp Thu Dec 22 19:20:39 2022 +0000 @@ -167,9 +167,9 @@ public: // User functions HMENUI GetHMENUI() { return menu; } - MenuItem *MenuItemNew(const char *title, unsigned long id, unsigned long flags, int end, int check, Menus *submenu); - MenuItem *MenuItemNew(const char *title, Menus *submenu); - MenuItem *MenuItemNew(const char *title); + MenuItem *AppendItem(const char *title, unsigned long id, unsigned long flags, int end, int check, Menus *submenu); + MenuItem *AppendItem(const char *title, Menus *submenu); + MenuItem *AppendItem(const char *title); }; class Menu : public Menus @@ -199,7 +199,7 @@ SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, id, flags, end, check, submenu ? submenu->GetHMENUI() : DW_NOMENU)); } MenuItem(Menus *menu, const char *title, Menus *submenu) { - SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, DW_MENU_AUTO, 0, TRUE, FALSE, submenu)); + SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, DW_MENU_AUTO, 0, TRUE, FALSE, submenu ? submenu->GetHMENUI() : DW_NOMENU)); } MenuItem(Menus *menu, const char *title) { SetHWND(dw_menu_append_item(menu->GetHMENUI(), title, DW_MENU_AUTO, 0, TRUE, FALSE, DW_NOMENU)); @@ -210,14 +210,14 @@ void SetStyle(unsigned long flags, unsigned long mask) { dw_window_set_style(hwnd, flags, mask); } }; -MenuItem *Menus::MenuItemNew(const char *title, unsigned long id, unsigned long flags, int end, int check, Menus *submenu) { +MenuItem *Menus::AppendItem(const char *title, unsigned long id, unsigned long flags, int end, int check, Menus *submenu) { return new MenuItem((Menus *)menu, title, id, flags, end, check, submenu); } -MenuItem *Menus::MenuItemNew(const char *title, Menus *submenu) { +MenuItem *Menus::AppendItem(const char *title, Menus *submenu) { return new MenuItem((Menus *)menu, title, submenu); } -MenuItem *Menus::MenuItemNew(const char *title) { +MenuItem *Menus::AppendItem(const char *title) { return new MenuItem((Menus *)menu, title); } @@ -276,8 +276,8 @@ void Redraw() { dw_window_redraw(hwnd); } void Default(Widget *defaultitem) { if(defaultitem) dw_window_default(hwnd, defaultitem->GetHWND()); } void SetIcon(HICN icon) { dw_window_set_icon(hwnd, icon); } - Menus *MenuBarNew() { if(!menu) menu = new MenuBar(hwnd); return menu; } - void Popup(Menus *menu, int x, int y) { + MenuBar *MenuBarNew() { if(!menu) menu = new MenuBar(hwnd); return menu; } + void Popup(Menu *menu, int x, int y) { if(menu) { HMENUI pmenu = menu; @@ -285,7 +285,8 @@ delete menu; } } - void Popup(Menus *menu) { if(menu) { + void Popup(Menu *menu) { + if(menu) { long x, y; HMENUI pmenu = menu;
--- a/dwtest.c Thu Dec 22 19:08:39 2022 +0000 +++ b/dwtest.c Thu Dec 22 19:20:39 2022 +0000 @@ -1779,7 +1779,7 @@ mainmenubar = dw_menubar_new(mainwindow); /* add menus to the menubar */ menu = dw_menu_new(0); - menuitem = dw_menu_append_item( menu, "~Quit", 1019, 0, TRUE, FALSE, 0); + menuitem = dw_menu_append_item(menu, "~Quit", 1019, 0, TRUE, FALSE, 0); dw_signal_connect(menuitem, DW_SIGNAL_CLICKED, DW_SIGNAL_FUNC(exit_callback), DW_POINTER(mainwindow)); /* * Add the "File" menu to the menubar...
--- a/dwtestoo.cpp Thu Dec 22 19:08:39 2022 +0000 +++ b/dwtestoo.cpp Thu Dec 22 19:20:39 2022 +0000 @@ -18,7 +18,16 @@ int button_clicked() { DW::App *app = DW::App::Init(); - app->MessageBox("Button", DW_MB_OK | DW_MB_WARNING, "Clicked!"); + app->MessageBox("Button", DW_MB_OK | DW_MB_INFORMATION, "Clicked!"); + return TRUE; +} + +int exit_handler() +{ + DW::App *app = DW::App::Init(); + if(app->MessageBox("dwtest", DW_MB_YESNO | DW_MB_QUESTION, "Are you sure you want to exit?") != 0) { + app->MainQuit(); + } return TRUE; } #endif @@ -28,7 +37,7 @@ DW::App *app = DW::App::Init(argc, argv, "org.dbsoft.dwindows.dwtestoo"); MyWindow *window = new MyWindow(); DW::Button *button = new DW::Button("Test window"); - + window->PackStart(button, DW_SIZE_AUTO, DW_SIZE_AUTO, TRUE, TRUE, 0); #ifdef DW_CPP11 button->ConnectClicked([app] () -> int @@ -37,8 +46,29 @@ return TRUE; }); #else - button ->ConnectClicked(&button_clicked); + button->ConnectClicked(&button_clicked); #endif + + DW::MenuBar *mainmenubar = window->MenuBarNew(); + + // add menus to the menubar + DW::Menu *menu = new DW::Menu(); + DW::MenuItem *menuitem = menu->AppendItem("~Quit"); +#ifdef DW_CPP11 + menuitem->ConnectClicked([app] () -> int + { + if(app->MessageBox("dwtest", DW_MB_YESNO | DW_MB_QUESTION, "Are you sure you want to exit?") != 0) { + app->MainQuit(); + } + return TRUE; + }); +#else + menuitem->ConnectClicked(&exit_handler); +#endif + + // Add the "File" menu to the menubar... + mainmenubar->AppendItem("~File", menu); + window->Show(); app->Main();