基于MiniGUI的嵌入式媒體播放器的設(shè)計與實現(xiàn)
3.3 主要函數(shù)及具體實現(xiàn)
本文引用地址:http://cafeforensic.com/article/85284.htm?、?播放控制事件回調(diào)函數(shù)
static int main_event_cb (HWND hwnd, skin_item_t* item, int event, void* data)
{ …
if (event==SIE_BUTTON_CLICKED) {
switch (item->id) {
case SIID_PLAY:
…
case SIID_PAUSE:
…
case SIID_STOP:
…
case SIID_CLOSE:
…
}
}
else if (event==SIE_SLIDER_CHANGED && item->id!=SIID_VOLUME) {
…
}
return 1;
}
⑵ 列表事件處理函數(shù)
void playlist_handle_event(PEvent *event, void *data)
{
…
switch(event->type) {
case ButtonPress:
…
case ButtonRelease:
…
case KeyPress:
if(!playlist)
return;
mykeyevent = event->xkey;
LockDisplay(gGui->display);
len="LookupString"(&mykeyevent, kbuf, sizeof(kbuf), &mykey, NULL);
UnlockDisplay(gGui->display);
switch (mykey) {
case K_Down:
case K_Next:
browser_step_up(playlist->playlist, NULL);
break;
case K_Up:
case K_Prior:
browser_step_down(playlist->playlist, NULL);
break;
default:
gui_handle_event(event, data);
break;
}
break;
case MappingNotify:
LockDisplay(gGui->display);
RefreshKeyboardMapping((MappingEvent *)event);
UnlockDisplay(gGui->display);
break;
}
}
⑶ 主函數(shù)
int MiniGUIMain(int argc, const char* argv[])
{
…
PlayerHandle="PlayerNew"();
…
free(buffer);
PlayerGetInfo(PlayerHandle, &fi);
…
InitCreateInfo(&CreateInfo);
hMainWnd=CreateMainWindow(&CreateInfo);
if (hMainWnd==HWND_INVALID)
return -1;
…
while( GetMessage(&Msg, hMainWnd) )
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
…
}
PlayerClose(PlayerHandle);
…
MainWindowThreADCleanup(hMainWnd);
return 0;
}
4 結(jié)束語
隨著嵌入式系統(tǒng)硬件性能的不斷提升,用戶對應(yīng)用程序界面的友好性和功能的完備性提出了更高的要求。本文介紹的基于MiniGUI的嵌入式媒體播放器具有設(shè)計簡單,占用系統(tǒng)資源少等特點,可作為開發(fā)基于嵌入式圖形界面系統(tǒng)的應(yīng)用軟件的參考。
參考文獻(xiàn)
[1] 魏永明.M in iGUI用戶手冊v1.6 [M].北京:北京飛漫軟件技術(shù)有限公司,2006.
[2] 魏永明.M in iGUI編程指南v1.6 [M].北京:北京飛漫軟件技術(shù)有限公司,2006.
[3] 楊小軍.基于嵌入式Linux系統(tǒng)界面的研究[[J].現(xiàn)代電子技術(shù),2004, 27 (IS):89-91.
[4] BarrM. C/C++嵌入式系統(tǒng)編程[M].十志宏譯.北京:中國電力出版社,2001.
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)c++相關(guān)文章:c++教程
評論