diff -urN cui45/cui_test.c cui46/cui_test.c --- cui45/cui_test.c 2014-01-31 22:00:00.000000000 +0900 +++ cui46/cui_test.c 2014-01-31 22:10:00.000000000 +0900 @@ -178,10 +178,47 @@ } int +mn_hdr(cui obj, int evt, int val, void *prm) +{ + cui_label_str_set((cui)prm, cui_button_str_get(obj)); + cui_quit(); + return TRUE; +} + +int +mn_btn_hdr(cui obj, int evt, int val, void *prm) +{ + cui panel = cui_panel_new(obj->parent, obj->x, obj->y+1, 0, 0); + cui btn[4]; + int i; + + btn[0] = cui_button_new(panel, 1, 1, "Open"); + btn[1] = cui_button_new(panel, 1, 2, "Save"); + btn[2] = cui_button_new(panel, 1, 3, "Close"); + btn[3] = cui_button_new(panel, 1, 4, "Quit"); + cui_wh_fit(panel, panel->children); + panel->w += 1; + panel->h += 1; + cui_panel_adj(panel); + + for(i=0; i<4; i++) cui_bind(btn[i], CUI_EVT_BUTTON, mn_hdr, prm); + cui_main(panel, btn[0]); + + cui_hide(panel); + cui_draw(panel->parent); + cui_del(panel); + cui_free(panel); + + if(strcmp(cui_label_str_get((cui)prm), "Quit") == 0) cui_quit(); + return TRUE; +} + +int main() { cui base = cui_panel_new(NULL, 0, 0, 40, 20); - cui ck = cui_ckbox_new(base, 2, 1, "Show", FALSE); + cui mn_btn = cui_button_new(base, 1, 1, "File"); + cui ck = cui_ckbox_new(base, cui_x2(mn_btn)+2, 1, "Show", FALSE); cui mv_btn = cui_button_new(base, cui_x2(ck) + 2, ck->y, "move"); cui mv_lb = cui_label_new(base, cui_x2(mv_btn) + 2, mv_btn->y, ""); @@ -193,6 +230,7 @@ arrow_new(base, cui_x2(mv_lb) + 2, mv_lb->y, big); small->flags |= CUI_FLG_HIDE; + cui_bind(mn_btn, CUI_EVT_BUTTON, mn_btn_hdr, mv_lb); cui_bind(ck, CUI_EVT_BUTTON, my_hdr2, small); cui_bind(mv_btn, CUI_EVT_BUTTON, mv_hdr, mv_lb);