Ui控件的SetPassDown方法示例(18_UiSetPassDown)

UiSetPassDown

此示例展示以下控件的使用方法:

示例代码展示:

18_UiSetPassDown.png

UiWin中SetPassDown的使用:

  //放置于上方的空间不处理鼠标消息,将消息传给下面的控件处理
  m_pic1.SetPassDown(true);

完整示例:

/************************************************************************/
/*
* 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-06-26
*/
/************************************************************************/

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

//包含MZFC库的头文件
#include "resource.h"
#include <mzfc_inc.h>

//此代码演示了:
//  创建和初始化应用程序
//  创建和初始化窗体
//  按钮控件的使用及其命令消息的处理
//  UiPicture的使用
//  UiWin中SetPassDown的使用,忽略鼠标操作并把此鼠标操作传递至下一个z-order的控件

// 按钮控件的ID
#define MZ_IDC_TESTBTN1  101

//显示图片的不同模式
static DWORD modeId[4]=
{
  MZ_PAINTMODE_NORMAL,    //正常显示
  MZ_PAINTMODE_TILE,      //平铺
  MZ_PAINTMODE_STRETCH_H,    //水平方向拉伸 (不设置边距)
  MZ_PAINTMODE_STRETCH_H    //水平方向拉伸 (设置边距)
};


// 从 CMzWndEx 派生的主窗口类
class CSample1MainWnd: public CMzWndEx
{
  MZ_DECLARE_DYNAMIC(CSample1MainWnd);
public:
  // 窗口中的按钮控件
  UiButton m_btn;
  // 窗口中的UiPicture控件
  UiPicture2 m_pic1;
  UiPicture2 m_pic2;

  ImagingHelper* m_ImgHelper1;
  ImagingHelper* m_ImgHelper2;

  int m_modeIndex;

  CSample1MainWnd(void)
  {
      m_ImgHelper1 = new ImagingHelper;
      m_ImgHelper2 = new ImagingHelper;
  }

  ~CSample1MainWnd(void)
  {
      if (m_ImgHelper1)
      {
          delete m_ImgHelper1;
          m_ImgHelper1 = NULL;
      }

      if (m_ImgHelper2)
      {
          delete m_ImgHelper2;
          m_ImgHelper2 = NULL;
      }
  }
protected:
  // 窗口的初始化
  virtual BOOL OnInitDialog()
  {
    // 必须先调用基类的初始化
    if (!CMzWndEx::OnInitDialog())
    {
      return FALSE;
    }
  
    // 初始化窗口中的控件
    m_btn.SetButtonType(MZC_BUTTON_GREEN);
    m_btn.SetPos(100, 250, 280, 100);
    m_btn.SetID(MZ_IDC_TESTBTN1);
    m_btn.SetText(L"Picture1");
    m_btn.SetTextColor(RGB(255,255,255));

    // 把控件添加到窗口中
    AddUiWin(&m_btn);

    m_ImgHelper1->LoadImageFromRes(MzGetInstanceHandle(),RT_RCDATA,MAKEINTRESOURCE(IDR_PNG_PIC1),true,true);
    m_pic1.SetPos(0, 0, m_ImgHelper1->GetImageWidth(), m_ImgHelper1->GetImageHeight());
    m_pic1.SetPaintMode(modeId[m_modeIndex]);
    m_pic1.SetPassDown(true);
    m_pic1.SetImage(m_ImgHelper1);

    AddUiWin(&m_pic1);

    m_ImgHelper2->LoadImageFromRes(MzGetInstanceHandle(),RT_RCDATA,MAKEINTRESOURCE(IDR_PNG_PIC2),true,true);
    m_pic2.SetPos(0, 0, m_ImgHelper2->GetImageWidth(), m_ImgHelper2->GetImageHeight());
    m_pic2.SetPaintMode(modeId[m_modeIndex]);
    m_pic2.SetPassDown(true);
    m_pic2.SetImage(m_ImgHelper2);

    return TRUE;
  }

  // 重载命令消息的处理函数
  virtual void OnMzCommand(WPARAM wParam, LPARAM lParam)
  {
    UINT_PTR id = LOWORD(wParam);
    switch(id)
    {
    case MZ_IDC_TESTBTN1:
      {
        if ( wcscmp( m_btn.GetText(), L"Picture1") == 0)
        {
          m_btn.SetText(L"Picture2");
          RemoveUiWin(&m_pic1);
          AddUiWin(&m_pic2);
        } 
        else if ( wcscmp(m_btn.GetText(), L"Picture2") == 0)
        {
          m_btn.SetText(L"Picture1");
          RemoveUiWin(&m_pic2);
          AddUiWin(&m_pic1);
        }
        Invalidate();

      }
      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);
    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