// DXPlayer.cpp : Defines the entry point for the application.
#include "resource.h"
#include <windows.h>
#include <TCHAR.H>
#include <Commdlg.h>
#include <commctrl.h>
#include <time.h>
#include <ShlObj.h>
// Download by http://www.codefans.net
#pragma warning(disable: 4786)
#include <string>
#include <vector>
using namespace std;
#include "DXGraph.h"
#include "DXPlayer.h"
#ifndef DEBUG
#pragma comment(linker, "/OPT:nowin98")
#pragma comment(linker, "/SECTION:MiniPE,")//创建自定义的 MiniPE Section
#pragma comment(linker, "/MERGE:.data=MiniPE")//合并.data Section 到 MiniPE Section
#pragma comment(linker, "/MERGE:.text=MiniPE")//合并.text Section 到 MiniPE Section
#pragma comment(linker, "/MERGE:.rdata=MiniPE")//合并.rdata Section 到 MiniPE Section
#endif
//int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
InitCommonControls();
g_hInstance = hInstance;
static TCHAR szAppName[] = TEXT ("Media Player Classic");
WNDCLASSEX wndclassex = {0};
wndclassex.cbSize = sizeof(WNDCLASSEX);
wndclassex.style = 0;//CS_HREDRAW | CS_VREDRAW;
wndclassex.lpfnWndProc = WndProc;
wndclassex.cbClsExtra = 0;
wndclassex.cbWndExtra = 0;
wndclassex.hInstance = g_hInstance;
wndclassex.hIcon = LoadIcon (NULL, (LPCTSTR)IDI_ICON1);
wndclassex.hCursor = LoadCursor (NULL, IDC_HAND);
wndclassex.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
wndclassex.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
wndclassex.lpszClassName = szAppName;
wndclassex.hIconSm = LoadIcon(wndclassex.hInstance, (LPCTSTR)IDI_ICON1);
RegisterClassEx(&wndclassex);
GetModuleFileName(NULL, g_AppPath, MAX_PATH);
GetModuleFileName(NULL, g_IclPath, MAX_PATH);
SplitFileName(g_AppPath, 0, g_IclPath);
swprintf(g_IclPath, TEXT("%sDxPlayerICL.dll"), g_IclPath);
//MessageBox(0, g_IclPath, g_IclPath,0);
g_hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW | WS_EX_ACCEPTFILES,
szAppName, szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
345, 300,
NULL, NULL, hInstance, NULL);
CenterWindow(g_hWnd);
g_hMenu = GetMenu(g_hWnd);
ShowWindow(g_hWnd, iCmdShow);
UpdateWindow(g_hWnd);
EnableMenu(IDM_FILE_CLOSE, FALSE);
EnableMenu(IDM_FILE_SHOT, FALSE);
EnableMenu(IDM_PLAY_PAUSE, FALSE);
EnableMenu(IDM_STOP, FALSE);
EnableMenu(IDM_NEXTFRAME, FALSE);
EnableMenu(IDM_DECREASERATE, FALSE);
EnableMenu(IDM_INCREASERATE, FALSE);
EnableMenu(IDM_RESETRATE, FALSE);
EnableMenu(IDM_SCREEN_DEFAULT, FALSE);
EnableMenu(IDM_SCREEN_STRETCH, FALSE);
EnableMenu(IDM_SCREEN_4_3, FALSE);
EnableMenu(IDM_SCREEN_5_4, FALSE);
EnableMenu(IDM_SCREEN_16_9, FALSE);
EnableMenu(IDM_SIZE_50, FALSE);
EnableMenu(IDM_SIZE_75, FALSE);
EnableMenu(IDM_SIZE_100, FALSE);
EnableMenu(IDM_SIZE_150, FALSE);
EnableMenu(IDM_SIZE_200, FALSE);
g_TopMode = 0;
g_hCursor = LoadCursor(NULL, IDC_HAND);
HACCEL hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDR_ACCELERATOR1);
RegisterHotKey(g_hWnd, 1000, MOD_ALT,'Z');
;//MessageBox(g_hWnd, L"注册热键失败!", L"Alt + Z", 0);
if(strlen(szCmdLine))
{
WCHAR wszCmd[300] = {0};
int nLen = MultiByteToWideChar(CP_ACP, 0, szCmdLine, -1, NULL, NULL);
MultiByteToWideChar(CP_ACP, 0, szCmdLine, -1, wszCmd, nLen);
CreatePlayList(wszCmd);
PlayFile(wszCmd);
if(!g_DXGraph.IsHaveVideo()){
DWORD dwX = GetSystemMetrics(SM_CXSCREEN);
DWORD dwY = GetSystemMetrics(SM_CYSCREEN);
MoveWindow(g_hWnd, (dwX-500)/2, (dwY-300)/2, 500, 300, TRUE);
}
}
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
if(!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
static HDC hdcMem;
static int bmpWidth, bmpHeight;//logo图片尺寸
PAINTSTRUCT ps;
HGDIOBJ hOld;
static int width, height;//主窗口尺寸
static int panelWidth, panelHeight;//控制栏尺寸
static int captionHeight, menuHeight, borderHeight;//菜单栏,标题栏,边框高度
static int iSel1 = IDM_SCREEN_DEFAULT;
static int iSel2 = IDM_TOP1;
TCHAR szFile[MAX_PATH];
switch (message)
{
case WM_DROPFILES:
HDROP hDropInfo;
hDropInfo = (HDROP)wParam;
DragQueryFile( hDropInfo,( UINT )0xFFFFFFFF,( LPTSTR )NULL,( UINT )NULL );
DragQueryFile( hDropInfo, 0, szFile,sizeof(szFile));
//MessageBox(g_hWnd, szFile, TEXT(""), 0);
CreatePlayList(szFile);
PlayFile(szFile);
if(!g_DXGraph.IsHaveVideo()){
DWORD dwX = GetSystemMetrics(SM_CXSCREEN);
DWORD dwY = GetSystemMetrics(SM_CYSCREEN);
MoveWindow(g_hWnd, (dwX-500)/2, (dwY-300)/2, 500, 300, TRUE);
}
DragFinish(hDropInfo);
break;
case WM_CREATE:
HBITMAP hBitmap;
hBitmap = LoadBitmap(g_hInstance, (LPCTSTR)IDB_BITMAP_LOGO) ;
BITMAP bitmap;
GetObject (hBitmap, sizeof(BITMAP), &bitmap) ;
bmpWidth = bitmap.bmWidth ;
bmpHeight = bitmap.bmHeight ;
hdc = BeginPaint(hwnd, &ps);
hdcMem = CreateCompatibleDC(hdc);
hOld = SelectObject(hdcMem, hBitmap);
EndPaint (hwnd, &ps);
DeleteObject(hOld);
captionHeight = GetSystemMetrics(SM_CYCAPTION);
menuHeight = GetSystemMetrics(SM_CYMENUSIZE);
borderHeight = 2 * (GetSystemMetrics(SM_CXEDGE)+GetSystemMetrics(SM_CXSIZEFRAME));
CreatePanel(hwnd);
RECT rect;
GetWindowRect(g_hWndPanel, &rect);
panelWidth = rect.right - rect.left;
panelHeight = rect.bottom - rect.top;
break;
case WM_COMMAND:
WORD wID;
wID = LOWORD(wParam);
switch (wID)
{
case IDM_FILE_OPEN:
OPENFILENAME ofn;
TCHAR szFile[MAX_PATH];
memset(&szFile, 0, MAX_PATH);
memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwnd;
ofn.lpstrFile = szFile;
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFilter = TEXT("媒体文件\0*.3gp;*.mpg;*.mpeg;*.avi;*.rmvb;*.rm;*.ra;*.ram;*.mp3;*.mid;*.wav;*.mov;*.qt;*.wmv;*.wma;*.asf;*.vob;*.dat;*.mkv;*.mka;*.midi;*.ogg;*.omg\0所有文件(*.*)\0*.*\0\0");
ofn.Flags = OFN_HIDEREADONLY | OFN_CREATEPROMPT;
if(!GetOpenFileName(&ofn))
return 0;
CreatePlayList(szFile);
PlayFile(szFile);
if(!g_DXGraph.IsHaveVideo()){
DWORD dwX = GetSystemMetrics(SM_CXSCREEN);
DWORD dwY = GetSystemMetrics(SM_CYSCREEN);
MoveWindow(g_hWnd, (dwX-500)/2, (dwY-300)/2, 500, 300, TRUE);
}
break;
case IDM_FILE_CLOSE:
Close();
break;
case IDM_FILE_SHOT:
Snapshot();
break;
case IDM_FILE_EXIT:
SendMessage(hwnd, WM_CLOSE, 0, 0);
break;
case IDM_FILEASSOCIATION:
DialogBox(g_hInstance, MAKEINTRESOURCE(IDD_DLG_FILEASSOCIATION), hwnd, FileAssociationDlgProc);
break;
case IDM_PLAY_PAUSE:
PlayOrPause();
break;
case IDM_STOP:
Stop();
break;
case IDM_NEXTFRAME:
StepFrame();
break;
case IDM_DECREASERATE:
DecreaseRate();
break;
case IDM_INCREASERATE:
IncreaseRate();
break;
case IDM_RESETRATE:
ResetRate();
break;
case IDM_SCREEN_DEFAULT:
case IDM_SCREEN_STRETCH:
case IDM_SCREEN_4_3:
case IDM_SCREEN_5_4:
case IDM_SCREEN_16_9:
g_DXGraph.SetScreenMode(wID - IDM_SCREEN_DEFAULT);
CheckMenu(iSel1, false);
iSel1 = LOWORD(wParam);
CheckMenu(iSel1);
break;
case IDM_SIZE_50:
SetVideoSize(50);
break;
case IDM_SIZE_75:
SetVideoSize(75);
break;
case IDM_SIZE_100:
SetVideoSize(100);
break;
case IDM_SIZE_150:
SetVideoSize(150);
break;
case IDM_SIZE_200:
SetVideoSize(200);
break;
case IDM_TOP1:
case IDM_TOP2:
case IDM_TOP3:
SetTopMode(wID - IDM_
没有合适的资源?快使用搜索试试~ 我知道了~
类似暴风影音的VC++影音播放器【源代码】
共40个文件
ico:20个
h:4个
cpp:3个
需积分: 8 9 下载量 152 浏览量
2016-06-27
09:01:47
上传
评论 1
收藏 421KB RAR 举报
温馨提示
内容索引:VC/C++源码,多媒体技术,暴风影音,播放器 VC++影音播放器源代码,基于DX技术实现,常规的WAV/MP3/AVI/WMV等格式都能很好的支持。界面酷似早期的暴风影音播放器,那种经典风格的。
资源推荐
资源详情
资源评论
收起资源包目录
22-类似暴风影音的VC++影音播放器源代码.rar (40个子文件)
codefans.net
基于DX实现的播放器
DXplayer
DxPlayerICL
DxPlayerICL.cpp 305B
resource.h 1KB
DxPlayerICL.dsp 4KB
DxPlayerICL.dsw 545B
res
mp4.ICO 18KB
dvd.ICO 18KB
wma.ICO 18KB
avi.ico 18KB
mpg.ICO 18KB
ogm.ICO 18KB
wmv.ico 18KB
list.ICO 18KB
loss.ICO 18KB
Thumbs.db 49KB
mp3.ico 18KB
audio.ICO 18KB
qt.ICO 18KB
cd.ICO 18KB
video.ICO 18KB
ac.ICO 18KB
mkv.ICO 18KB
flash.ICO 18KB
dvda.ICO 18KB
real.ICO 18KB
Script1.rc 4KB
resource.h 3KB
DxPlayerICL.dll 384KB
DXPlayer.dsw 539B
DXPlayer.suo 6KB
DXPlayer.cpp 45KB
DXPlayer.h 5KB
DXGraph.cpp 14KB
res
logo.bmp 21KB
Thumbs.db 11KB
XPStyle.Manifest 538B
toolbar.bmp 1KB
icon1.ico 4KB
Script1.rc 11KB
DXGraph.h 3KB
DXPlayer.dsp 6KB
共 40 条
- 1
资源评论
xiyuan2016
- 粉丝: 117
- 资源: 1262
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功