UserNotificationTest 示例

桌面通知系统示例

此示例展示如何使用 M8 桌面通知系统自由灵活的向系统发出通知消息,使M8收到这些通知消息的时候以弹出提示框、震动、响铃等方式或组合通知使用者。

UserNotificationTest_01.png

设置通知消息的内容,然后发出通知消息

// 设置响铃并震动的通知消息
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, &notifyInfo);

在程序退出时,清除通知消息

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, &notifyInfo);
                break;
            }
        case MZ_IDC_TESTBTN2:
            {
                // 设置震动的通知消息
                MZ_USER_NOTIFICATION notifyInfo = {0};
                notifyInfo.ActionFlags = MUN_VIBRATE;
                notifyInfo.dwVibratePeriod = 10; // 震动10秒
                hr = MzSetUserNotification(hr, &notifyInfo);
                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, &notifyInfo);
                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:\):


Generated at Tue Feb 9 15:09:56 2010 for Meizu M8 SDK Documentation by  doxygen 1.6.1