当前位置: 首页 > news >正文

成都网站制品牌设计风格

成都网站制,品牌设计风格,原创文章对网站的好处,电子商务的网站建设场景 我们知道在工程中#xff0c;Ui是一个线程#xff0c;并且需要一直存在#xff0c;当我们使用的开机画面在这个线程开启就直接展示的时候#xff0c;因为awtk的界面是window_open入栈的#xff0c;即首次打开的窗口会记录在top#xff0c;往后的窗口会依次往后存放Ui是一个线程并且需要一直存在当我们使用的开机画面在这个线程开启就直接展示的时候因为awtk的界面是window_open入栈的即首次打开的窗口会记录在top往后的窗口会依次往后存放并记录位置当跳回主界面的时候此时调用的window_manager_back_to_home/window_manager_get_top_window会出现开机界面因此开机画面如果不做回收释放就会一直存在。 如果要做回收释放开机界面必须要实现为可以释放内存的堆结构并且记录窗口指针提供外部释放。同时需要注意一点window_open调用和释放窗口指针等结构都必须要在ui线程防止多线程操作死机。后续在跳回主界面的时候就会直接回到主界面而不会回到开机界面但是当显示是开机界面如果加入其他界面呢就需要采用idle_queue添加主窗口交互界面中主窗口为其他窗口的入口了。 //主窗口某一按键功能,位于ui线程if (evt-key TK_KEY_F10) {window_manager_back_to_home(wm); //如果没有释放开机界面回不到主窗口并且操作会挂掉。//win window_manager_get_top_window(wm);win widget_child(window_manager(), win_main);return_value_if_fail(win ! NULL, RET_STOP);button_win_pages_set(win,FALSE);return RET_STOP;} ... 具体更改实现 主线程 //假设主函数有ui线程和work线程。 int main(int argc,char* argv[]) {thread_start(WinMain(ui线程));thread_start(work线程);while(1){delay(1);} }ui线程 int WinMain(void) {int lcd_w 800;int lcd_h 480; #if defined(LCD_W) defined(LCD_H)lcd_w LCD_W;lcd_h LCD_H; #endif#ifdef WITH_FS_RESchar res_root[MAX_PATH 1];char app_root[MAX_PATH 1];path_app_root(app_root);memset(res_root, 0x00, sizeof(res_root)); #if LCD_W 480path_build(res_root, MAX_PATH, app_root, res_480_272, NULL); #elsepath_build(res_root, MAX_PATH, app_root, res_800_480, NULL); #endiftk_init(lcd_w, lcd_h, APP_SIMULATOR, NULL, res_root); #elsetk_init(lcd_w, lcd_h, APP_SIMULATOR, NULL, NULL); #endif#endif//#define WITH_LCD_PORTRAIT 1 #if defined(USE_GUI_MAIN) defined(WITH_LCD_PORTRAIT)if (lcd_w lcd_h) {tk_set_lcd_orientation(LCD_ORIENTATION_90);} #endif /*WITH_LCD_PORTRAIT*/#ifdef WITH_LCD_LANDSCAPEif (lcd_w lcd_h) {tk_set_lcd_orientation(LCD_ORIENTATION_90);} #endif /*WITH_LCD_PORTRAIT*//* 初始化资源 */assets_init();/*初始化扩展和自定义窗口*/tk_ext_widgets_init();custom_widgets_init();/* 实现UI app应用 即用户界面主入口*/application_init(); //进入用户的ui界面_gui_init_done 1;/* awtk死循环运行 */tk_run();return 0; }static void* pwinNULL; void setprogress_bar(int progress) //外部触发ui释放窗口内存。 {if(pwin){close_Swin(pwin);pwinNULL;} }ret_t application_init(void) { #if 1pwinawtk_show_start_box(); //只刷新开机界面 并记录窗口句柄return_value_if_fail(awtk_adapter_init() ! RET_OK, RET_FAIL); #else //同时打开开机界面和主界面的方式是不正确的pwinawtk_show_start_box();open_win_application();return_value_if_fail(awtk_adapter_init() ! RET_OK, RET_FAIL); #endifreturn RET_OK; }ret_t open_win_application(void) //主窗口是打开其他窗口的入口。 {common_id_string_tab_init();open_window_manager(); //管理所有窗口open_sys_bar();widget_t* win window_open(win_main);return_value_if_fail(win ! NULL, RET_FAIL);common_win_pages_set(win);button_win_pages_set(win,FALSE);widget_t* canvas canvas_widget_create(win,10,180,60 ,48);widget_on(canvas, EVT_PAINT, on_paint_vgcanvas, NULL);common_id_fun_tab_foreach(win, win_main_fun_tab, WIN_MAIN_FUN_TAB_SIZE, PM_UPDATE_PARAM);widget_on(win, EVT_KEY_DOWN, on_win_key_down, win);widget_foreach(win, init_widget, win);return RET_OK; }static ret_t idle_close_start_box( const idle_info_t* idle ) {return_value_if_fail( idle ! NULL, RET_BAD_PARAMS );idle_data_t* p_data (idle_data_t*)( idle-ctx );if ( p_data p_data-win ) {p_data-callfun_b_enter FALSE;timer_remove(p_data-timer_id);window_close( p_data-win ); //释放窗口win_close_need_free_mem( p_data );};return RET_OK; }void close_Swin( void* p ) //必须ui线程调用 {idle_queue( idle_close_start_box, p ); } //开机界面必须使用堆创建的方式直接静态界面直接将界面缓存在内部管理的链表中 //如果没有提供外部释放接口。在返回top层开启home界面的时候显示的就不是主界面 //而是开机界面。不符合设计。并且此时操作界面按键会引起死机。 static ret_t idle_show_start_box( const idle_data_t* idle ) {return_value_if_fail( idle ! NULL, RET_BAD_PARAMS );idle_data_t* p_data idle;widget_t* win window_open( home );//win_debugif ( win NULL ) {win_close_need_free_mem( p_data );return RET_BAD_PARAMS;}widget_t* title widget_get_child( win, 0 );widget_t* client widget_get_child( win, 1 );widget_t* widget NULL;p_data-win win; //记录窗口供外部释放。//if ( p_data-dis_type MSGBOX_DIS_DELAY ) {widget widget_get_child( client, 1 );widget_set_visible( widget, FALSE, TRUE );widget widget_get_child( client, 2 );widget_set_visible( widget, FALSE, TRUE );p_data-timer_id timer_add( on_timer_Sclose_win, p_data, 500 );//}return RET_OK; }void* awtk_show_start_box() {idle_data_t* p TKMEM_ZALLOC( idle_data_t ); //awtk内部堆申请内存if(p){wstr_init( p-text, WSTRLENTH );wstr_set_utf8( p-text, );p-info_type 0;p-dis_type 0;p-callfun NULL;p-win NULL;idle_show_start_box(p);}return p; }work线程 uint32_t work线程() {//dosomething ......idle_queue( OnAwtkUiDone, this ); //通过这个接口往ui线程添加主窗口//dosomething ...... }ret_t OnAwtkUiDone( const idle_info_t* idle ) {CCoreEngine* pCore (CCoreEngine*)idle-ctx;if ( pCore ){pCore-OnGuiStartDone();}return RET_REMOVE; }void CCoreEngine::OnGuiStartDone() { #if OPEN_AWTKsetprogress_bar(100); //当bar到达100%后释放开机界面open_win_application(); //引入主界面 #endif }
http://www.w-s-a.com/news/835118/

