您的位置:首页 > 其它

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

2014-03-06 11:41 316 查看
昨天搭建好了,主界面,今天依然要搭建界面,我想首先将基本的界面搭建好,然后再一步一步实现音乐播放器的功能

昨天搭建好的主界面



今天需要搭建两个界面,一个是退出界面,一个是关于界面,对于这两个界面,我想大家不会陌生,如退出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;


程序运行效果




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: