LCUI_API void Window_ClientArea_Add(LCUI_Widget *window, LCUI_Widget *widget) /* 功能:将部件添加至窗口客户区 */ { LCUI_Widget *w = Window_GetClientArea(window); Widget_Container_Add(w, widget); }
void GameWindow_InitLicenseWindow(void) { window = Widget_New("window"); label_license = Widget_New("label"); textbox_license = Widget_New("text_box"); box = Widget_New(NULL); btn_ok = Widget_New("button"); Window_ClientArea_Add( window, label_license ); Window_ClientArea_Add( window, box ); Window_ClientArea_Add( window, btn_ok ); Widget_Container_Add( box, textbox_license ); Widget_SetBackgroundColor( label_license, RGB(255,255,255) ); Widget_SetBackgroundTransparent( label_license, FALSE ); Widget_SetAlign( label_license, ALIGN_TOP_CENTER, Pos(0,0) ); Widget_SetAlign( box, ALIGN_TOP_CENTER, Pos(0,8) ); Widget_SetAlign( btn_ok, ALIGN_BOTTOM_CENTER, Pos(0,-5) ); Label_TextW( label_license, TEXT_LICENSE ); Button_TextW( btn_ok, TEXT_OK ); TextBox_SetAutoWrap( textbox_license, TRUE ); TextBox_SetMultiline( textbox_license, TRUE ); TextBox_SetReadOnly( textbox_license, TRUE ); TextBox_SetUsingStyleTags( textbox_license, TRUE ); TextBox_TextW( textbox_license, license_text ); TextBox_ShowCursor( textbox_license, FALSE ); Widget_SetStyleID( window, WINDOW_STYLE_LINE ); Widget_SetPadding( Window_GetClientArea(window), Padding(10,10,10,10) ); Widget_SetAutoSize( btn_ok, FALSE, 0 ); Widget_SetBorder( box, Border(1,BORDER_STYLE_SOLID,RGB(200,200,200)) ); Widget_SetPadding( box, Padding(10,10,10,10) ); Widget_SetSize( box, "100%", "280px" ); Widget_SetSize( textbox_license, "100%", "100%" ); Widget_Resize( window, WINDOW_SIZE ); Widget_Resize( btn_ok, BTN_SIZE ); Widget_ConnectEvent( btn_ok, EVENT_CLICKED, btn_ok_on_clicked ); Widget_Show( textbox_license ); Widget_Show( box ); Widget_Show( label_license ); Widget_Show( btn_ok ); }
static void Window_ExecUpdate( LCUI_Widget *win_p ) { LCUI_Size size; LCUI_Graph *graph; LCUI_Border border; LCUI_Widget *titlebar, *btn, *client_area; LCUI_RGB border_color, back_color; btn = Window_GetCloseButton(win_p); titlebar = Window_GetTitleBar(win_p); client_area = Window_GetClientArea(win_p); graph = Widget_GetSelfGraph( win_p ); /* 按不同的风格来处理 */ switch( win_p->style_id ) { case WINDOW_STYLE_NONE: /* 没有边框 */ /* 先计算坐标和尺寸 */ Widget_SetDock( client_area, DOCK_TYPE_FILL ); Widget_Hide( titlebar );/* 隐藏标题栏 */ Widget_Show( client_area );/* 客户区需要显示 */ break; case WINDOW_STYLE_LINE: /* 线条边框 */ Widget_SetBorder(win_p, Border(1, BORDER_STYLE_SOLID, RGB(50,50,50))); Widget_SetPadding( win_p, Padding(1,1,1,1) ); Widget_SetDock( client_area, DOCK_TYPE_FILL ); Widget_Hide( titlebar ); Widget_Show( client_area ); break; case WINDOW_STYLE_PURE_BLUE: back_color = RGB(30,160,225); border_color = RGB(0,130,195); goto union_draw_method; case WINDOW_STYLE_PURE_GREEN: back_color = RGB(140,190,40); border_color = RGB(110,160,10); goto union_draw_method; case WINDOW_STYLE_PURE_RED: back_color = RGB(230,20,0); border_color = RGB(200,0,0); goto union_draw_method; case WINDOW_STYLE_PURE_ORANGE: back_color = RGB(240,150,10); border_color = RGB(210,120,0); goto union_draw_method; case WINDOW_STYLE_PURE_PURPLE: back_color = RGB(110,20,95); border_color = RGB(80,0,65); union_draw_method:; /* 若窗口未获得焦点 */ if( !Widget_GetFocus( win_p ) ) { back_color = RGB(235,235,235); border_color = RGB(211,211,211); } /* 更新窗口标题栏上的关闭按钮 */ Widget_Update( btn ); border = Border(1, BORDER_STYLE_SOLID, border_color); Widget_SetBorder( client_area, border); Widget_SetBorder( win_p, border); Widget_SetBackgroundColor( win_p, back_color ); Graph_FillColor( graph, back_color ); Widget_SetBackgroundColor( client_area, RGB(255,255,255) ); Widget_SetBackgroundImage( titlebar, NULL ); Widget_SetBackgroundLayout( titlebar, 0 ); Widget_SetBackgroundTransparent( titlebar, TRUE ); Widget_SetBackgroundTransparent( client_area, FALSE ); Widget_SetPadding( win_p, Padding(1,4,4,4) ); Widget_SetPadding( client_area, Padding(1,1,1,1) ); size = Widget_GetContainerSize( win_p ); Widget_Resize( titlebar, Size(size.h, 25) ); Widget_Resize( client_area, Size(size.w, size.h - 25) ); Widget_SetDock( titlebar, DOCK_TYPE_TOP ); Widget_SetDock( client_area, DOCK_TYPE_BOTTOM ); Widget_Show( titlebar ); Widget_Show( client_area ); break; default: // break; } }
/** 初始化键位设置窗口 */ void GameWindow_InitSetKeyboardWindow(void) { /* 创建所需的GUI部件 */ window = Widget_New("window"); box = Widget_New(NULL); label = Widget_New("label"); label_left = Widget_New("label"); label_right = Widget_New("label"); label_up = Widget_New("label"); label_down = Widget_New("label"); label_jump = Widget_New("label"); label_defense = Widget_New("label"); label_a_atk = Widget_New("label"); label_b_atk = Widget_New("label"); btn_left = Widget_New("button"); btn_right = Widget_New("button"); btn_up = Widget_New("button"); btn_down = Widget_New("button"); btn_a_atk = Widget_New("button"); btn_b_atk = Widget_New("button"); btn_jump = Widget_New("button"); btn_defense = Widget_New("button"); btn_ok = Widget_New("button"); btn_reset = Widget_New("button"); Widget_Container_Add( box, btn_left ); Widget_Container_Add( box, btn_right ); Widget_Container_Add( box, btn_up ); Widget_Container_Add( box, btn_down ); Widget_Container_Add( box, btn_jump ); Widget_Container_Add( box, btn_defense ); Widget_Container_Add( box, btn_a_atk ); Widget_Container_Add( box, btn_b_atk ); Widget_Container_Add( box, label_left ); Widget_Container_Add( box, label_right ); Widget_Container_Add( box, label_up ); Widget_Container_Add( box, label_down ); Widget_Container_Add( box, label_jump ); Widget_Container_Add( box, label_defense ); Widget_Container_Add( box, label_a_atk ); Widget_Container_Add( box, label_b_atk ); Window_ClientArea_Add( window, box ); Window_ClientArea_Add( window, label ); Window_ClientArea_Add( window, btn_ok ); Window_ClientArea_Add( window, btn_reset ); Widget_SetAutoSize( btn_left, FALSE, 0 ); Widget_SetAutoSize( btn_right, FALSE, 0 ); Widget_SetAutoSize( btn_up, FALSE, 0 ); Widget_SetAutoSize( btn_down, FALSE, 0 ); Widget_SetAutoSize( btn_jump, FALSE, 0 ); Widget_SetAutoSize( btn_a_atk, FALSE, 0 ); Widget_SetAutoSize( btn_b_atk, FALSE, 0 ); Widget_SetAutoSize( btn_defense, FALSE, 0 ); Widget_SetAutoSize( btn_ok, FALSE, 0 ); Widget_Resize( btn_left, KEYBTN_SIZE ); Widget_Resize( btn_right, KEYBTN_SIZE ); Widget_Resize( btn_up, KEYBTN_SIZE ); Widget_Resize( btn_down, KEYBTN_SIZE ); Widget_Resize( btn_jump, KEYBTN_SIZE ); Widget_Resize( btn_a_atk, KEYBTN_SIZE ); Widget_Resize( btn_b_atk, KEYBTN_SIZE ); Widget_Resize( btn_defense, KEYBTN_SIZE ); Widget_Resize( btn_ok, BTN_SIZE ); Widget_Resize( btn_reset, BTN_SIZE ); Widget_Move( btn_left, Pos(0,50+22) ); Widget_Move( btn_right, Pos(100,50+22) ); Widget_Move( btn_up, Pos(50,0+22) ); Widget_Move( btn_down, Pos(50,50+22) ); Widget_Move( btn_jump, Pos(200,50+22) ); Widget_Move( btn_a_atk, Pos(200,0+22) ); Widget_Move( btn_b_atk, Pos(250,0+22) ); Widget_Move( btn_defense, Pos(250,50+22) ); Widget_Move( label_left, Pos(10,125) ); Widget_Move( label_right, Pos(110,125) ); Widget_Move( label_up, Pos(60,0) ); Widget_Move( label_down, Pos(60,125) ); Widget_Move( label_a_atk, Pos(210,0) ); Widget_Move( label_b_atk, Pos(260,0) ); Widget_Move( label_jump, Pos(210,125) ); Widget_Move( label_defense, Pos(260,125) ); UpdateKeyBtn(); /* 设置各种文本 */ Label_TextW( label_left, TEXT_LEFT ); Label_TextW( label_right, TEXT_RIGHT ); Label_TextW( label_up, TEXT_UP ); Label_TextW( label_down, TEXT_DOWN ); Label_TextW( label_jump, TEXT_JUMP ); Label_TextW( label_defense, TEXT_DEFENSE ); Label_TextW( label_a_atk, TEXT_A_ATK ); Label_TextW( label_b_atk, TEXT_B_ATK ); /* 设置窗口 */ Widget_SetStyleID( window, WINDOW_STYLE_LINE ); Widget_Resize( window, WINDOW_SIZE ); Widget_SetPadding( Window_GetClientArea(window), Padding(10,10,10,10) ); Label_TextW( label, TEXT_SET_KEYBOARD ); Widget_SetBackgroundColor( label, RGB(255,255,255) ); Widget_SetBackgroundTransparent( label, FALSE ); Button_TextW( btn_ok, TEXT_OK ); Button_TextW( btn_reset, TEXT_RESET ); Widget_SetSize( box, "100%", "165px" ); Widget_SetBorder( box, Border(1,BORDER_STYLE_SOLID,RGB(200,200,200)) ); Widget_SetPadding( box, Padding(10,10,10,10) ); Widget_SetAlign( box, ALIGN_TOP_CENTER, Pos(0,12) ); Widget_SetAlign( label, ALIGN_TOP_CENTER, Pos(0,0) ); Widget_SetAlign( btn_ok, ALIGN_BOTTOM_CENTER, Pos(-50,-5) ); Widget_SetAlign( btn_reset, ALIGN_BOTTOM_CENTER, Pos(50,-5) ); /* 为键位按钮连接事件 */ Widget_ConnectEvent( btn_ok, EVENT_CLICKED, btn_ok_on_clicked ); Widget_ConnectEvent( btn_reset, EVENT_CLICKED, btn_reset_on_clicked ); Widget_ConnectEvent( btn_left, EVENT_CLICKED, btn_key_on_clicked ); Widget_ConnectEvent( btn_right, EVENT_CLICKED, btn_key_on_clicked ); Widget_ConnectEvent( btn_up, EVENT_CLICKED, btn_key_on_clicked ); Widget_ConnectEvent( btn_down, EVENT_CLICKED, btn_key_on_clicked ); Widget_ConnectEvent( btn_b_atk, EVENT_CLICKED, btn_key_on_clicked ); Widget_ConnectEvent( btn_a_atk, EVENT_CLICKED, btn_key_on_clicked ); Widget_ConnectEvent( btn_jump, EVENT_CLICKED, btn_key_on_clicked ); Widget_ConnectEvent( btn_defense, EVENT_CLICKED, btn_key_on_clicked ); Widget_Show( btn_left ); Widget_Show( btn_right ); Widget_Show( btn_up ); Widget_Show( btn_down ); Widget_Show( btn_jump ); Widget_Show( btn_a_atk ); Widget_Show( btn_b_atk ); Widget_Show( btn_defense ); Widget_Show( label_left ); Widget_Show( label_right ); Widget_Show( label_up ); Widget_Show( label_down ); Widget_Show( label_jump ); Widget_Show( label_a_atk ); Widget_Show( label_b_atk ); Widget_Show( label_defense ); Widget_Show( btn_ok ); Widget_Show( btn_reset ); Widget_Show( box ); Widget_Show(label ); }