AnimateWindow
此示例展示以下控件的使用方法:
示例代码展示:
程序启动时的过渡效果:
if ( MzGetParam(MZGP_APP_START_ANIMATION)==TRUE ) { m_MainWnd.AnimateWindow( MZ_ANIMTYPE_ZOOM_IN , true); m_MainWnd.Show(); }
循环演示窗口弹出的过渡效果:
virtual void OnMzCommand(WPARAM wParam, LPARAM lParam) { UINT_PTR id = LOWORD(wParam); switch(id) { case MZ_IDC_TESTBTN1: { MyWnd dlg; RECT rcWork = MzGetWorkArea(); dlg.Create(rcWork.left,rcWork.top,RECT_WIDTH(rcWork),RECT_HEIGHT(rcWork), m_hWnd, 0, WS_POPUP); // 设置窗口切换动画(弹出时的动画) dlg.SetAnimateType_Show(i); // 设置窗口切换动画(结束时的动画) dlg.SetAnimateType_Hide(i+1); int nRet = dlg.DoModal(); i++; if (i>15) { i = 0; } return; } break; } } }
完整示例:
/************************************************************************/ /* * Copyright (C) Meizu Technology Corporation Zhuhai China * All rights reserved. * 中国珠海, 魅族科技有限公司, 版权所有. * * This file is a part of the Meizu Foundation Classes library. * Author: ZYK * Create on: 2009-07-22 */ /************************************************************************/ //请按照以步骤运行此实例代码: //首先, 打开VS2005/2008创建一个Win 32智能设备项目 //在项目向导中选择M8SDK, 并勾选空项目 //然后,在项目中新建一个cpp文件,将此处代码拷贝到cpp文件中 //最后,按照M8SDK的帮助文档,配置项目属性 //现在,可以运行此程序了 //包含MZFC库的头文件 #include <mzfc_inc.h> //此代码演示了: // 创建和初始化应用程序 // 创建和初始化窗体 // 如何设置窗口过渡动画(不断点击按钮可循环显示窗口过渡效果) // 按钮控件的ID #define MZ_IDC_TESTBTN1 101 #define MZ_IDC_LIST 101 #define MZ_IDC_TOOLBAR1 102 #define IDC_PPM_OK 103 #define IDC_PPM_CANCEL 104 #define MZ_IDC_SCROLLWIN 105 class MyWnd: public CMzWndEx { MZ_DECLARE_DYNAMIC(MyWnd); public: protected: UiScrollWin m_ScrollWin; UiToolbar_Text m_Toolbar; UiCaption m_Caption1; UiCaption m_Caption2; UiButtonEx m_BtnSetting1; UiButtonEx m_BtnSetting2; UiButtonEx m_BtnSetting3; UiButtonEx m_BtnSetting4; UiButtonEx m_BtnSetting5; UiButtonEx m_BtnSetting6; UiButtonEx m_BtnSetting7; UiButtonEx m_BtnSetting8; UiButtonEx m_BtnSetting9; UiButtonEx m_BtnSetting10; // 窗口的初始化 virtual BOOL OnInitDialog() { // 必须先调用基类的初始化 if (!CMzWndEx::OnInitDialog()) { return FALSE; } // 初始化窗口中的控件 m_ScrollWin.SetPos(0,0,GetWidth(),GetHeight()-MZM_HEIGHT_TEXT_TOOLBAR); m_ScrollWin.SetID(MZ_IDC_SCROLLWIN); m_ScrollWin.EnableScrollBarV(true); AddUiWin(&m_ScrollWin); int y = 0; m_Caption1.SetPos(0,y,GetWidth(),MZM_HEIGHT_CAPTION); m_Caption1.SetText(L"Basic settings"); m_ScrollWin.AddChild(&m_Caption1); y+=MZM_HEIGHT_CAPTION; m_BtnSetting1.SetPos(0,y,GetWidth(),MZM_HEIGHT_BUTTONEX); m_BtnSetting1.SetText(L"Property 1"); m_BtnSetting1.SetText2(L"Property value 1"); m_BtnSetting1.SetButtonType(MZC_BUTTON_LINE_BOTTOM); m_ScrollWin.AddChild(&m_BtnSetting1); y+=MZM_HEIGHT_BUTTONEX; m_BtnSetting2.SetPos(0,y,GetWidth(),MZM_HEIGHT_BUTTONEX); m_BtnSetting2.SetText(L"Property 2"); m_BtnSetting2.SetButtonType(MZC_BUTTON_LINE_BOTTOM); m_ScrollWin.AddChild(&m_BtnSetting2); y+=MZM_HEIGHT_BUTTONEX; m_BtnSetting3.SetPos(0,y,GetWidth(),MZM_HEIGHT_BUTTONEX); m_BtnSetting3.SetText(L"Property 3"); m_BtnSetting3.SetButtonType(MZC_BUTTON_LINE_BOTTOM); m_ScrollWin.AddChild(&m_BtnSetting3); y+=MZM_HEIGHT_BUTTONEX; m_Caption2.SetPos(0,y,GetWidth(),MZM_HEIGHT_CAPTION); m_Caption2.SetText(L"Advanced settings"); m_ScrollWin.AddChild(&m_Caption2); y+=MZM_HEIGHT_CAPTION; m_BtnSetting4.SetPos(0,y,GetWidth(),MZM_HEIGHT_BUTTONEX); m_BtnSetting4.SetText(L"Property 4"); m_BtnSetting4.SetButtonType(MZC_BUTTON_LINE_BOTTOM); m_ScrollWin.AddChild(&m_BtnSetting4); y+=MZM_HEIGHT_BUTTONEX; m_BtnSetting5.SetPos(0,y,GetWidth(),MZM_HEIGHT_BUTTONEX); m_BtnSetting5.SetText(L"Property 5"); m_BtnSetting5.SetButtonType(MZC_BUTTON_LINE_BOTTOM); m_ScrollWin.AddChild(&m_BtnSetting5); y+=MZM_HEIGHT_BUTTONEX; m_BtnSetting6.SetPos(0,y,GetWidth(),MZM_HEIGHT_BUTTONEX); m_BtnSetting6.SetText(L"Property 6"); m_BtnSetting6.SetButtonType(MZC_BUTTON_LINE_BOTTOM); m_ScrollWin.AddChild(&m_BtnSetting6); y+=MZM_HEIGHT_BUTTONEX; m_BtnSetting7.SetPos(0,y,GetWidth(),MZM_HEIGHT_BUTTONEX); m_BtnSetting7.SetText(L"Property 7"); m_BtnSetting7.SetButtonType(MZC_BUTTON_LINE_BOTTOM); m_ScrollWin.AddChild(&m_BtnSetting7); y+=MZM_HEIGHT_BUTTONEX; m_BtnSetting8.SetPos(0,y,GetWidth(),MZM_HEIGHT_BUTTONEX); m_BtnSetting8.SetText(L"Property 8"); m_BtnSetting8.SetButtonType(MZC_BUTTON_LINE_BOTTOM); m_ScrollWin.AddChild(&m_BtnSetting8); y+=MZM_HEIGHT_BUTTONEX; m_BtnSetting9.SetPos(0,y,GetWidth(),MZM_HEIGHT_BUTTONEX); m_BtnSetting9.SetText(L"Property 9"); m_BtnSetting9.SetButtonType(MZC_BUTTON_LINE_BOTTOM); m_ScrollWin.AddChild(&m_BtnSetting9); y+=MZM_HEIGHT_BUTTONEX; m_BtnSetting10.SetPos(0,y,GetWidth(),MZM_HEIGHT_BUTTONEX); m_BtnSetting10.SetText(L"Property 10"); m_BtnSetting10.SetButtonType(MZC_BUTTON_LINE_BOTTOM); m_ScrollWin.AddChild(&m_BtnSetting10); m_Toolbar.SetPos(0,GetHeight()-MZM_HEIGHT_TEXT_TOOLBAR,GetWidth(),MZM_HEIGHT_TEXT_TOOLBAR); m_Toolbar.SetButton(0, true, true, L"Cancel"); m_Toolbar.EnableLeftArrow(true); m_Toolbar.SetButton(2, true, true, L"Save"); m_Toolbar.SetID(MZ_IDC_TOOLBAR1); AddUiWin(&m_Toolbar); return TRUE; } // 重载 MZFC 的命令消息处理函数 virtual void OnMzCommand(WPARAM wParam, LPARAM lParam) { UINT_PTR id = LOWORD(wParam); switch(id) { case MZ_IDC_TOOLBAR1: { int nIndex = lParam; if (nIndex==0) { // 退出模态对话框 EndModal(ID_CANCEL); return ; } if (nIndex==2) { //保存设置... // 退出模态对话框 EndModal(ID_OK); return; } } } } private: }; MZ_IMPLEMENT_DYNAMIC(MyWnd) // 从 CMzWndEx 派生的主窗口类 class CSample1MainWnd: public CMzWndEx { MZ_DECLARE_DYNAMIC(CSample1MainWnd); public: // 窗口中的按钮控件 UiButton m_btn; int i; protected: // 窗口的初始化 virtual BOOL OnInitDialog() { // 必须先调用基类的初始化 if (!CMzWndEx::OnInitDialog()) { return FALSE; } i = MZ_ANIMTYPE_SCROLL_BOTTOM_TO_TOP_2; // 初始化窗口中的控件 m_btn.SetButtonType(MZC_BUTTON_GREEN); m_btn.SetPos(100,250,280,100); m_btn.SetID(MZ_IDC_TESTBTN1); m_btn.SetText(L"显示窗口!"); m_btn.SetTextColor(RGB(255,255,255)); // 把控件添加到窗口中 AddUiWin(&m_btn); return TRUE; } // 重载命令消息的处理函数 virtual void OnMzCommand(WPARAM wParam, LPARAM lParam) { UINT_PTR id = LOWORD(wParam); switch(id) { case MZ_IDC_TESTBTN1: { MyWnd dlg; RECT rcWork = MzGetWorkArea(); dlg.Create(rcWork.left,rcWork.top,RECT_WIDTH(rcWork),RECT_HEIGHT(rcWork), m_hWnd, 0, WS_POPUP); // 设置窗口切换动画(弹出时的动画) dlg.SetAnimateType_Show(i); // 设置窗口切换动画(结束时的动画) dlg.SetAnimateType_Hide(i+1); int nRet = dlg.DoModal(); i++; if (i>15) { i = 0; } return; } break; } } }; MZ_IMPLEMENT_DYNAMIC(CSample1MainWnd) // 从 CMzApp 派生的应用程序类 class CSample1App: public CMzApp { public: // 应用程序的主窗口 CSample1MainWnd 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); //程序启动时的过渡效果 if ( MzGetParam(MZGP_APP_START_ANIMATION)==TRUE ) { m_MainWnd.AnimateWindow( MZ_ANIMTYPE_ZOOM_IN , true); m_MainWnd.Show(); } // 成功则返回TRUE return TRUE; } }; // 全局的应用程序对象 CSample1App theApp;