📄 gui.cpp
字号:
case IDM_STORE_RGB24:
if (Store_Flag!=STORE_RGB24)
{
if (DDOverlay_Flag)
IDirectDrawSurface_UpdateOverlay(lpOverlay, NULL, lpPrimary, NULL, DDOVER_HIDE, NULL);
Store_Flag = STORE_RGB24;
CheckMenuItem(hMenu, IDM_STORE_RGB24, MF_CHECKED);
CheckMenuItem(hMenu, IDM_STORE_YUY2, MF_UNCHECKED);
EnableMenuItem(hMenu, IDM_BMP, MF_ENABLED);
if (WaitForSingleObject(hThread, 0)==WAIT_OBJECT_0)
{
Fault_Flag = false; Display_Flag = true;
Write_Frame(backward_reference_frame, d2v_backward, 0);
}
}
break;
case IDM_STORE_YUY2:
if (Store_Flag!=STORE_YUY2)
{
Store_Flag = STORE_YUY2;
CheckMenuItem(hMenu, IDM_STORE_RGB24, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_STORE_YUY2, MF_CHECKED);
EnableMenuItem(hMenu, IDM_BMP, MF_GRAYED);
if (DDOverlay_Flag)
{
GetClientRect(hWnd, &crect);
crect.bottom -= TRACK_HEIGHT;
FillRect(hDC, &crect, hBrush);
crect.bottom += TRACK_HEIGHT;
}
if (WaitForSingleObject(hThread, 0)==WAIT_OBJECT_0)
{
Fault_Flag = false; Display_Flag = true;
Write_Frame(backward_reference_frame, d2v_backward, 0);
}
}
break;
//--------------------------------------------------------------------------------------------
case IDM_TRACK_NONE:
ClearTrack();
Track_Flag = TRACK_NONE;
CheckMenuItem(hMenu, IDM_TRACK_NONE, MF_CHECKED);
break;
case IDM_TRACK_1:
ClearTrack();
Track_Flag = TRACK_1;
CheckMenuItem(hMenu, IDM_TRACK_1, MF_CHECKED);
break;
case IDM_TRACK_2:
ClearTrack();
Track_Flag = TRACK_2;
CheckMenuItem(hMenu, IDM_TRACK_2, MF_CHECKED);
break;
case IDM_TRACK_3:
ClearTrack();
Track_Flag = TRACK_3;
CheckMenuItem(hMenu, IDM_TRACK_3, MF_CHECKED);
break;
case IDM_TRACK_4:
ClearTrack();
Track_Flag = TRACK_4;
CheckMenuItem(hMenu, IDM_TRACK_4, MF_CHECKED);
break;
case IDM_TRACK_5:
ClearTrack();
Track_Flag = TRACK_5;
CheckMenuItem(hMenu, IDM_TRACK_5, MF_CHECKED);
break;
case IDM_TRACK_6:
ClearTrack();
Track_Flag = TRACK_6;
CheckMenuItem(hMenu, IDM_TRACK_6, MF_CHECKED);
break;
case IDM_TRACK_7:
ClearTrack();
Track_Flag = TRACK_7;
CheckMenuItem(hMenu, IDM_TRACK_7, MF_CHECKED);
break;
case IDM_TRACK_8:
ClearTrack();
Track_Flag = TRACK_8;
CheckMenuItem(hMenu, IDM_TRACK_8, MF_CHECKED);
break;
case IDM_AC3:
Format_Flag = FORMAT_AC3;
CheckMenuItem(hMenu, IDM_AC3, MF_CHECKED);
CheckMenuItem(hMenu, IDM_MPA, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_LPCM, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SELECT, MF_UNCHECKED);
break;
case IDM_MPA:
Format_Flag = FORMAT_MPA;
CheckMenuItem(hMenu, IDM_AC3, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_MPA, MF_CHECKED);
CheckMenuItem(hMenu, IDM_LPCM, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SELECT, MF_UNCHECKED);
break;
case IDM_LPCM:
Format_Flag = FORMAT_LPCM;
CheckMenuItem(hMenu, IDM_AC3, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_MPA, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_LPCM, MF_CHECKED);
CheckMenuItem(hMenu, IDM_SELECT, MF_UNCHECKED);
break;
case IDM_AC3_DEMUXALL:
AC3_Flag = AUDIO_DEMUXALL;
CheckMenuItem(hMenu, IDM_AC3_DEMUXALL, MF_CHECKED);
CheckMenuItem(hMenu, IDM_AC3_DEMUXONE, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_AC3_DECODE, MF_UNCHECKED);
break;
case IDM_AC3_DEMUXONE:
AC3_Flag = AUDIO_DEMUXONE;
CheckMenuItem(hMenu, IDM_AC3_DEMUXALL, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_AC3_DEMUXONE, MF_CHECKED);
CheckMenuItem(hMenu, IDM_AC3_DECODE, MF_UNCHECKED);
break;
case IDM_AC3_DECODE:
AC3_Flag = AUDIO_DECODE;
CheckMenuItem(hMenu, IDM_AC3_DEMUXALL, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_AC3_DEMUXONE, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_AC3_DECODE, MF_CHECKED);
break;
case IDM_DRC_NONE:
DRC_Flag = DRC_NONE;
CheckMenuItem(hMenu, IDM_DRC_NONE, MF_CHECKED);
CheckMenuItem(hMenu, IDM_DRC_LIGHT, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_DRC_NORMAL, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_DRC_HEAVY, MF_UNCHECKED);
break;
case IDM_DRC_LIGHT:
DRC_Flag = DRC_LIGHT;
CheckMenuItem(hMenu, IDM_DRC_NONE, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_DRC_LIGHT, MF_CHECKED);
CheckMenuItem(hMenu, IDM_DRC_NORMAL, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_DRC_HEAVY, MF_UNCHECKED);
break;
case IDM_DRC_NORMAL:
DRC_Flag = DRC_NORMAL;
CheckMenuItem(hMenu, IDM_DRC_NONE, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_DRC_LIGHT, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_DRC_NORMAL, MF_CHECKED);
CheckMenuItem(hMenu, IDM_DRC_HEAVY, MF_UNCHECKED);
break;
case IDM_DRC_HEAVY:
DRC_Flag = DRC_HEAVY;
CheckMenuItem(hMenu, IDM_DRC_NONE, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_DRC_LIGHT, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_DRC_NORMAL, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_DRC_HEAVY, MF_CHECKED);
break;
case IDM_DSDOWN:
if (DSDown_Flag)
CheckMenuItem(hMenu, IDM_DSDOWN, MF_UNCHECKED);
else
CheckMenuItem(hMenu, IDM_DSDOWN, MF_CHECKED);
DSDown_Flag = !DSDown_Flag;
break;
case IDM_MPA_DEMUXALL:
MPA_Flag = AUDIO_DEMUXALL;
CheckMenuItem(hMenu, IDM_MPA_DEMUXALL, MF_CHECKED);
CheckMenuItem(hMenu, IDM_MPA_DEMUXONE, MF_UNCHECKED);
break;
case IDM_MPA_DEMUXONE:
MPA_Flag = AUDIO_DEMUXONE;
CheckMenuItem(hMenu, IDM_MPA_DEMUXALL, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_MPA_DEMUXONE, MF_CHECKED);
break;
case IDM_SELECT:
Format_Flag = FORMAT_AUTO;
CheckMenuItem(hMenu, IDM_AC3, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_MPA, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_LPCM, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SELECT, MF_CHECKED);
break;
//-------------------------------------------------------------------------------------------
case IDM_IDCT_MMX:
iDCT_Flag = IDCT_MMX;
CheckMenuItem(hMenu, IDM_IDCT_REF, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_IDCT_MMX, MF_CHECKED);
CheckMenuItem(hMenu, IDM_IDCT_FPU, MF_UNCHECKED);
break;
case IDM_IDCT_FPU:
iDCT_Flag = IDCT_FPU;
CheckMenuItem(hMenu, IDM_IDCT_REF, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_IDCT_MMX, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_IDCT_FPU, MF_CHECKED);
break;
case IDM_IDCT_REF:
iDCT_Flag = IDCT_REF;
CheckMenuItem(hMenu, IDM_IDCT_REF, MF_CHECKED);
CheckMenuItem(hMenu, IDM_IDCT_MMX, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_IDCT_FPU, MF_UNCHECKED);
break;
case IDM_FO_NONE:
FO_Flag = FO_NONE;
CheckMenuItem(hMenu, IDM_FO_NONE, MF_CHECKED);
CheckMenuItem(hMenu, IDM_FO_FILM, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_FO_SWAP, MF_UNCHECKED);
SetDlgItemText(hDlg, IDC_DEBUG, "");
break;
case IDM_FO_FILM:
FO_Flag = FO_FILM;
CheckMenuItem(hMenu, IDM_FO_NONE, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_FO_FILM, MF_CHECKED);
CheckMenuItem(hMenu, IDM_FO_SWAP, MF_UNCHECKED);
SetDlgItemText(hDlg, IDC_DEBUG, "");
break;
case IDM_FO_SWAP:
FO_Flag = FO_SWAP;
CheckMenuItem(hMenu, IDM_FO_NONE, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_FO_FILM, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_FO_SWAP, MF_CHECKED);
SetDlgItemText(hDlg, IDC_DEBUG, "");
break;
case IDM_TVSCALE:
Scale_Flag = false;
YUVRGB_Scale = 0x1000200010002000;
YUVRGB_Offset = 0x0000000000000000;
CheckMenuItem(hMenu, IDM_TVSCALE, MF_CHECKED);
CheckMenuItem(hMenu, IDM_PCSCALE, MF_UNCHECKED);
if (WaitForSingleObject(hThread, 0)==WAIT_OBJECT_0)
{
Fault_Flag = false; Display_Flag = true;
Write_Frame(backward_reference_frame, d2v_backward, 0);
}
break;
case IDM_PCSCALE:
Scale_Flag = true;
YUVRGB_Scale = 0x1000254310002543;
YUVRGB_Offset = 0x0010001000100010;
CheckMenuItem(hMenu, IDM_TVSCALE, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_PCSCALE, MF_CHECKED);
if (WaitForSingleObject(hThread, 0)==WAIT_OBJECT_0)
{
Fault_Flag = false; Display_Flag = true;
Write_Frame(backward_reference_frame, d2v_backward, 0);
}
break;
case IDM_LUMINANCE:
if (LumDlg_Flag)
{
DestroyWindow(hLumDlg);
LumDlg_Flag = false;
}
else
hLumDlg = CreateDialog(hInst, (LPCTSTR)IDD_LUMINANCE, hWnd, (DLGPROC)Luminance);
break;
case IDM_NORM:
if (NormDlg_Flag)
{
DestroyWindow(hNormDlg);
NormDlg_Flag = false;
}
else
hNormDlg = CreateDialog(hInst, (LPCTSTR)IDD_NORM, hWnd, (DLGPROC)Normalization);
break;
//---------------------------------------------------------------------------------------
case IDM_PP_HIGH:
Priority_Flag = PRIORITY_HIGH;
SetPriorityClass(hProcess, HIGH_PRIORITY_CLASS);
CheckMenuItem(hMenu, IDM_PP_HIGH, MF_CHECKED);
CheckMenuItem(hMenu, IDM_PP_NORMAL, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_PP_LOW, MF_UNCHECKED);
break;
case IDM_PP_NORMAL:
Priority_Flag = PRIORITY_NORMAL;
SetPriorityClass(hProcess, NORMAL_PRIORITY_CLASS);
CheckMenuItem(hMenu, IDM_PP_HIGH, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_PP_NORMAL, MF_CHECKED);
CheckMenuItem(hMenu, IDM_PP_LOW, MF_UNCHECKED);
break;
case IDM_PP_LOW:
Priority_Flag = PRIORITY_LOW;
SetPriorityClass(hProcess, IDLE_PRIORITY_CLASS);
CheckMenuItem(hMenu, IDM_PP_HIGH, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_PP_NORMAL, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_PP_LOW, MF_CHECKED);
break;
case IDM_PAUSE:
if (Pause_Flag)
{
ResumeThread(hThread);
CheckMenuItem(hMenu, IDM_PAUSE, MF_UNCHECKED);
}
else
{
SuspendThread(hThread);
CheckMenuItem(hMenu, IDM_PAUSE, MF_CHECKED);
}
Pause_Flag = !Pause_Flag;
break;
case IDM_STATISTICS:
if (Statistics_Flag)
{
DestroyWindow(hDlg);
Statistics_Flag = false;
hDlg = NULL;
}
else
ShowStatistics(1);
break;
case IDM_DISPLAY:
Display_Flag = !Display_Flag;
break;
case IDM_BMP:
SYSTEMTIME st;
GetLocalTime(&st);
sprintf(szTemp, "%sDVD2AVI %02d%02d%02d%02d%02d.bmp", szPath, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond);
BMPFile = fopen(szTemp, "wb");
i = fwrite(BMPHeader, 1, sizeof(BMPHeader), BMPFile);
i += fwrite(rgb24, 1, Coded_Picture_Width * Coded_Picture_Height * 3, BMPFile);
j = i & 3;
while (j>0)
{
i += fwrite(szBlank, 1, 1, BMPFile);
j--;
}
fseek(BMPFile, 2, SEEK_SET);
fwrite(&i, sizeof(int), 1, BMPFile);
fseek(BMPFile, 18, SEEK_SET);
fwrite(&Coded_Picture_Width, sizeof(int), 1, BMPFile);
fwrite(&Coded_Picture_Height, sizeof(int), 1, BMPFile);
fclose(BMPFile);
break;
//----------------------------------------------------------------------------------------
case IDM_SRC_NONE:
SRC_Flag = SRC_NONE;
CheckMenuItem(hMenu, IDM_SRC_NONE, MF_CHECKED);
CheckMenuItem(hMenu, IDM_SRC_LOW, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_MID, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_HIGH, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_UHIGH, MF_UNCHECKED);
break;
case IDM_SRC_LOW:
SRC_Flag = SRC_LOW;
CheckMenuItem(hMenu, IDM_SRC_NONE, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_LOW, MF_CHECKED);
CheckMenuItem(hMenu, IDM_SRC_MID, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_HIGH, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_UHIGH, MF_UNCHECKED);
break;
case IDM_SRC_MID:
SRC_Flag = SRC_MID;
CheckMenuItem(hMenu, IDM_SRC_NONE, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_LOW, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_MID, MF_CHECKED);
CheckMenuItem(hMenu, IDM_SRC_HIGH, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_UHIGH, MF_UNCHECKED);
break;
case IDM_SRC_HIGH:
SRC_Flag = SRC_HIGH;
CheckMenuItem(hMenu, IDM_SRC_NONE, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_LOW, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_MID, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_HIGH, MF_CHECKED);
CheckMenuItem(hMenu, IDM_SRC_UHIGH, MF_UNCHECKED);
break;
case IDM_SRC_UHIGH:
SRC_Flag = SRC_UHIGH;
CheckMenuItem(hMenu, IDM_SRC_NONE, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_LOW, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_MID, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_HIGH, MF_UNCHECKED);
CheckMenuItem(hMenu, IDM_SRC_UHIGH, MF_CHECKED);
break;
//---------------------------------------------------------------------------------------
case IDM_ABOUT:
DialogBox(hInst, (LPCTSTR)IDD_ABOUT, hWnd, (DLGPROC)About);
break;
case IDM_HOMEPAGE:
ShellExecute(NULL, "open", "http://hiroko.ee.ntu.edu.tw/", NULL, NULL, SW_SHOWNORMAL);
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
//----------------------------------------------------------------------------------------
case ID_LEFT_BUTTON:
if (IsWindowEnabled(hTrack))
{
SetFocus(hWnd);
if ((process.file < process.rightfile) || (process.file==process.rightfile && process.lba<process.rightlba))
{
process.leftfile = process.file;
process.leftlba = process.lba;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -