昨天搭建好了,主界面,今天依然要搭建界面,我想首先将基本的界面搭建好,然后再一步一步实现音乐播放器的功能
昨天搭建好的主界面
今天需要搭建两个界面,一个是退出界面,一个是关于界面,对于这两个界面,我想大家不会陌生,如退出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;
程序运行效果
自己动手开发音乐播放器(二)附加界面的搭建,布布扣,bubuko.com
原文:http://blog.csdn.net/u010105970/article/details/20609615