时间日期设置对话框示例(29_MzSetDaily)

时间日期设置对话框

此示例展示以下窗口的使用方法:

时间日期设置控件MzSetDaily的使用流程

示例代码展示:

29_MzSetDaily_1.png
29_MzSetDaily_2.png

日期设置对话框的初始化数据

MzSetDaily setDateDlg;
setDateDlg.m_InitData.iItemCounter = 3;
setDateDlg.m_InitData.iItem1Max = 2100 - 1923; // 年份是从1923年开始计算的
setDateDlg.m_InitData.iItem2Max = 12;
setDateDlg.m_InitData.iItem3Max = setDateDlg.MaxDaysInMonth(m_sTime.wMonth, m_sTime.wYear);

// 设置对话框初始显示日期的项index,index值从0开始
setDateDlg.m_InitData.iItem1Data = m_sTime.wYear - 1923;
setDateDlg.m_InitData.iItem2Data = m_sTime.wMonth - 1;
setDateDlg.m_InitData.iItem3Data = m_sTime.wDay - 1;

setDateDlg.m_InitData.sItem1 = L"年";
setDateDlg.m_InitData.sItem2 = L"月";
setDateDlg.m_InitData.sItem3 = L"日";
setDateDlg.m_InitData.iItem1Width = setDateDlg.m_InitData.iItem2Width = setDateDlg.m_InitData.iItem3Width = 140;
setDateDlg.EnableDisplayYearData(true);
setDateDlg.SetEnableChangeItemData(true);

创建对话框的窗口,最后显示对话框设置的日期

// 创建日期设置对话框的窗口
RECT rcWorkDate = MzGetWorkArea();
setDateDlg.Create(rcWorkDate.left, rcWorkDate.top, RECT_WIDTH(rcWorkDate), RECT_HEIGHT(rcWorkDate), m_hWnd, 0, WS_POPUP);
// 设置窗口淡出的动画效果
setDateDlg.SetAnimateType_Show(MZ_ANIMTYPE_FADE);
setDateDlg.SetAnimateType_Hide(MZ_ANIMTYPE_FADE);

// 如果对话框点击“确定”,显示对话框设置的日期
if (ID_OK == setDateDlg.DoModal())
{
    m_sTime.wYear = setDateDlg.m_InitData.iItem1Data;
    m_sTime.wMonth = setDateDlg.m_InitData.iItem2Data;
    m_sTime.wDay = setDateDlg.m_InitData.iItem3Data;

    CMzString str(128);
    wsprintf(str.C_Str(), L"%d年%d月%d日", m_sTime.wYear, m_sTime.wMonth, m_sTime.wDay);
    m_DateBtn.SetText(str.C_Str());
}

完整示例:

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

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

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

//此代码演示了:
//  创建和初始化应用程序
//  创建和初始化窗体
//  时间日期设置对话框 MzSetDaily 的使用

#define MZ_IDC_BTN_DATE 101
#define MZ_IDC_BTN_EXIT 102

// 从 CMzWndEx 派生的窗口类
class CSampleMainWnd : public CMzWndEx
{
    MZ_DECLARE_DYNAMIC(CSampleMainWnd);
public:
    UiButton m_DateBtn;
    UiButton m_ExitBtn;

    SYSTEMTIME m_sTime;

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

        GetLocalTime(&m_sTime);

        CMzString str(128);
        
        m_DateBtn.SetButtonType(MZC_BUTTON_GRAY);
        m_DateBtn.SetID(MZ_IDC_BTN_DATE);
        m_DateBtn.SetPos(100, 150, 280, 100);
        wsprintf(str.C_Str(), L"%d年%d月%d日", m_sTime.wYear, m_sTime.wMonth, m_sTime.wDay);
        m_DateBtn.SetText(str.C_Str());
        m_DateBtn.SetTextColor(RGB(0, 0, 0));
        AddUiWin(&m_DateBtn);

