📄 systemsetting.c
字号:
#include"dvbutils.h"
#define IDC_SYSSET 111
#define IDC_SYSCOMHELP 112
#define IDC_SYSWINHELP 113
#define IDC_SYSTITLE 114
#define SYSSET_POSITION 2*1024*1024-2048
#define SYNC_DATA 0xB8B8B8B8
#define IDC_SCREENTYPE 20
#define IDC_VIIDEOTYPE 21
#define IDC_TRANS 22
#define IDC_TIMEZONE 23
#define IDC_LANGUAGE 24
HWND sysSetWnd;
static char*Languages[][2]={{"Chinese","chi"},{"Chinese/TW","cht"},{"English","eng"}};
static char*modulations[]={"not defined","16-QAM","32-QAM","64-QAM","128-QAM","256-QAM"};
static LRESULT WINAPI MyWndProc(HWND hwnd,UINT msgID,WPARAM wParam,LPARAM lParam)
{
switch(msgID){
case WM_COMMAND:
switch(wParam){
case 0:break;
}break;
default:return DefWindowProc(hwnd,msgID,wParam,lParam);
}
return 0;
}
int SaveSysSetting(void)
{
int idx;
unsigned char buf[1024];
UINT *sync=(UINT*)buf;
*sync=SYNC_DATA;
/* sysSetting.ScreenType=SendMessage(GetDlgItem(sysSetWnd,20));
sysSetting.Transparency=GetItemIndex(GetDlgItem(sysSetWnd,21));
sysSetting.TimeZone=GetItemIndex(GetDlgItem(sysSetWnd,22));
if((idx=GetItemIndex(GetDlgItem(sysSetWnd,23)))>=0);
memcpy(sysSetting.LocalLanguage,Languages[idx][1],3);
if((idx=GetItemIndex(GetDlgItem(sysSetWnd,24)))>=0)
memcpy(sysSetting.AudioLanguage,Languages[idx][1],3);*/
return 0;
}
HWND CreateSysParamsSetWindow(void)
{
int i;
HWND hc;
HWND wnd=CreateMainWindow("System Setting",WS_VISIBLE|WS_OVERLAPPEDWINDOW,80,120,460,250,MyWndProc);
CreateWindow("Static","Menu Transparency",WS_VISIBLE|WS_CHILD|SS_RIGHT,
10,90,220,30,wnd,(HMENU)3,NULL,NULL);
CreateWindow("Select","Screen Type",WS_TABSTOP|WS_VISIBLE|WS_CHILD|OPS_LABELRIGHT|OPS_SHOWARROWALWAYS|
WS_BORDER,10,10,440,30,wnd,(HMENU)IDC_SCREENTYPE,NULL,NULL); //screen type
CreateWindow("Select","Video Type",WS_TABSTOP|WS_VISIBLE|WS_CHILD|OPS_LABELRIGHT|
WS_BORDER,10,50,440,30,wnd,(HMENU)IDC_VIIDEOTYPE,NULL,NULL);//Video Type
CreateWindow("TrackBar",NULL,WS_TABSTOP|WS_VISIBLE|WS_CHILD|
WS_BORDER,250,95,200,20,wnd,(HMENU)IDC_TRANS,NULL,NULL);//menu transparency
CreateWindow("Select","Time Adjustment",WS_TABSTOP|WS_VISIBLE|WS_CHILD|OPS_LABELRIGHT|
WS_BORDER,10,130,440,30,wnd,(HMENU)IDC_TIMEZONE,NULL,NULL);//time adjustment
CreateWindow("Select","Language",WS_TABSTOP|WS_VISIBLE|WS_CHILD|OPS_LABELRIGHT|
WS_BORDER,10,170,440,30,wnd,(HMENU)IDC_LANGUAGE,NULL,NULL);//menu language
SendMessage(GetDlgItem(wnd,IDC_SCREENTYPE),OPT_ADDSTRING,0,(LPARAM)"4:3");
SendMessage(GetDlgItem(wnd,IDC_SCREENTYPE),OPT_ADDSTRING,0,(LPARAM)"16:9");
SendDlgItemMessage(wnd,IDC_SCREENTYPE,OPT_SETCURSEL,0,0);
SendMessage(GetDlgItem(wnd,IDC_VIIDEOTYPE),OPT_ADDSTRING,0,(LPARAM)"Auto");
SendMessage(GetDlgItem(wnd,IDC_VIIDEOTYPE),OPT_ADDSTRING,0,(LPARAM)"PAL");
SendMessage(GetDlgItem(wnd,IDC_VIIDEOTYPE),OPT_ADDSTRING,0,(LPARAM)"NTSC");
SendDlgItemMessage(wnd,IDC_VIIDEOTYPE,OPT_SETCURSEL,0,0);
SendMessage(GetDlgItem(wnd,IDC_TRANS),TBM_SETPOS,1,75);
for(i=-12;i<=12;i++){
char str[16];
sprintf(str,"GMT%+02d:00",i);
SendMessage(GetDlgItem(wnd,IDC_TIMEZONE),OPT_ADDSTRING,0,(LPARAM)str);
}
for(i=0;i<sizeof(Languages)/(sizeof(char*)*2);i++){
SendMessage(GetDlgItem(wnd,IDC_LANGUAGE),OPT_ADDSTRING,0,(LPARAM)Languages[i][0]);
}
//LoadSysSetting();
//UpdateWindow();
ShowWindow(wnd,SW_SHOWNORMAL);
return wnd;
}
static void DoAction(int idx)
{
switch(idx)
{
case 0:SearchChannelWnd();break;
case 1:CreateSysParamsSetWindow();break;
case 2:CreateFavoriteEditWnd();break;
case 3:CreateEpgWnd();break;
//case 4:CreateAudioView();break;
case 4:break;
}
}
static LRESULT WINAPI SystemSetProc(HWND hwnd,UINT msgID,WPARAM wParam,LPARAM lParam)
{
switch(msgID)
{
//case WM_CTLCOLORSTATIC:
case WM_COMMAND:
switch(wParam)
{
case MAKELONG(IDC_SYSSET,LBN_SELCHANGE):
switch(SendMessage((HWND)lParam,LB_GETCURSEL,0,0))
{
case 0:
SetDlgItemText(hwnd,IDC_SYSCOMHELP,"按确定键进入频道搜索");
break;
case 1:
SetDlgItemText(hwnd,IDC_SYSCOMHELP,"按确定键进入用户参数设置");break;
case 2:
SetDlgItemText(hwnd,IDC_SYSCOMHELP,"按确定键进入信号检测");break;
case 3:
SetDlgItemText(hwnd,IDC_SYSCOMHELP,"按确定键进入系统信息");break;
case 4:
SetDlgItemText(hwnd,IDC_SYSCOMHELP,"按确定键进入恢复出厂设置");break;
default:
break;
}break;
case MAKELONG(IDC_SYSSET,LBN_DBLCLK):
DoAction(SendMessage((HWND)lParam,LB_GETCURSEL,0,0));
break;
}
break;
case WM_DRAWITEM:
{
DRAWITEMSTRUCT*ds=(DRAWITEMSTRUCT*)lParam;
char text[128];
HDC hdc=(HDC)ds->hDC;
RECT rc=ds->rcItem;
HBRUSH hb;
HBRUSH hbBorder=CreateSolidBrush(RGB(160,190,222));
HRGN hrgn = CreateRoundRectRgn(rc.left, rc.top, rc.right,rc.bottom, 15,15);
if(ds->CtlType==ODT_LISTBOX)
{
if(ds->itemState&(ODS_SELECTED|ODS_FOCUS)){
hb = CreateSolidBrush(RGB(211,150,35));
}else{
hb = CreateSolidBrush(RGB(32,64,128));
}
FillRgn(hdc,hrgn,hb);
FrameRgn(hdc, hrgn, hbBorder, 2, 2);
SetTextColor(hdc,(ds->itemState&ODS_SELECTED)?RGB(0,0,0):RGB(255,255,255));
SendMessage(ds->hwndItem,LB_GETTEXT,ds->itemID,(LPARAM)text);
SetBkMode(hdc, TRANSPARENT);
DrawText(hdc,text,sizeof(text),&rc,DT_CENTER|DT_VCENTER|DT_SINGLELINE);
DeleteObject((HGDIOBJ)hb);
}else if(ds->CtlType==ODT_STATIC){
HBRUSH hbr;
DWORD fmt;
hbr=CreateSolidBrush(RGB(58, 110, 165));
hb =CreateSolidBrush(RGB(32,64,128));
FillRect(hdc, &ds->rcItem, hbr);
FillRgn(hdc,hrgn,hb);
FrameRgn(hdc,hrgn, hbBorder, 2, 2);
SendMessage(ds->hwndItem,WM_GETTEXT,ds->itemID,(LPARAM)text);
SetBkMode(hdc, TRANSPARENT);
SetTextColor(hdc,RGB(255,255,255));
fmt=DT_VCENTER|DT_SINGLELINE;
switch(GetWindowLong(ds->hwndItem,GWL_STYLE)&3){
case 0:fmt|=DT_LEFT;break;
case 1:fmt|=DT_CENTER;break;
case 2:fmt|=DT_RIGHT;break;
}
DrawText(hdc,text,sizeof(text),&ds->rcItem,fmt);
DeleteObject((HGDIOBJ)hbr);
DeleteObject((HGDIOBJ)hb);
}
DeleteObject((HGDIOBJ)hbBorder);
DeleteObject((HGDIOBJ)hrgn);
return 0;
}
case WM_MEASUREITEM:
{
MEASUREITEMSTRUCT *ms=(MEASUREITEMSTRUCT*)lParam;
ms->itemHeight=40;
PrDbgPrintf("###MessageBox ms->itemHeight=%d\n",ms->itemHeight);
return 0;
}
case WM_VKEYTOITEM:
{
UINT vkey = LOWORD(wParam); // virtual-key code
INT nCaretPos = HIWORD(wParam); // caret position
if(vkey==VK_RETURN)
DoAction(nCaretPos);
}
return -1;
case WM_ERASEBKGND:
FillRect((HDC)wParam,NULL,(HBRUSH)(COLOR_ACTIVEBORDER+2));
return 1;
default:
return DefWindowProc(hwnd,msgID,wParam,lParam);
}
return 0;
}
HWND CreateSysSetWindow(void)
{
HWND SysHwnd,menu,helpHwnd,winHelpHwnd,titleHwnd;
SysHwnd = CreateMainWindow("System Set", WS_VISIBLE|WS_OVERLAPPEDWINDOW, 0, 0, 720, 576, SystemSetProc);
titleHwnd = CreateWindow("Static","系统设置",WS_TABSTOP|WS_VISIBLE|WS_CHILD|SS_OWNERDRAW|SS_CENTER,
50,130,300,40,SysHwnd,(HMENU)IDC_SYSTITLE,NULL,NULL);
menu=CreateWindow("Listbox",NULL,WS_TABSTOP|WS_VISIBLE|WS_CHILD|LBS_NOTIFY|LBS_WRAP|LBS_HASSTRINGS|
LBS_OWNERDRAWVARIABLE|LBS_WANTKEYBOARDINPUT,
50,170,300,200,SysHwnd,(HMENU)IDC_SYSSET,NULL,NULL);
helpHwnd=CreateWindow("Static",NULL,WS_TABSTOP|WS_VISIBLE|WS_CHILD|SS_OWNERDRAW|SS_LEFT,
50,170+200,600,70,SysHwnd,(HMENU)IDC_SYSCOMHELP,NULL,NULL);
winHelpHwnd=CreateWindow("Static",NULL,WS_TABSTOP|WS_VISIBLE|WS_CHILD|SS_OWNERDRAW|SS_LEFT,
50,170+200+70,600,40,SysHwnd,(HMENU)IDC_SYSWINHELP,NULL,NULL);
SetWindowText(winHelpHwnd,"[↑↓]选择 [退出]关闭 [交替]返回");
// SendMessage(helpHwnd,WM_SETTEXT,0,(LPARAM)"按确定键进入状态显示");
SendMessage(menu,LB_SETCOLUMNWIDTH,30,0);
SendMessage(menu,LB_SETITEMHEIGHT,0,40);
SendMessage(menu,LB_ADDSTRING,0,(LPARAM)"频道搜索");
SendMessage(menu,LB_ADDSTRING,0,(LPARAM)"用户参数设置");
SendMessage(menu,LB_ADDSTRING,0,(LPARAM)"信号检测");
SendMessage(menu,LB_ADDSTRING,0,(LPARAM)"系统信息");
SendMessage(menu,LB_ADDSTRING,0,(LPARAM)"恢复出厂设置");
ShowWindow(SysHwnd,SW_SHOW);
return SysHwnd;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -