UiSetPassDown
此示例展示以下控件的使用方法:
示例代码展示:
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;