📄 mainmenu.c
字号:
// mainMenu.c: implementation of the mainMenu class.
//
//////////////////////////////////////////////////////////////////////
#include"dvbutils.h"
#include "PrTuner.h"
#include "games.h"
#include "Prmem.h"
#define IDC_OPTIONS 10
#define IDC_MENU 20
#define IDC_EDIT 30
#include"imagelist.h"
HIMAGELIST himgs;
void*reshandle=0;
static void DoAction(int idx)
{
switch(idx){
case 0:CreateFavoriteWnd();break;
case 1:CreateEpgWnd();break;
case 2:CreateNvodWnd();break;
case 3:/*Browser*/break;//GAME
case 4:CreateSysInfoMenu();break;
case 5:CreateSysSetWindow(); break;
}
}
static LRESULT WINAPI MenuWndProc(HWND hwnd,UINT msgID,WPARAM wParam,LPARAM lParam)
{
switch(msgID)
{
case WM_COMMAND:
switch(wParam){
case MAKELONG(IDC_MENU,LBN_DBLCLK):
DoAction(SendMessage((HWND)lParam,LB_GETCURSEL,0,0));
break;
}break;
case WM_DRAWITEM:
if(wParam==IDC_MENU){
DRAWITEMSTRUCT*ds=(DRAWITEMSTRUCT*)lParam;
char text[128];
HDC hdc=(HDC)ds->hDC;
RECT rc=ds->rcItem;
HRGN hrgn=CreateRoundRectRgn(rc.left,rc.top,rc.right,rc.bottom,16,16);
if(ds->itemState&(ODS_SELECTED|ODS_FOCUS)){
FillRgn(hdc,hrgn,(HBRUSH)(COLOR_ACTIVECAPTION+1));
SetTextColor(hdc,GetSysColor(COLOR_HIGHLIGHTTEXT));
}else{
FillRgn(hdc,hrgn,(HBRUSH)(COLOR_WINDOW+1));
SetTextColor(hdc,GetSysColor(COLOR_WINDOWTEXT));
}
FrameRgn(hdc,hrgn,(HBRUSH)(COLOR_ACTIVEBORDER+1),2,2);
DeleteObject((HGDIOBJ)hrgn);
SendMessage(ds->hwndItem,LB_GETTEXT,ds->itemID,(LPARAM)text);
DrawText(hdc,text,-1,&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
return 1;
}return 0;
case WM_VKEYTOITEM:
{
UINT vkey = LOWORD(wParam); // virtual-key code
UINT nCaretPos = HIWORD(wParam); // caret position
if(vkey!=VK_RETURN)return -1;
DoAction(nCaretPos);
}
return -1;
case WM_NCCALCSIZE:
{
LPRECT rc=(LPRECT) lParam;
InflateRect(rc,-2,-2);
rc->top+=30;
}
break;
case WM_NCPAINT:
{
HDC hdc=GetWindowDC(hwnd);
RECT rw,r1;
CHAR caption[128];
GetWindowRect(hwnd,&rw);
OffsetRect(&rw,-rw.left,-rw.top);
r1=rw;
r1.bottom=r1.top+32;
FillRect(hdc,&r1,(HBRUSH)(COLOR_WINDOWTEXT+1));
MoveTo(hdc,0,0);
LineTo(hdc,0,360);
GetWindowText(hwnd,caption,128);
SetBkMode(hdc,TRANSPARENT);
SetTextColor(hdc,GetSysColor(COLOR_CAPTIONTEXT));
DrawText(hdc,caption,-1,&r1,DT_LEFT|DT_VCENTER|DT_SINGLELINE);
DrawEdge(hdc,&rw,BDR_RAISEDOUTER|BDR_SUNKENINNER,BF_RECT);
DeleteDC(hdc);
}break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc=BeginPaint(hwnd,&ps);
HBRUSH hb=CreateSolidBrush(RGB(80,80,80));
FillRect(hdc,NULL,hb);
EndPaint(hwnd,&ps);
DeleteObject((HGDIOBJ)hb);
}break;
default:return DefWindowProc(hwnd,msgID,wParam,lParam);
}
return 0;
}
HWND CreateMainMenu(void)
{
HWND menuWnd,menu;
int i;
menuWnd=CreateMainWindow("MAIN MENU",WS_OVERLAPPEDWINDOW/*|WS_VSCROLL*/,
100,50,520,400,MenuWndProc);
menu=CreateWindow("Listbox",NULL,WS_TABSTOP|WS_VISIBLE|WS_BORDER|WS_CHILD|
LBS_NOTIFY|LBS_WRAP|LBS_HASSTRINGS|LBS_OWNERDRAWFIXED|LBS_WANTKEYBOARDINPUT,
0,0,260,282,menuWnd,(HMENU)IDC_MENU,NULL,NULL);
CreateWindow("Static",NULL,WS_CHILD|WS_BORDER|WS_VISIBLE,
0,282,520,60,menuWnd,(HMENU)188,NULL,NULL);
CreateWindow("SYSLINK","<a> OK </a>Enter Option<a>[up down]</a>To Select",WS_CHILD|WS_VISIBLE|WS_TABSTOP,
0,342,520,30,menuWnd,(HMENU)200,NULL,NULL);
SendMessage(menu,LB_SETCOLUMNWIDTH,86,0);
SendMessage(menu,LB_SETITEMHEIGHT,0,40);
SendMessage(menu,LB_ADDSTRING,0,(LPARAM)"Channel List");
SendMessage(menu,LB_ADDSTRING,0,(LPARAM)"EPG");
SendMessage(menu,LB_ADDSTRING,0,(LPARAM)"NVOD");
SendMessage(menu,LB_ADDSTRING,0,(LPARAM)"Information");
SendMessage(menu,LB_ADDSTRING,0,(LPARAM)"Games");
SendMessage(menu,LB_ADDSTRING,0,(LPARAM)"Setting ");
ShowWindow(menuWnd,SW_SHOW);
return menuWnd;
}
void TestOSD(void)
{
HWND hdsk=GetDesktopWindow();
static DWORD id,times=0;
id=(id+1)%10;
id=3;
times++;
PostMessage(hdsk,WM_COMMAND,(100+id), 0 );
TRACE("TestOSD Timers=%d\r\n",times);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -