免费注册 登录
液晶之家 返回首页

wbjben的个人空间 http://lcdhome.fpdclub.net/?124735 [收藏] [复制] [分享] [RSS]

日志

Mstar方案屏显源码

已有 483 次阅读2013-7-3 16:20 |系统分类:工作日志

在需要进入屏保的地方调用:

MApp_ZUI_ACT_StartupOSD(E_OSD_SCREEN_SAVER);

调用:

MApp_ZUI_ACT_AppShowScreenSaver();

通过:

for (wnd = 0; wnd < HWND_MAX; wnd++)

{

//printf("create msg: %lu\n", (U32)wnd);

MApp_ZUI_API_SendMessage(wnd, MSG_CREATE, 0);

}

再执行到:

iRet = MApp_ZUI_ACT_ExecuteWndProc(GETWNDPROCID(pMsg->hwnd), pMsg);

在判断:

g_GUI_WindowList[hwnd].u8WinProcID

时,有个WinProcIDEN_ZUI_SCREENSAVER_WINPROC

于是执行:

SCREENSAVER_WINPROC(msg->hwnd, msg);

此时msgtypeCreate

执行的函数为:

case MSG_CREATE:

{

    if(hwnd == HWND_SCREEN_SAVER_FRAME)  这句话的意思是定义要显示的Page

    {

         U16 x, y;

         //MApi_GOP_GWIN_Enable(MApp_ZUI_API_QueryGWinID(), FALSE); //hide it first!

         srand(msAPI_Timer_GetTime0());

 

         {

              x = UI_OSD_PANE_W/2;

              y = UI_OSD_PANE_H/2;

         }

 

        _ss_move_x_positive_main = 1;

        _ss_move_y_positive_main = 1;

        if ((rand()%2) == 0)

             _ss_move_x_positive_main = 0;

        if ((rand()%2) == 0)

             _ss_move_y_positive_main = 0;

 

        main_rect.left = x;

        main_rect.top = y;

        main_rect.width = SCREEN_SAVER_FRAME_WIDTH;

        main_rect.height = SCREEN_SAVER_FRAME_HEIGHT;

        MApp_ZUI_API_MoveAllSuccessors(hwnd, main_rect.left, main_rect.top);

        MApp_ZUI_API_SetTimer(hwnd, 0, SCREEN_SAVER_MOVE_INTERVAL);

      }

}

  break;

 

至此,已经显示出第一幅画面,并已经通过:

MApp_ZUI_API_SetTimer(hwnd, 0, SCREEN_SAVER_MOVE_INTERVAL);

发送了Timer,就可以每隔SCREEN_SAVER_MOVE_INTERVAL这么多微秒更换一个画面了。


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 免费注册

积分充值|广告联系|Archiver|小黑屋|液晶之家 ( 粤ICP备05077429号  

GMT+8, 2024-5-18 11:26

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

返回顶部