表格式菜单的示例(26_MzGridMenu)

表格式弹出菜单

此示例展示以下控件的使用方法:

表格式菜单MzGridMenu 使用流程

示例代码展示:

26_MzGridMenu_1.png
26_MzGridMenu_2.png

设置及显示弹出菜单

// 初始化 MzGridMenu 控件
m_GridMenu.AppendMenuItem(MZ_IDC_GRIDMENU_ITEM1, L"Select", m_selImg, m_selImgPrs);
m_GridMenu.AppendMenuItem(MZ_IDC_GRIDMENU_ITEM2, L"DownLoad", m_dImg, m_dImgPrs);
m_GridMenu.AppendMenuItem(MZ_IDC_GRIDMENU_ITEM3, L"Cancel", m_celImg, m_celImgPrs);
m_GridMenu.AppendMenuItem(MZ_IDC_GRIDMENU_ITEM4, L"Search", m_secImg, m_secImgPrs);
else if (index == TOOLBARPRO_RIGHT_TEXTBUTTON)
{
    // 使用对话框方式弹出 GridMenu
    if (m_GridMenu.IsContinue())
    {
        m_GridMenu.EndGridMenu();
    }
    else
    {
        m_GridMenu.TrackGridMenuDialog(m_hWnd, MZM_HEIGHT_TOOLBARPRO);
    }
}

在 OnMzCommand 函数处理 MzGridMenu 控件的命令消息

// 处理 GridMenu 的命令消息
case MZ_IDC_GRIDMENU_ITEM1:
    {
        // 使用新UI消息框
        MzMessageBoxV2(m_hWnd, L"You pressed the Select button!", MZV2_MB_OK);
        break;
    }
case MZ_IDC_GRIDMENU_ITEM2:
    {
        MzMessageBoxV2(m_hWnd, L"You pressed the DownLoad button!", MZV2_MB_OK);
        break;
    }
case MZ_IDC_GRIDMENU_ITEM3:
    {
        MzMessageBoxV2(m_hWnd, L"You pressed the Cancel button!", MZV2_MB_OK);
        break;
              }
case MZ_IDC_GRIDMENU_ITEM4:
    {
        MzMessageBoxV2(m_hWnd, L"You pressed the Search button!", MZV2_MB_OK);
        break;
    }

完整示例:

/************************************************************************/
/*
 * 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-07
 */
/************************************************************************/

//请按照以步骤运行此实例代码:
//首先, 打开VS2005/2008创建一个Win 32智能设备项目
//在项目向导中选择M8SDK, 并勾选空项目
//然后,在项目中新建一个cpp文件,将此处代码拷贝到cpp文件中
//最后,按照M8SDK的帮助文档,配置项目属性
//现在,可以运行此程序了

// 包含MZFC库的头文件
#include <mzfc_inc.h>

//此代码演示了:
//  创建和初始化应用程序
//  创建和初始化窗体
//  弹出表格式菜单 MzGridMenu 的使用及其命令消息的处理
//            弹出消息框 MzMessageBoxV2 的使用

#define MZ_IDC_TESTTOOLBAR                101

#define MZ_IDC_GRIDMENU_ITEM1             1
#define MZ_IDC_GRIDMENU_ITEM2             2
#define MZ_IDC_GRIDMENU_ITEM3             3
#define MZ_IDC_GRIDMENU_ITEM4             4

// 从 CMzWndEX 派生的主窗口类
class CSampleMainWnd : public CMzWndEx
{
    MZ_DECLARE_DYNAMIC(CSampleMainWnd);
public:
    UiToolBarPro m_ToolBarPro;
    MzGridMenu m_GridMenu;

