桌面通知系统示例
此示例展示如何使用 M8 桌面通知系统自由灵活的向系统发出通知消息,使M8收到这些通知消息的时候以弹出提示框、震动、响铃等方式或组合通知使用者。
设置通知消息的内容,然后发出通知消息
// 设置响铃并震动的通知消息 MZ_USER_NOTIFICATION notifyInfo = {0}; notifyInfo.ActionFlags = MUN_SOUND | MUN_VIBRATE; wsprintf(notifyInfo.szSound, L"\\Windows\\RingTone\\信息_精灵.lnk"); notifyInfo.dwPlaySoundPeriod = 0; // 0 表示播放完这首音乐 notifyInfo.dwVibratePeriod = 0; // 0 表示随音乐的长度震动 hr = MzSetUserNotification(hr, ¬ifyInfo);
在程序退出时,清除通知消息
virtual int Done() { if (m_MainWnd.hr) { MzClearUserNotification(m_MainWnd.hr); } return CMzApp::Done(); }
完整示例:
/************************************************************************/ /* * Copyright (C) Meizu Technology Corporation Zhuhai China * All rights reserved. * 中国珠海, 魅族科技有限公司, 版权所有. * * This file is a part of the Meizu Foundation Classes library. * Author: * Create on: 2009-12-23 */ /************************************************************************/ //请按照以步骤运行此实例代码: //首先, 打开VS2005/2008创建一个Win 32智能设备项目 //在项目向导中选择M8SDK, 并勾选空项目 //然后,在项目中新建一个cpp文件,将此处代码拷贝到cpp文件中 //最后,按照M8SDK的帮助文档,配置项目属性 //现在,可以运行此程序了 // 包含MZFC库的头文件 #include <mzfc_inc.h> #include <ShellNotifyMsg.h> //此代码演示了: // 如何开发 M8 桌面通知系统 #define MZ_IDC_TESTTOOLBAR 101 #define MZ_IDC_TESTBTN1 102 #define MZ_IDC_TESTBTN2 103 #define MZ_IDC_TESTBTN3 104 // 从 CMzWndEx 派生的窗口类 class CSampleMainWnd : public CMzWndEx { MZ_DECLARE_DYNAMIC(CSampleMainWnd); public: UiToolBarPro m_ToolBarPro; UiButton m_SoundBtn; UiButton m_VibrateBtn; UiButton m_Sound_VibrateBtn; HANDLE hr; protected: // 窗口初始化 virtual BOOL OnInitDialog() { // 必须先调用基类的初始化 if (!CMzWndEx::OnInitDialog()) { return FALSE; } hr = NULL; // 初始化 UiButton 控件 m_SoundBtn.SetButtonType(MZC_BUTTON_GREEN); m_SoundBtn.SetID(MZ_IDC_TESTBTN1); m_SoundBtn.SetPos(100, 100, 280, 100); m_SoundBtn.SetText(L"响铃"); AddUiWin(&m_SoundBtn); m_VibrateBtn.SetButtonType(MZC_BUTTON_GREEN); m_VibrateBtn.SetID(MZ_IDC_TESTBTN2); m_VibrateBtn.SetPos(100, 250, 280, 100); m_VibrateBtn.SetText(L"震动"); AddUiWin(&m_VibrateBtn); m_Sound_VibrateBtn.SetButtonType(MZC_BUTTON_GREEN); m_Sound_VibrateBtn.SetID(MZ_IDC_TESTBTN3); m_Sound_VibrateBtn.SetPos(100, 400, 280, 100); m_Sound_VibrateBtn.SetText(L"响铃 & 震动"); AddUiWin(&m_Sound_VibrateBtn); // 初始化 UiToolBarPro 控件 m_ToolBarPro.SetID(MZ_IDC_TESTTOOLBAR); m_ToolBarPro.SetPos(0, GetHeight() - MZM_HEIGHT_TOOLBARPRO, GetWidth(), MZM_HEIGHT_TOOLBARPRO); m_ToolBarPro.SetButton(TOOLBARPRO_LEFT_TEXTBUTTON, true, true, L"退出"); AddUiWin(&m_ToolBarPro); return TRUE; } virtual void OnMzCommand(WPARAM wParam, LPARAM lParam) { UINT_PTR id = LOWORD(wParam); switch(id) { case MZ_IDC_TESTTOOLBAR: { int index = lParam; if (index == TOOLBARPRO_LEFT_TEXTBUTTON) { PostQuitMessage(0); } break; } case MZ_IDC_TESTBTN1: { // 设置响铃的通知消息 MZ_USER_NOTIFICATION notifyInfo = {0}; notifyInfo.ActionFlags = MUN_SOUND; wsprintf(notifyInfo.szSound, L"\\Windows\\RingTone\\信息_精灵.lnk"); notifyInfo.dwPlaySoundPeriod = 0; hr = MzSetUserNotification(hr, ¬ifyInfo); break; } case MZ_IDC_TESTBTN2: { // 设置震动的通知消息 MZ_USER_NOTIFICATION notifyInfo = {0}; notifyInfo.ActionFlags = MUN_VIBRATE; notifyInfo.dwVibratePeriod = 10; // 震动10秒 hr = MzSetUserNotification(hr, ¬ifyInfo); break; } case MZ_IDC_TESTBTN3: { // 设置响铃并震动的通知消息 MZ_USER_NOTIFICATION notifyInfo = {0}; notifyInfo.ActionFlags = MUN_SOUND | MUN_VIBRATE; wsprintf(notifyInfo.szSound, L"\\Windows\\RingTone\\信息_精灵.lnk"); notifyInfo.dwPlaySoundPeriod = 0; // 0 表示播放完这首音乐 notifyInfo.dwVibratePeriod = 0; // 0 表示随音乐的长度震动 hr = MzSetUserNotification(hr, ¬ifyInfo); break; } } } }; MZ_IMPLEMENT_DYNAMIC(CSampleMainWnd); // 从 CMzApp 派生的应用程序类 class CSampleMainApp : public CMzApp { public: CSampleMainWnd m_MainWnd; // 初始化应用程序 virtual BOOL Init() { // 初始化 COM 组件 CoInitializeEx(0, COINIT_MULTITHREADED); // 创建窗口 RECT rcWork = MzGetWorkArea(); m_MainWnd.Create(rcWork.left, rcWork.top, RECT_WIDTH(rcWork), RECT_HEIGHT(rcWork), 0, 0, 0); m_MainWnd.SetBgColor(MzGetThemeColor(TCI_WINDOW_BG)); m_MainWnd.Show(); return TRUE; } virtual int Done() { if (m_MainWnd.hr) { MzClearUserNotification(m_MainWnd.hr); } return CMzApp::Done(); } }; // 全局应用程序变量 CSampleMainApp theApp;
源码安装在以下目录(假设你将M8SDK安装在盘符C:\):