打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MFC 播放MP3
工程中添加 Winmm.lib stdafx.h 里面添加包含 Mmsystem.h
使用mciSendCommand函数播放MP3
#include <windows.h>
#include "resource.h"
#pragma comment(lib, "winmm")
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM ,LPARAM );
int MP3Player(HWND,int fnNum);
HINSTANCE Hinstance;
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
WNDCLASS wndclass;
HWND hwnd;
MSG msg;
WCHAR *title=L"快乐の小②B制作";
WCHAR *MP3=L"MP3 Player";
Hinstance=hInstance;
wndclass.cbClsExtra=NULL;
wndclass.cbWndExtra=NULL;
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon =LoadIcon(NULL,IDI_APPLICATION);
wndclass.hInstance=hInstance;
wndclass.lpfnWndProc=WndProc;
wndclass.lpszClassName=MP3;
wndclass.lpszMenuName=0;
wndclass.style=CS_HREDRAW |CS_VREDRAW;
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,L"注册窗口失败!",L"Error Info",MB_OK);
return 0;
}
hwnd=CreateWindowEx(WS_EX_LAYERED,MP3,title,WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU| WS_MINIMIZEBOX
,CW_USEDEFAULT,CW_USEDEFAULT,310,410,NULL,NULL,hInstance,NULL);
AnimateWindow(hwnd,1000,AW_BLEND|AW_SLIDE);//窗口效果函数
//UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc,hdcmem;
HBITMAP hBitmap;
BITMAP Bitmap;
static HWND ChildHwnd_1=0;
static HWND ChildHwnd_2=0;
if(message == WM_PRINT || message == WM_PRINTCLIENT)
{
hdc=(HDC)wParam;
hBitmap=LoadBitmap(Hinstance,MAKEINTRESOURCE(IDB_BITMAP1));
GetObject(hBitmap,sizeof(BITMAP),&Bitmap);
hdcmem=CreateCompatibleDC(hdc);
SelectObject(hdcmem,hBitmap);
BitBlt(hdc,0,0,Bitmap.bmWidth,Bitmap.bmHeight,hdcmem,0,0,SRCCOPY);
DeleteDC(hdcmem);
}
switch(message)
{
case WM_CREATE:
ChildHwnd_1=CreateWindowEx(WS_EX_LAYERED,L"Button",L"Play",WS_VISIBLE|WS_CHILD,50,330,70,30,hwnd,(HMENU)1,0,NULL);
ChildHwnd_2=CreateWindowEx(WS_EX_LAYERED,L"Button",L"Stop",WS_VISIBLE|WS_CHILD,190,330,70,30,hwnd,(HMENU)2,0,NULL);
return 0;
case WM_CLOSE:
DestroyWindow(hwnd);
PostQuitMessage(0);
return 0;
case WM_COMMAND:
switch(wParam)
{
case 1:
MP3Player(hwnd,1);
break;
case 2:
MP3Player(hwnd,2);
break;
}
return 0;
case WM_PAINT:
hBitmap=LoadBitmap(Hinstance,MAKEINTRESOURCE(IDB_BITMAP1));
GetObject(hBitmap,sizeof(BITMAP),&Bitmap);
hdc=GetDC(hwnd);
hdcmem=CreateCompatibleDC(hdc);
SelectObject(hdcmem,hBitmap);
BitBlt(hdc,0,0,Bitmap.bmWidth,Bitmap.bmHeight,hdcmem,0,0,SRCCOPY);
DeleteDC(hdcmem);
BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps);
return 0 ;
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
int MP3Player(HWND hwnd,int fnNum)
{
switch(fnNum)
{
case 1://播放
static MCI_OPEN_PARMS open;
static MCI_PLAY_PARMS play;
static MCIDEVICEID MP3ID;
open.dwCallback=0;
open.lpstrAlias=NULL;
open.lpstrDeviceType=L"MPEG";                   //MP3设备
open.lpstrElementName=L"该死的温柔.mp3";        //要播放的文件
open.wDeviceID=0;
mciSendCommand(0,MCI_OPEN,MCI_WAIT| MCI_OPEN_ELEMENT,(DWORD)(LPMCI_OPEN_PARMS)&open);
//初始化
MP3ID=open.wDeviceID;
play.dwCallback=(DWORD)hwnd;                    //播放程序的窗口句柄
play.dwFrom=0;
play.dwTo=0;
mciSendCommand(MP3ID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPMCI_OPEN_PARMS)&play);
return 0;
case 2://停止
MCI_GENERIC_PARMS close;
close.dwCallback=(DWORD)hwnd;
mciSendCommand(MP3ID,MCI_CLOSE,MCI_NOTIFY,(DWORD) (LPMCI_GENERIC_PARMS)&close);
return 0;
}
return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
见招拆招《Windows程序设计》(十二) 第二部分
将屏幕保存为图片 将当前MFC程序保存为图片
编写一个程序,在屏幕上出现一个圆心沿正弦曲线轨迹移动的实心圆,且每隔四分之一周期,圆的填充色和圆的周边颜色都发生变化,同时圆的半径在四分之一周期之内由正弦曲线幅值的0.2倍至0.6倍线性增长。
孙鑫VC视频教程笔记之第一课“Windows程序的内部运行原理”
windows编程——背景图片和透明特效的使用2
Windows 程序内部运行机制
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服