    ImageContainer m_imgContainer;

protected:
    // 窗口初始化
    virtual BOOL OnInitDialog()
    {
        // 必须先调用基类的初始化
        if (!CMzWndEx::OnInitDialog())
        {
            return FALSE;
        }

        // 初始化 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"Exit");
        m_ToolBarPro.SetButton(TOOLBARPRO_RIGHT_TEXTBUTTON, true, true, L"GMenu");
        AddUiWin(&m_ToolBarPro);

        ImagingHelper* m_selImg = m_imgContainer.LoadImage(GetMzResV2ModuleHandle(), MZRESV2_IDR_PNG_TICK, true);
        ImagingHelper* m_selImgPrs = m_imgContainer.LoadImage(GetMzResV2ModuleHandle(), MZRESV2_IDR_PNG_TICK_PRESSED, true);
        ImagingHelper* m_dImg = m_imgContainer.LoadImage(GetMzResV2ModuleHandle(), MZRESV2_IDR_PNG_DOWNLOAD, true);
        ImagingHelper* m_dImgPrs = m_imgContainer.LoadImage(GetMzResV2ModuleHandle(), MZRESV2_IDR_PNG_DOWNLOAD_PRESSED, true);
        ImagingHelper* m_celImg = m_imgContainer.LoadImage(GetMzResV2ModuleHandle(), MZRESV2_IDR_PNG_CANCEL, true);
        ImagingHelper* m_celImgPrs = m_imgContainer.LoadImage(GetMzResV2ModuleHandle(), MZRESV2_IDR_PNG_CANCEL_PRESSED, true);
        ImagingHelper* m_secImg = m_imgContainer.LoadImage(GetMzResV2ModuleHandle(), MZRESV2_IDR_PNG_SEARCH, true);
        ImagingHelper* m_secImgPrs = m_imgContainer.LoadImage(GetMzResV2ModuleHandle(), MZRESV2_IDR_PNG_SEARCH_PRESSED, true);

        // 初始化 MzGridMenu 控件
        m_GridMenu.AppendMenuItem(MZ_IDC_GRIDMENU_ITEM1, L"Select", m_selImg, m_selImgPrs);
        m_GridMenu.AppendMenuItem(MZ_IDC_GRIDMENU_ITEM2, L"DownLoad", m_dImg, m_dImgPrs);
        m_GridMenu.AppendMenuItem(MZ_IDC_GRIDMENU_ITEM3, L"Cancel", m_celImg, m_celImgPrs);
        m_GridMenu.AppendMenuItem(MZ_IDC_GRIDMENU_ITEM4, L"Search", m_secImg, m_secImgPrs);

        return TRUE;
    }

    // 重载 MZFC 的命令消息处理函数
    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)
                {
                    if (m_GridMenu.IsContinue())
                    {
                        m_GridMenu.EndGridMenu();
                    }

                    PostQuitMessage(0);
                }
                else if (index == TOOLBARPRO_RIGHT_TEXTBUTTON)
                {
                    // 使用对话框方式弹出 GridMenu
                    if (m_GridMenu.IsContinue())
                    {
                        m_GridMenu.EndGridMenu();
                    }
                    else
                    {
                        m_GridMenu.TrackGridMenuDialog(m_hWnd, MZM_HEIGHT_TOOLBARPRO);
                    }
                }

                break;
            }
        // 处理 GridMenu 的命令消息
        case MZ_IDC_GRIDMENU_ITEM1:
            {
                // 使用新UI消息框
                MzMessageBoxV2(m_hWnd, L"You pressed the Select button!", MZV2_MB_OK);
                break;
            }
        case MZ_IDC_GRIDMENU_ITEM2:
            {
                MzMessageBoxV2(m_hWnd, L"You pressed the DownLoad button!", MZV2_MB_OK);
                break;
            }
        case MZ_IDC_GRIDMENU_ITEM3:
            {
                MzMessageBoxV2(m_hWnd, L"You pressed the Cancel button!", MZV2_MB_OK);
                break;
                                          }
        case MZ_IDC_GRIDMENU_ITEM4:
            {
                MzMessageBoxV2(m_hWnd, L"You pressed the Search button!", MZV2_MB_OK);
                break;
            }
        }
    }

    // 重载 OnLButtonDown 在点击主窗口时隐藏弹出窗口
    void OnLButtonDown(UINT fwKeys, int xPos, int yPos)
    {
        if (yPos < (GetHeight() - MZM_HEIGHT_TOOLBARPRO))
        {
            if (m_GridMenu.IsContinue())
            {
                m_GridMenu.EndGridMenu();
            }
        }
    }

};

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();

        //成功则返回 TRUE
        return TRUE;
    }         
};

// 全局的应用程序对象
CSampleMainApp theApp;

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