相关文章:

  • 长春火车站和高铁站是一个站吗公司名称注册查询系统
  • 便利的集团网站建设网页的依托网站
  • 茶叶网站建设题库制作助手app
  • 网站建设栏目层级北京网站搭建公司电话
  • 网站开发运营经理打开百度竞价页面是网站是什么
  • 国内最专业的设计网站建设现在用什么语言做网站
  • 湖南网站开发 岚鸿象山县建设工程招投标网站
  • 长沙免费网站排名wordpress 教学
  • 专门做app的网站html代码是什么
  • 临沂网站制作建设欧米茄表官网
  • 北京模板网站开发全包网站建设的第三方平台
  • 在凡科做的网站怎么推广网页模板下载 免费 html
  • 有关网站建设的标题仿亿欧网wordpress
  • 网站建设公司销售招聘常用的搜索引擎有哪些?
  • wordpress中.htaccess新上线的网站怎么做优化
  • 家教网站怎么做网站建设品牌推荐
  • 青岛做外贸网站建设茶叶公司网站建设策划书
  • 个人电脑做网站主机三合一网站
  • 用html框架做网站怎么在.Net中做团购网站
  • 怎样建一个自己公司的网站制作网站需要钱吗
  • 联盟网站制作wap网站制作公司
  • 美丽乡村建设发展论坛网站wordpress 仿站 教程网
  • 浙江省建设注册管理中心网站首页优设设计网站导航
  • 台州小型网站建设国内免费的建网站平台
  • 自己做网站不推广网站建设工作室发展
  • 有女人和马做网站吗宁波seo优势
  • 网站做用户记录表电商运营推广计划方案
  • 网站备案认领杭州网页设计公司招聘
  • 易签到网站开发设计做网站运营有前途吗
  • 南通网站建设心得2023必考十大时政热点