|
这个函数第1个参数非常重要,不是随便写的,因为此函数会比较用户写的第1个参数是否在文件里面存在
UINT gx_studio_named_widget_create(char *name, GX_WIDGET *parent, GX_WIDGET **new_widget)
{
UINT status = GX_FAILURE;
GX_CONST GX_STUDIO_WIDGET_ENTRY *entry = guiapp_widget_table;
GX_WIDGET *widget = GX_NULL;
while(entry->widget_information)
{
if (!strcmp(name, entry->widget_information->widget_name))
{
widget = gx_studio_widget_create((GX_BYTE *) entry->widget, entry->widget_information, parent);
if (widget)
{
status = GX_SUCCESS;
}
break;
}
entry++;
}
if (new_widget)
{
*new_widget = widget;
}
return status;
}
第1个参数是来自guiapp_widget_table,即xxxx__widget_table,这个前缀guiapp是用户使用GUIX Studio创建时的工程名。
我这里就是下面这个,仅有一个window_define
GX_CONST GX_STUDIO_WIDGET_ENTRY guiapp_widget_table[] =
{
{ &window_define, GX_NULL },
{GX_NULL, GX_NULL}
};
GX_CONST GX_STUDIO_WIDGET window_define =
{
"window",
GX_TYPE_WINDOW, /* widget type */
Window1_Main_ID, /* widget id */
#if defined(GX_WIDGET_USER_DATA)
0, /* user data */
#endif
GX_STYLE_BORDER_THIN|GX_STYLE_ENABLED|GX_STYLE_DYNAMICALLY_ALLOCATED, /* style flags */
GX_STATUS_ACCEPTS_FOCUS, /* status flags */
sizeof(WINDOW_CONTROL_BLOCK), /* control block size */
GX_COLOR_ID_WINDOW_FILL, /* normal color id */
GX_COLOR_ID_WINDOW_FILL, /* selected color id */
GX_COLOR_ID_DISABLED_FILL, /* disabled color id */
gx_studio_window_create, /* create function */
GX_NULL, /* drawing function override */
GX_NULL, /* event function override */
{0, 0, 799, 479}, /* widget size */
GX_NULL, /* next widget */
&window_prompt_define, /* child widget */
0, /* control block */
(void *) &window_properties /* extended properties */
};
这样实际使用的时候,就是:
gx_studio_named_widget_create("window", (GX_WIDGET *)root, (GX_WIDGET **)&pScreen);
|
|