时间日期设置对话框
此示例展示以下窗口的使用方法:
时间日期设置控件MzSetDaily的使用流程
MzSetDaily setDateDlg; //初始设置参数请参见 MzSetDaily.h
//获得工作区 RECT rcWorkDate = MzGetWorkArea(); //创建时间日期设置对话框 setDateDlg.Create(rcWorkDate.left, rcWorkDate.top, RECT_WIDTH(rcWorkDate), RECT_HEIGHT(rcWorkDate), m_hWnd, 0, WS_POPUP);
示例代码展示:
日期设置对话框的初始化数据
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;