一个可以运动的音乐贺卡
来源:互联网 发布:淘宝买家秀赚钱 编辑:程序博客网 时间:2024/04/30 15:20
我在前两篇博客中介绍了如何制作音乐贺卡,分别用了嵌入式和链接式实现播放音乐,在此就不做介绍,想了解相关信息,请参考我前面写的关于音乐贺卡的博客
在看这篇博客时,需要将位图,图标,音乐文件都插入到了音乐贺卡中,插入后的界面
完成了上面的工作后,就是写代码
在写代码前先介绍几个函数
函数名:TimerProc
函数功能:回调函数
函数原型: VOID CALLBACK TimerProc (HWND hwnd, UINT message, UINT iTimerID, DWORD dwTime)
参数:
hwnd 程序的句柄
message: Windows信息
iTimerID:定时器的ID
dwTime:表示多长时间调用一次回调函数
参考文章:TimerProc函数
函数名: GetWindowDC
函数功能:获得设备环境句柄
函数原型:
HDC GetWindowDC(
_In_ HWND hWnd
);
参数: hWnd 窗口句柄
返回值: HDC 设备环境句柄
参考文章:GetWindowDC函数
函数名:GetDeviceCaps
函数功能: 获得设备的参数
函数原型:
int GetDeviceCaps(
_In_ HDC hdc,
_In_ int nIndex
);
参数: hdc 设备的环境句柄 nindex 设备的项目
参考文章:GetDeviceCaps函数
函数名:ReleaseDC
函数功能:释放设备的环境句柄
函数原型:
int ReleaseDC(
_In_ HWND hWnd,
_In_ HDC hDC
);
参数:
hWnd: 窗口句柄
hDC : 设备环境句柄
参考文章:ReleaseDC函数
函数名:MoveWindow
函数功能:移动窗口
函数原型:
BOOL WINAPI MoveWindow(
_In_ HWND hWnd,
_In_ int X,
_In_ int Y,
_In_ int nWidth,
_In_ int nHeight,
_In_ BOOL bRepaint
);
参数:
x : 窗口的位置(x坐标)
y: 窗口的位置(y坐标)
nWidth : 窗口的宽度
nHeight:窗口的高度
bRepaint:是否要重画
参考文章:MoveWindow函数
函数名:SetTimer
函数功能:定义一个定时器
函数原型:
UINT_PTR WINAPI SetTimer(
_In_opt_ HWND hWnd,
_In_ UINT_PTR nIDEvent,
_In_ UINT uElapse,
_In_opt_ TIMERPROC lpTimerFunc
);
参数:
hWnd:窗口的句柄
nIDEVENT:定时器的ID
uElapse:多久调用一次回调函数
lpTimerFunC :回调函数
参考文章:SetTimer函数
程序代码:
#include "stdafx.h"#include <windows.h>#include <windowsx.h>#include <mmsystem.h>#include "resource.h"#include "MainDlg.h"BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){ switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); } return FALSE;}int size_1 = -1;int size_2 = -1;int X = 0;int Y = 0;//改变贺卡左右运动的运动方向void FuncChange_X(){size_1 = -size_1;}//改变贺卡上下运动的运动方向void FuncChange_Y(){size_2 = -size_2;}//回调函数void CALLBACK TimerProc(HWND hwnd , UINT message, UINT iTimerID, DWORD dwTime){//得到设备环境句柄HDC hdc = GetWindowDC(hwnd);//得到贺卡的宽度int Wide = GetDeviceCaps(hdc,HORZRES);//得到贺卡的高度int High = GetDeviceCaps(hdc,VERTRES);//当贺卡移动到左边界或者右边界时if((0 == X) || (Wide-550==X)){FuncChange_X();//改变贺卡的移动方向}//当贺卡移动到上边界或者下边界时if((0 == Y) || (High-430== Y)){FuncChange_Y();//改变贺卡的移动方向}//移动贺卡MoveWindow(hwnd,X+size_1,Y+size_2,550,400,TRUE);X += size_1;Y += size_2;}BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam){/*在窗口的标题栏上显示图标*/SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1))); //得到程序的实例句柄HINSTANCE hinstance=(HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE); //播放音乐PlaySound(MAKEINTRESOURCE(IDR_WAVE1),hinstance,SND_RESOURCE|SND_ASYNC); //定时器SetTimer(hwnd,0,0.1,TimerProc); return TRUE;}void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify){ switch(id) { case IDC_OK:{} break; default:break; }}void Main_OnClose(HWND hwnd){ EndDialog(hwnd, 0);}
运行结果:
点击下载生日贺卡
- 一个可以运动的音乐贺卡
- 一个简单的音乐贺卡
- 一个改进了的音乐贺卡
- Postcard:简单的音乐贺卡制作
- jsp制作的一个动态的贺卡
- Phonotonic音乐设备:将你的运动变成音乐
- Unity 音乐可视化(音乐频谱控制物体的运动)
- 很有意思的贺卡
- 贺卡
- 人类的运动也可以产生电力
- 可以在体内运动的小机器人
- 发现一个有趣的小程序,可以控制系统声音播放音乐
- 一个运动控制系统的实例
- GF送的贺卡:)
- 收到cc dd的贺卡
- C写的生日贺卡
- 酱酱的生日贺卡
- 制作自己的圣诞贺卡
- Phpcms2007目录结构
- cmake在linux,windows,mac下的安装与使用
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
- 链表反转
- tomcat启动 外网访问
- 一个可以运动的音乐贺卡
- 如何用建站系统架设网站
- Spring学习笔记1——基础知识
- 北风网IOS软件工程师课程分享
- 抽象类与接口的区别
- 设备驱动模型第2节:platform_driver_register
- uml概述
- 2012蓝桥杯【初赛试题】罗马数字
- junit的使用