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

📄 main.c

📁 betaplayer_0.096源码 tcpmp老版本
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * function: Main control program for aacDECdrop * * This program is distributed under the GNU General Public License, version 2. * A copy of this license is included with this source. * * Copyright (C) 2002 John Edwards * * last mod: aacDECdrop decoder last updated 2002-03-14 */#include <windows.h>#include <shellapi.h>#include <string.h>#include <stdio.h>#include <commctrl.h>#include "resource.h"#include "decthread.h"#include "decode.h"#include "misc.h"#define LOSHORT(l)           ((SHORT)(l))#define HISHORT(l)           ((SHORT)(((DWORD)(l) >> 16) & 0xFFFF))#define INI_FILE "aacDECdrop.ini"#define CREATEFONT(sz) \	CreateFont((sz), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \		VARIABLE_PITCH | FF_SWISS, "")   HANDLE event = NULL;int width = 130, height = 130;RECT bar1, bar2, vbrBR;int prog1 = 0, prog2 = 0;int moving = 0;POINT pt;HINSTANCE hinst;int frame = 0;HBITMAP hbm[12], temp;HMENU menu;int decoding_done = 0;int stop_decoding = 0;double file_complete;int totalfiles;int numfiles;HWND g_hwnd;HWND qcwnd;HFONT font2;char *fileName;SettingsAAC     iniSettings;            // iniSettings holds the parameters for the aacDECdrop configurationint animate = 0;LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);BOOL CALLBACK QCProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lParam) ;/* *  Write the .ini file using the current aacDECdrop settings */intWriteIniFile ( const char* Filename ){	FILE* fp;	if ( (fp = fopen (Filename, "w")) == NULL )		return EOF;                             // could not open file	fprintf (fp, "[aacDECdrop]\n");	fprintf (fp, "Window_X=%i\n"          , iniSettings.window_x     );	fprintf (fp, "Window_Y=%i\n"          , iniSettings.window_y     );	fprintf (fp, "Always_on_top=%i\n"     , iniSettings.always_on_top);	fprintf (fp, "Logerr=%i\n"            , iniSettings.logerr       );	fprintf (fp, "DecodeMode=%i\n"        , iniSettings.decode_mode  );	fprintf (fp, "OutputFormat=%i\n"      , iniSettings.outputFormat );	fprintf (fp, "FileType=%i\n"          , iniSettings.fileType     );	fprintf (fp, "ObjectType=%i\n"        , iniSettings.object_type  );	return fclose (fp);}/* * Read the .ini file and set the aacDECdrop settings */intReadIniFile ( FILE* fp ){	char  buff [256];	int   val;	rewind ( fp );	fgets ( buff, sizeof buff, fp );	if ( 0 != memcmp ( buff, "[aacDECdrop]", 12 ) )		return EOF;	while ( fgets ( buff, sizeof buff, fp ) != NULL ) {		if      ( 1 == sscanf ( buff, "Window_X=%d"     , &val ) )  iniSettings.window_x      = val;		else if ( 1 == sscanf ( buff, "Window_Y=%d"     , &val ) )  iniSettings.window_y      = val;		else if ( 1 == sscanf ( buff, "Always_on_top=%d", &val ) )  iniSettings.always_on_top = val;		else if ( 1 == sscanf ( buff, "Logerr=%d"       , &val ) )  iniSettings.logerr        = val;		else if ( 1 == sscanf ( buff, "DecodeMode=%d"   , &val ) )  iniSettings.decode_mode   = val;		else if ( 1 == sscanf ( buff, "OutputFormat=%d" , &val ) )  iniSettings.outputFormat  = val;		else if ( 1 == sscanf ( buff, "FileType=%d"     , &val ) )  iniSettings.fileType      = val;		else if ( 1 == sscanf ( buff, "ObjectType=%d"   , &val ) )  iniSettings.object_type   = val;	}	return 0;}/* * Get aacDECdrop settings at startup, writes .ini file, if not present */voidGetAACdecSettings ( void ){	FILE*  fp = NULL;	char   PathAndName [] = {INI_FILE};	// set default values	iniSettings.window_x      =   64;        // default box position (x co-ord)	iniSettings.window_y      =   64;        // default box position (y co-ord)	iniSettings.always_on_top =    8;        // default = on	iniSettings.logerr        =    0;        // default = off	iniSettings.decode_mode   =    1;        // default = 1 (decode to file)	iniSettings.outputFormat  =    1;        // default = 1 (16 bit PCM)	iniSettings.fileType      =    1;        // default = 1 (Microsoft WAV)	iniSettings.object_type   =    1;        // default = 1 (Low Complexity)	// Read INI_FILE	if ( (fp = fopen (PathAndName, "r")) == NULL ) {    // file does not exist: write it!		WriteIniFile ( PathAndName );	}	else {                                              // file does exist: read it!		ReadIniFile (fp);		fclose (fp);	}	return;}void set_always_on_top(HWND hwnd, int v){	CheckMenuItem(menu, IDM_ONTOP, v ? MF_CHECKED : MF_UNCHECKED);	SetWindowPos(hwnd, v ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_SHOWWINDOW | SWP_NOMOVE);	iniSettings.always_on_top = v;}void set_logerr(HWND hwnd, int v){	CheckMenuItem(menu, IDM_LOGERR, v ? MF_CHECKED : MF_UNCHECKED);	iniSettings.logerr = v;	set_use_dialogs(v);}void set_decode_mode(int v){	decthread_set_decode_mode(v);	iniSettings.decode_mode = v;}void set_outputFormat(int v){	decthread_set_outputFormat(v);	iniSettings.outputFormat = v;}void set_fileType(int v){	decthread_set_fileType(v);	iniSettings.fileType = v;}void set_object_type(int v){	decthread_set_object_type(v);	iniSettings.object_type = v;}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){	static char szAppName[] = "aacDECdrop";	HWND hwnd;	MSG msg;	WNDCLASS wndclass;	const int width = 130;	const int height = 130;	int x;	int y;	hinst = hInstance;	wndclass.style = CS_HREDRAW | CS_VREDRAW;	wndclass.lpfnWndProc = WndProc;	wndclass.cbClsExtra = 0;	wndclass.cbWndExtra = 0;	wndclass.hInstance = hInstance;	wndclass.hIcon = LoadIcon(hinst, MAKEINTRESOURCE(IDI_ICON1));	wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);	wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);	wndclass.lpszMenuName = NULL;	wndclass.lpszClassName = szAppName;	RegisterClass(&wndclass);	GetAACdecSettings();	x = max(min(iniSettings.window_x, GetSystemMetrics(SM_CXSCREEN) - width), 0);	y = max(min(iniSettings.window_y, GetSystemMetrics(SM_CYSCREEN) - height), 0);	hwnd = CreateWindow(szAppName, "aacDECdrop", WS_POPUP | WS_DLGFRAME, x, y,	width, height, NULL, NULL, hInstance, NULL);	g_hwnd = hwnd;	ShowWindow(hwnd, iCmdShow);	UpdateWindow(hwnd);	font2 = CREATEFONT(10);	SetTimer(hwnd, 1, 80, NULL);	set_always_on_top(hwnd, iniSettings.always_on_top);	set_logerr(hwnd, iniSettings.logerr);	set_decode_mode(iniSettings.decode_mode);	set_outputFormat(iniSettings.outputFormat);	set_fileType(iniSettings.fileType);	set_object_type(iniSettings.object_type);		for (frame = 0; frame < 8; frame++)		hbm[frame] = LoadImage(hinst, MAKEINTRESOURCE(IDB_TF01 + frame), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION);	frame = 0;	while (GetMessage(&msg, NULL, 0, 0))	{		TranslateMessage(&msg);		DispatchMessage(&msg);	}	for (frame = 0; frame < 8; frame++) 		DeleteObject(hbm[frame]);	return msg.wParam;}void HandleDrag(HWND hwnd, HDROP hDrop){	int cFiles, i;	char szFile[MAX_PATH];	char *ext;	int flag = 0;	cFiles = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0);	for (i = 0; i < cFiles; i++)	{		DragQueryFile(hDrop, i, szFile, sizeof(szFile));		if (ext = strrchr(szFile, '.'))		{			if (stricmp(ext, ".aac") == 0 || stricmp(ext, ".mp4") == 0 ||                stricmp(ext, ".m4a") == 0 || stricmp(ext, ".m4p") == 0)			{				flag = 1;				decthread_addfile(szFile);				stop_decoding = 0;			}		}	}	DragFinish(hDrop);	if (flag)		SetEvent(event);}LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){	HDC hdc, hmem;	static HDC offscreen;	PAINTSTRUCT ps;	RECT rect, rect2;	BITMAP bm;	POINT point;	static POINT start;	static int dragging = 0;	HDC desktop;	HBITMAP hbitmap;	HANDLE hdrop;	HFONT dfltFont;	int dfltBGMode;	double percomp;	switch (message)	{		case WM_CREATE:			menu = LoadMenu(hinst, MAKEINTRESOURCE(IDR_MENU1));			menu = GetSubMenu(menu, 0);			offscreen = CreateCompatibleDC(NULL);			desktop = GetDC(GetDesktopWindow());			hbitmap = CreateCompatibleBitmap(desktop, 200, 200);			ReleaseDC(GetDesktopWindow(), desktop);			SelectObject(offscreen, hbitmap);			// Start the engines			decthread_init();			// We accept drag&drop			DragAcceptFiles(hwnd, TRUE);			return 0;		case WM_PAINT:			hdc = BeginPaint(hwnd, &ps);			GetClientRect(hwnd, &rect);			width = rect.right + 1;			height = rect.bottom + 1;			FillRect(offscreen, &rect, (HBRUSH)GetStockObject(WHITE_BRUSH));			DrawText(offscreen, "Drop Files Here", -1, &rect, DT_SINGLELINE | DT_CENTER);			SetRect(&rect2, 0, height - 110, width, height - 25);			DrawText(offscreen, "For Decoding", -1, &rect2, DT_SINGLELINE | DT_CENTER);			hmem = CreateCompatibleDC(offscreen);			SelectObject(hmem, hbm[frame]);			GetObject(hbm[frame], sizeof(BITMAP), &bm);			BitBlt(offscreen, width / 2 - 33, height / 2 - 31, bm.bmWidth, bm.bmHeight, hmem, 0, 0, SRCCOPY);			DeleteDC(hmem);			percomp = ((double)(totalfiles - numfiles) + 1 - (1 - file_complete)) / (double)totalfiles;			SetRect(&vbrBR, 0, height - 35, width, height - 19);			dfltBGMode = SetBkMode(offscreen, TRANSPARENT);			dfltFont = SelectObject(offscreen, font2);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -