基于MiniGUI的嵌入式媒体播放器的设计与实现
3.3 主要函数及具体实现
本文引用地址:https://www.eepw.com.cn/article/85284.htm⑴ 播放控制事件回调函数
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;
}
⑵ 列表事件处理函数
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;
}
}
⑶ 主函数
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 结束语
随着嵌入式系统硬件性能的不断提升,用户对应用程序界面的友好性和功能的完备性提出了更高的要求。本文介绍的基于MiniGUI的嵌入式媒体播放器具有设计简单,占用系统资源少等特点,可作为开发基于嵌入式图形界面系统的应用软件的参考。
参考文献
[1] 魏永明.M in iGUI用户手册v1.6 [M].北京:北京飞漫软件技术有限公司,2006.
[2] 魏永明.M in iGUI编程指南v1.6 [M].北京:北京飞漫软件技术有限公司,2006.
[3] 杨小军.基于嵌入式Linux系统界面的研究[[J].现代电子技术,2004, 27 (IS):89-91.
[4] BarrM. C/C++嵌入式系统编程[M].十志宏译.北京:中国电力出版社,2001.
linux操作系统文章专题:linux操作系统详解(linux不再难懂)c++相关文章:c++教程
评论