窗口过渡效果示例(20_AnimateWindow)

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;

    

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