自己动手开发音乐播放器(二)附加界面的搭建

来源:互联网 发布:代申请淘宝大v 编辑:程序博客网 时间:2024/05/16 15:53

昨天搭建好了,主界面,今天依然要搭建界面,我想首先将基本的界面搭建好,然后再一步一步实现音乐播放器的功能

昨天搭建好的主界面


今天需要搭建两个界面,一个是退出界面,一个是关于界面,对于这两个界面,我想大家不会陌生,如退出QQ时,就会出现一个退出界面,提示是退出还是最小化托盘,关于界面是显示音乐播放器的信息,言归正传

首先打开昨天搭建好的主界面


选择Dialog文件夹,并且单击鼠标右键


选择插入Dialog


插入Dialog后的界面


修改对话框的名字和ID

将鼠标移到对话框上并且单击鼠标右键


选择属性


将ID改为IDD_ABOUT  标题改为 关于


修改后的效果


搭建好后就开始写代码

选择文件-----新建-----C++ Source file 输入 AboutDlg 单击确定

在AboutDlg.cpp中添加下面代码

#include "stdafx.h"#include <windows.h>#include <windowsx.h>#include "resource.h"#include "MainDlg.h"#include "AboutDlg.h"BOOL WINAPI About_Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){    switch(uMsg)    {        HANDLE_MSG(hWnd, WM_INITDIALOG, About_Main_OnInitDialog);        HANDLE_MSG(hWnd, WM_COMMAND, About_Main_OnCommand);HANDLE_MSG(hWnd,WM_CLOSE, About_Main_OnClose);    }    return FALSE;}BOOL About_Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam){    return TRUE;}void About_Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify){    switch(id)    {        case IDOK:{EndDialog(hwnd, 0);}        break;        default:break;    }}void About_Main_OnClose(HWND hwnd){    EndDialog(hwnd, 0);}

再用上面的方法建立一个头文件文件名为AboutDlg,并在文件中添加下面的代码

#ifndef _About_MAIN_H#define _About_MAIN_H#include <windows.h>BOOL WINAPI About_Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);BOOL About_Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);void About_Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);void About_Main_OnClose(HWND hwnd);#endif

并且在MainDlg.CPP文件中

的void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)函数中添加下面代

//关于case ID_MENUITEM40016:{/*得到窗口的实例句柄*/        HINSTANCE hInstance = (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE);       /*弹出对话框*/       DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_ABOUT), NULL,About_Main_Proc, NULL);}break;


修改关于对话框,将对话框修改成下图所示的界面



测试代码,执行程序



退出界面,退出界面和关于界面的原理一样,也是添加对话框新建两个文件一个是ExitDlg.CPP 还有一个是ExitDlg.h

在ExitDlg.cpp中添加下面代码

#include "stdafx.h"#include <windows.h>#include <windowsx.h>#include "shellapi.h"//取用托盘头文件#include "resource.h"#include "MainDlg.h"#include "ExitDlg.h"//处理托盘消息void ToTray(HWND hwnd,int flag){//得到父窗口的句柄HWND hwnd1 = FindWindow(NULL,TEXT("音乐播放器"));//传递托盘结构NOTIFYICONDATA nid;//结构体清零ZeroMemory(&nid, sizeof(NOTIFYICONDATA));//托盘结构的大小nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);//父窗口的句柄nid.hWnd = hwnd1;//父窗口的IDnid.uID = IDD_MAIN;//起作用的成员: hIcon uCallbackMessage szTipnid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;//在托盘中显示音乐播放器的名字wsprintf(nid.szTip ,"%s",TEXT("音乐播放器"));//程序自定义的消息标示符nid.uCallbackMessage = WM_SHOWTASK;/*增加、修改或删除图标句柄*/nid.hIcon = LoadIcon( (HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), MAKEINTRESOURCE(IDI_ICON1));switch(flag){//音乐播放器最小化托盘     case 1:{//关闭退出对话框EndDialog(hwnd,0);//隐藏窗口ShowWindow(hwnd1,SW_HIDE);}break;//还原音乐播放器 case 2:{//显示窗口ShowWindow(hwnd1,SW_SHOW);}break;//退出音乐播放器 case 3:{Main_OnClose(hwnd1);} break; //在托盘上显示图标 case 4:{Shell_NotifyIcon(NIM_ADD,&nid);}break;//删除托盘图标 case 5:{Shell_NotifyIcon(NIM_DELETE,&nid);}break;default:break;}}//关闭音乐播放器void Exit_Main_OnClose1(HWND hwnd){//删除托盘图标ToTray(hwnd,5);//关闭音乐播放器exit(0);}BOOL WINAPI Exit_Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){    switch(uMsg)    {        HANDLE_MSG(hWnd, WM_INITDIALOG, Exit_Main_OnInitDialog);        HANDLE_MSG(hWnd, WM_COMMAND, Exit_Main_OnCommand);HANDLE_MSG(hWnd,WM_CLOSE, Exit_Main_OnClose);    }    return FALSE;}BOOL Exit_Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam){    return TRUE;}void Exit_Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify){    switch(id)    {//最小化托盘     case IDYES:{ToTray(hwnd,1);}        break;    //关闭音乐播放器         case IDNO:{Exit_Main_OnClose1(hwnd);}    break;        default:break;    }}void Exit_Main_OnClose(HWND hwnd){    EndDialog(hwnd, 0);}


在ExitDlg.h中添加下面的代码

#ifndef _Exit_MAIN_H#define _Exit_MAIN_H#include <windows.h>BOOL WINAPI Exit_Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);BOOL Exit_Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);void Exit_Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);void Exit_Main_OnClose(HWND hwnd);//处理托盘消息void ToTray(HWND hwnd,int flag);#define WM_SHOWTASK (WM_USER + 100)/*自定义消息,用于托盘图标响应鼠标消息*///关闭音乐播放器void Exit_Main_OnClose1(HWND hwnd);#endif


在MainDlg.CPP中的void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)函数中

//退出音乐播放器        case ID_MENUITEMEXIT:{Exit_Main_OnClose1(hwnd);}break;


程序运行效果




0 0
原创粉丝点击