昨天搭建好了,主界面,今天依然要搭建界面,我想首先将基本的界面搭建好,然后再一步一步实现音乐播放器的功能昨天搭建好的主界面今天需要搭建两个界面,一个是退出界面,一个是关于界面,对于这两个界面,我想大家不会陌生,如退出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; //父窗口的ID nid.uID = IDD_MAIN; //起作用的成员: hIcon uCallbackMessage szTip nid.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;程序运行效果下载本文