|
如下图.先打开窗口1,再打开窗口2.然后再单击"窗口1"重新创建窗口1,这时侯窗口2也被隐藏掉了.奇怪.
(原文件名:step1.jpg)
(原文件名:step2.jpg)
测试代码:
/*
* 程序清单:窗口演示
*
* 这个例子会先创建出一个演示用的view,当点击上面的按钮时会不同的模式创建窗口
*/
#include <rtgui/rtgui.h>
#include <rtgui/rtgui_system.h>
#include <rtgui/widgets/window.h>
#include <rtgui/widgets/label.h>
#include <rtgui/widgets/textbox.h>
#include <rtgui/widgets/button.h>
#include "demo_view.h"
#include <string.h>
rtgui_win_t *win1=RT_NULL;
/* 窗口1显示 */
static void demo_win_onbutton1(struct rtgui_widget* widget, rtgui_event_t* event)
{
rtgui_toplevel_t *parent;
rtgui_label_t *label;
rtgui_rect_t rect = {5, 25, 230, 150};
parent = RTGUI_TOPLEVEL(rtgui_widget_get_toplevel(widget));
if ( win1 != RT_NULL)
{
rtgui_win_destroy(win1);
win1 = RT_NULL;
}
/* 创建一个窗口 */
win1 = rtgui_win_create(parent,
"win 1", &rect, RTGUI_WIN_STYLE_DEFAULT);
rect.x1 = 20;
rect.x2 = 100;
rect.y1 += 5;
rect.y2 = rect.y1 + 20;
label = rtgui_label_create("窗口1");
/* 设置textbox控件的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
/* 添加textbox控件到视图中 */
rtgui_container_add_child(RTGUI_CONTAINER(win1), RTGUI_WIDGET(label));
/* 非模态显示窗口 */
rtgui_win_show(win1, RT_FALSE);
}
/* 窗口2显示 */
static void demo_win_onbutton2(struct rtgui_widget* widget, rtgui_event_t* event)
{
rtgui_win_t *win;
rtgui_toplevel_t *parent;
rtgui_label_t *label;
rtgui_rect_t rect = {5, 180, 230, 260};
parent = RTGUI_TOPLEVEL(rtgui_widget_get_toplevel(widget));
/* 创建一个窗口 */
win = rtgui_win_create(parent,
"Win 2", &rect, RTGUI_WIN_STYLE_DEFAULT);
rect.x1 = 20;
rect.x2 = 100;
rect.y1 = 210;
rect.y2 = rect.y1 + 20;
label = rtgui_label_create("窗口2");
/* 设置textbox控件的位置 */
rtgui_widget_set_rect(RTGUI_WIDGET(label), &rect);
/* 添加textbox控件到视图中 */
rtgui_container_add_child(RTGUI_CONTAINER(win), RTGUI_WIDGET(label));
/* 非模态显示窗口 */
rtgui_win_show(win, RT_FALSE);
}
rtgui_view_t* demo_view_window(rtgui_workbench_t* workbench)
{
rtgui_rect_t rect;
rtgui_view_t* view;
rtgui_button_t *button;
/* 创建一个演示用的视图 */
view = demo_view(workbench, "Window Demo");
demo_view_get_rect(view, &rect);
rect.x1 += 5;
rect.x2 = rect.x1 + 60;
rect.y1 = 270;
rect.y2 = 290;
button = rtgui_button_create("窗口1");
rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect);
rtgui_container_add_child(RTGUI_CONTAINER(view), RTGUI_WIDGET(button));
/* 设置onbutton为demo_win_onbutton函数 */
rtgui_button_set_onbutton(button, demo_win_onbutton1);
rect.x1 = rect.x2;
rect.x2 = rect.x1 + 60;
button = rtgui_button_create("窗口2");
rtgui_widget_set_rect(RTGUI_WIDGET(button), &rect);
rtgui_container_add_child(RTGUI_CONTAINER(view), RTGUI_WIDGET(button));
/* 设置onbutton为demo_win_onbutton函数 */
rtgui_button_set_onbutton(button, demo_win_onbutton2);
return view;
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|