进度条对话框
此示例展示以下控件的使用方法:
进度条控件MzProgressDialog使用流程
MzProgressDialog m_ProgressDlg;
//设置最大值最小值范围 m_ProgressDlg.SetRange(0,100); //设置当前进度条的位置 m_ProgressDlg.SetCurValue(0); //设置进度条左下按钮的文字标题 m_ProgressDlg.SetButtonText(L"暂停"); //设置进度条的宽度 m_ProgressDlg.SetWindowHeight(MZM_WIDTH_SMS_CONTENT); //进度条的标题和信息字段都显示 m_ProgressDlg.SetShowTitle(true); m_ProgressDlg.SetShowInfo(true); //设置进度条的信息字段 m_ProgressDlg.SetInfo(L"进度条实例代码");
//创建进度条窗体 m_ProgressDlg.BeginProgress(m_hWnd); //更新进度条窗体 m_ProgressDlg.UpdateProgress(); //关闭进度条窗体 m_ProgressDlg.EndProgress();
进度条的使用:
m_ProgressDlg.BeginProgress(m_hWnd); for (int i=m_ProgressDlg.GetCurValue();i<100;i++) { //创建当点击取消时,要向消息主窗体发送的消息值 UINT iMessage = MZ_WM_BREAK | m_ProgressDlg.GetCurValue(); m_ProgressDlg.SetButtonMessage(iMessage); m_ProgressDlg.SetCurValue(i); //每走一秒更新进度条的title if(i%10 == 0) { WCHAR wstr[10]; wsprintf(wstr,L"剩余时间%d秒",(100-i)/10); m_ProgressDlg.SetTitle(wstr); } m_ProgressDlg.UpdateProgress(); //判断用户是否有点击取消按钮 if(!m_ProgressDlg.IsContinue()) { UINT ii = m_ProgressDlg.GetCurValue(); m_ProgressDlg.EndProgress(); break; } Sleep(100); } m_ProgressDlg.EndProgress(); m_ProgressDlg.SetCurValue(0); m_Caption.SetText(L"初始值:0"); m_Caption.Invalidate(); m_Caption.Update();
/************************************************************************/ /* * Copyright (C) Meizu Technology Corporation Zhuhai China * All rights reserved. * 中国珠海, 魅族科技有限公司, 版权所有. * * This file is a part of the Meizu Foundation Classes library. * Author: Lynn * Create on: 2009-4-22 */ /************************************************************************/ //请按照以步骤运行此实例代码: //首先, 打开VS2005/2008创建一个Win 32智能设备项目 //在项目向导中选择M8SDK, 并勾选空项目 //然后,在项目中新建一个cpp文件,将此处代码拷贝到cpp文件中 //最后,按照M8SDK的帮助文档,配置项目属性 //现在,可以运行此程序了 //包含头文件 #include <mzfc_inc.h> #include <mzfc\MzProgressDialog.h> #include "resource.h" //此代码演示了: //创建和初始化应用程序 //创建和初始化窗体 //如何使用MzProgressDialog //如何使用Icon toolbar, Caption #define MZ_IDC_TOOLBARICON 101 #define MZ_IDC_CAPTION 102 #define MZ_WM_BREAK 0x10000 //进度条窗体向主窗体发送的消息,高字为1,低字保留存放其他信息 class CSampleWnd_ProgressDlg:public CMzWndEx { public: UiToolbar_Icon m_ToolBarIcon; UiCaption m_Caption; MzProgressDialog m_ProgressDlg; protected: virtual BOOL OnInitDialog() { if (!CMzWndEx::OnInitDialog()) { return FALSE; } //初始化Icon toolbar m_ToolBarIcon.SetID(MZ_IDC_TOOLBARICON); m_ToolBarIcon.SetPos(0,GetHeight()-MZM_HEIGHT_ICON_TOOLBAR,GetWidth(),MZM_HEIGHT_ICON_TOOLBAR); m_ToolBarIcon.SetButtonCount(4); m_ToolBarIcon.LoadButtonIcon(0,MzGetInstanceHandle(),RT_RCDATA,MAKEINTRESOURCE(IDR_PNG_BACK)); m_ToolBarIcon.LoadButtonIcon(3,MzGetInstanceHandle(),RT_RCDATA,MAKEINTRESOURCE(IDR_PNG_PLAY)); m_ToolBarIcon.SetHighLightButton(-1); AddUiWin(&m_ToolBarIcon); //初始化caption, caption用来显示进度条前进的位置, 按百分制显示。 m_Caption.SetID(MZ_IDC_CAPTION); m_Caption.SetPos(0,0,GetWidth(),100); m_Caption.SetText(L"初始值:0"); AddUiWin(&m_Caption); //初始化进度条 m_ProgressDlg.SetRange(0,100); m_ProgressDlg.SetCurValue(0); m_ProgressDlg.SetButtonText(L"暂停"); m_ProgressDlg.SetWindowHeight(MZM_WIDTH_SMS_CONTENT); m_ProgressDlg.SetShowTitle(true); m_ProgressDlg.SetShowInfo(true); m_ProgressDlg.SetInfo(L"进度条实例代码"); return TRUE; } virtual LRESULT MzDefWndProc(UINT message, WPARAM wParam, LPARAM lParam) { int i = HIWORD(message); printf("%d,%d,%d\n",i,LOWORD(message),message); switch(HIWORD(message)) { //用户点击进度条的取消按钮。message的高字为1表示“取消”,低字用来存放进度条的当前值。 case 1: { INT16 curValue = LOWORD(message); WCHAR wstr[15]; wsprintf(wstr,L"初始值:%d",curValue); m_ProgressDlg.SetCurValue(curValue); m_Caption.SetText(wstr); m_Caption.Invalidate(); m_Caption.Update(); } break; } return CMzWndEx::MzDefWndProc(message, wParam, lParam); } virtual void OnMzCommand(WPARAM wParam, LPARAM lParam) { switch(LOWORD(wParam)) { case MZ_IDC_TOOLBARICON: { switch(lParam) { case 0: { PostQuitMessage(0); } break; case 3: //用户点击图标按钮,开始运行进度条 { m_ProgressDlg.BeginProgress(m_hWnd); for (int i=m_ProgressDlg.GetCurValue();i<100;i++) { //创建当点击取消时,要向消息主窗体发送的消息值 UINT iMessage = MZ_WM_BREAK | m_ProgressDlg.GetCurValue(); m_ProgressDlg.SetButtonMessage(iMessage); m_ProgressDlg.SetCurValue(i); //每走一秒更新进度条的title if(i%10 == 0) { WCHAR wstr[10]; wsprintf(wstr,L"剩余时间%d秒",(100-i)/10); m_ProgressDlg.SetTitle(wstr); } m_ProgressDlg.UpdateProgress(); //判断用户是否有点击取消按钮 if(!m_ProgressDlg.IsContinue()) { UINT ii = m_ProgressDlg.GetCurValue(); m_ProgressDlg.EndProgress(); break; } Sleep(100); } m_ProgressDlg.EndProgress(); m_ProgressDlg.SetCurValue(0); m_Caption.SetText(L"初始值:0"); m_Caption.Invalidate(); m_Caption.Update(); } break; } } break; } return; } }; class CSampleApp: public CMzApp { public: //主窗体 CSampleWnd_ProgressDlg m_MainWnd; //初始化应用程序 virtual BOOL Init() { 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; } }; // 全局应用程序变量 CSampleApp theApp;