        m_ExitBtn.SetButtonType(MZC_BUTTON_GREEN);
        m_ExitBtn.SetID(MZ_IDC_BTN_EXIT);
        m_ExitBtn.SetPos(100, 450, 280, 100);
        m_ExitBtn.SetText(L"Exit");
        AddUiWin(&m_ExitBtn);

        return TRUE;
    }

    // 重写命令消息的处理函数
    virtual void OnMzCommand(WPARAM wParam, LPARAM lParam)
    {
        UINT_PTR id = LOWORD(wParam);
        switch (id)
        {
        case MZ_IDC_BTN_DATE:
            {
                // 日期设置对话框的初始化数据
                MzSetDaily setDateDlg;
                setDateDlg.m_InitData.iItemCounter = 3;
                setDateDlg.m_InitData.iItem1Max = 2100 - 1923; // 年份是从1923年开始计算的
                setDateDlg.m_InitData.iItem2Max = 12;
                setDateDlg.m_InitData.iItem3Max = setDateDlg.MaxDaysInMonth(m_sTime.wMonth, m_sTime.wYear);

                // 设置对话框初始显示日期的项index,index值从0开始
                setDateDlg.m_InitData.iItem1Data = m_sTime.wYear - 1923;
                setDateDlg.m_InitData.iItem2Data = m_sTime.wMonth - 1;
                setDateDlg.m_InitData.iItem3Data = m_sTime.wDay - 1;

                setDateDlg.m_InitData.sItem1 = L"年";
                setDateDlg.m_InitData.sItem2 = L"月";
                setDateDlg.m_InitData.sItem3 = L"日";
                setDateDlg.m_InitData.iItem1Width = setDateDlg.m_InitData.iItem2Width = setDateDlg.m_InitData.iItem3Width = 140;
                setDateDlg.EnableDisplayYearData(true);
                setDateDlg.SetEnableChangeItemData(true);

                // 创建日期设置对话框的窗口
                RECT rcWorkDate = MzGetWorkArea();
                setDateDlg.Create(rcWorkDate.left, rcWorkDate.top, RECT_WIDTH(rcWorkDate), RECT_HEIGHT(rcWorkDate), m_hWnd, 0, WS_POPUP);
                // 设置窗口淡出的动画效果
                setDateDlg.SetAnimateType_Show(MZ_ANIMTYPE_FADE);
                setDateDlg.SetAnimateType_Hide(MZ_ANIMTYPE_FADE);

                // 如果对话框点击“确定”,显示对话框设置的日期
                if (ID_OK == setDateDlg.DoModal())
                {
                    m_sTime.wYear = setDateDlg.m_InitData.iItem1Data;
                    m_sTime.wMonth = setDateDlg.m_InitData.iItem2Data;
                    m_sTime.wDay = setDateDlg.m_InitData.iItem3Data;

                    CMzString str(128);
                    wsprintf(str.C_Str(), L"%d年%d月%d日", m_sTime.wYear, m_sTime.wMonth, m_sTime.wDay);
                    m_DateBtn.SetText(str.C_Str());
                }

                break;            
            }
        // 退出程序
        case MZ_IDC_BTN_EXIT:
            {
                PostQuitMessage(0);
            }
        }
    }
};

MZ_IMPLEMENT_DYNAMIC(CSampleMainWnd);

// 从 CMzApp 派生的应用程序类
class CSampleMainApp : public CMzApp
{
public:
    // 应用程序的主窗口
    CSampleMainWnd m_MailWnd;

    // 初始化应用程序
    virtual BOOL Init()
    {
        // 初始化 COM 组件
        CoInitializeEx(0, COINIT_MULTITHREADED);

        // 创建窗口
        RECT rcWork = MzGetWorkArea();
        m_MailWnd.Create(rcWork.left, rcWork.top, RECT_WIDTH(rcWork), RECT_HEIGHT(rcWork), 0, 0, 0);
        m_MailWnd.SetBgColor(MzGetThemeColor(TCI_WINDOW_BG));
        m_MailWnd.Show();

        return TRUE;
    }
};

// 全局应用程序变量
CSampleMainApp theApp;

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