|
楼主 |
发表于 2007-5-7 03:57:08
|
显示全部楼层
让大家看看Enlightenment的ewl图形库的程序示例啊,是从google上找到的。看起来,整个结构挺清晰的, 我正在考虑学哪种跨平台的图形库来着,本来打算是wxWidgets的,它跨平台效果不错;Qt开发商业软件需要买许可证,且价格不菲,暂时不考虑它。gtk+移植到win32平台,官方主页都说了会有问题。看来现在又有一种新的选择了,不过好像ewl还不能跨平台。
在http://www.enlightenment.org/Libraries/Ewl/也有ewl的hello world程序示例,关注e17发展的朋友可以试试哦!
[php]
#include <Ewl.h>
#include <stdio.h>
#include <string.h>
static void
cb_window_destroy(Ewl_Widget *w, void *ev, void *data)
{
ewl_main_quit();
}
static void
cb_window_close(Ewl_Widget *w, void *ev, void *data)
{
ewl_widget_destroy(w);
}
static void
cb_key_down(Ewl_Widget *w, void *ev, void *data)
{
Ewl_Event_Key_Down *e;
e = ev;
if (!strcmp(e->base.keyname, "Escape")
|| !strcmp(e->base.keyname, "q"))
{
Ewl_Widget *win;
win = ewl_widget_name_find("main_win");
ewl_widget_destroy(win);
}
}
int
main(int argc, char ** argv)
{
Ewl_Widget *win, *scroll, *o;
if (!ewl_init(&argc, argv))
{
fprintf(stderr, "Unable to init EWL.\n");
return 1;
}
if (argc < 2)
{
fprintf(stderr, "Need image to view.\n");
return 1;
}
win = ewl_window_new();
ewl_window_title_set(EWL_WINDOW(win), "EWL Image Viewer");
ewl_window_class_set(EWL_WINDOW(win), "ewl_image_viewer");
ewl_window_name_set(EWL_WINDOW(win), "ewl_image_viewer");
ewl_object_fill_policy_set(EWL_OBJECT(win), EWL_FLAG_FILL_ALL);
ewl_object_size_request(EWL_OBJECT(win), 640, 480);
ewl_callback_append(win, EWL_CALLBACK_DELETE_WINDOW, cb_window_close, NULL);
ewl_callback_append(win, EWL_CALLBACK_KEY_DOWN, cb_key_down, NULL);
ewl_callback_append(win, EWL_CALLBACK_DESTROY, cb_window_destroy, NULL);
ewl_widget_name_set(win, "main_win");
ewl_widget_show(win);
scroll = ewl_scrollpane_new();
ewl_container_child_append(EWL_CONTAINER(win), scroll);
ewl_widget_show(scroll);
o = ewl_image_new();
ewl_image_file_path_set(EWL_IMAGE(o), argv[1]);
ewl_container_child_append(EWL_CONTAINER(scroll), o);
ewl_widget_show(o);
ewl_main();
return 0;
}
[/php]
将以上源码保存为tmp.c后,使用:
- $) gcc -o eiv tmp.c `ewl-config --cflags --libs`
复制代码
来编译它。 |
|