⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gui.cpp

📁 DVD转换到AVI的源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
				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 + -