滑块与按钮控件示例(12_UiStatusBar)

滑块与按钮控件

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

滑块控件UiStatusBar 使用流程

示例代码展示:

12_UiStatusBar.png

滑块滑动时,更新滑块的位置:

  WCHAR wstr[10];
  wsprintf(wstr,L"%d%%",m_StatusBar.GetPadpos());
  m_StcValue.SetText(wstr);
  m_StcValue.Invalidate();
  m_StcValue.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-25
*/
/************************************************************************/

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

//此代码演示了:
//创建和初始化应用程序
//创建和初始化窗体
//使用UiButton控件,M8SDK提供了
//switch button,select button,line button,arrow button等多种按钮
//使用滑块控件(CUiStatusBar)
//使用UiScrollWin放置按钮
#define   MZ_IDC_STATUSBAR      100
#define   MZ_IDC_SCROLLWIN      101
#define   MZ_IDC_BTNLINE_START  102
#define   MZ_IDC_BTNLINE_END    106
#define   MZ_IDC_STATIC_VALUE   108
#define   MZ_IDC_STATIC_START   109
#define   MZ_IDC_STATIC_END     113
#define   MZ_IDC_BTNSWITCH      114
#define   MZ_IDC_BTNCLEAR       115
#define   MZ_IDC_BTNDELETE      116
#define   MZ_IDC_BTNARROW       117
#define   MZM_HEIGHT_BUTTON     80
static WCHAR* staticTxt[]=
{
  L"滑块",L"开关按钮",L"清零",L"查看结果",L""
};

class CSampleWnd_StatusBar : public CMzWndEx
{
public:
  UiStatusBar m_StatusBar;
  UiScrollWin               m_ScrollWin;
  UiButton                  m_BtnLine[5]; //0-5是划线按钮
  UiButton                  m_BtnSwitch;
  UiButton                  m_BtnClear;
  UiButton                  m_BtnDel;
  UiButton                  m_BtnArrow;
  UiStatic                  m_StcValue;   
  UiStatic                  m_Static[5];
protected:
  virtual BOOL OnInitDialog()
  {
    if (!CMzWndEx::OnInitDialog())
    {
      return FALSE;
    }
    m_ScrollWin.SetID(MZ_IDC_SCROLLWIN);
    m_ScrollWin.SetPos(0,0,GetWidth(),GetHeight());
    AddUiWin(&m_ScrollWin);

    //设置划线按钮属性
    for (int i= 0;i<= 4;i++)
    {
      m_BtnLine[i].SetPos(0,i*MZM_HEIGHT_BUTTON,GetWidth(),MZM_HEIGHT_BUTTON);
      m_BtnLine[i].SetID(MZ_IDC_BTNLINE_START+i);
      m_BtnLine[i].SetButtonType(MZC_BUTTON_LINE_TOP);
      m_BtnLine[i].LockState(true);
      //点击后显示高亮
      if ( i == 3)            
      {
        m_BtnLine[i].LockState(false);
      }
      m_ScrollWin.AddChild(&m_BtnLine[i]);

      m_Static[i].SetText(staticTxt[i]);
      m_Static[i].SetID(MZ_IDC_STATIC_START+i);
      m_Static[i].SetPos(10,i*MZM_HEIGHT_BUTTON,100,MZM_HEIGHT_BUTTON);
      m_Static[i].SetDrawTextFormat(DT_LEFT|DT_VCENTER);
      m_ScrollWin.AddChild(&m_Static[i]);
    }

    //设置滑块属性
    m_StatusBar.SetPos(GetWidth()-350,25,260,20);
    m_StatusBar.SetID(MZ_IDC_STATUSBAR);
    m_StatusBar.SetRange(0,100);
    m_StatusBar.SetPadpos(50);
    m_ScrollWin.AddChild(&m_StatusBar);

    //使用UiStatic显示滑块位置
    m_StcValue.SetID(MZ_IDC_STATIC_VALUE);
    m_StcValue.SetPos(GetWidth()-80,25,60,20);
    m_StcValue.SetText(L"50%");
    m_ScrollWin.AddChild(&m_StcValue);

    //设置选择按钮属性
    m_BtnSwitch.SetID(MZ_IDC_BTNSWITCH);
    m_BtnSwitch.SetPos(GetWidth()-150,MZM_HEIGHT_BUTTON,150,MZM_HEIGHT_BUTTON);
    m_BtnSwitch.SetButtonType(MZC_BUTTON_SWITCH);
    m_BtnSwitch.SetButtonMode(MZC_BUTTON_MODE_HOLD);
    m_ScrollWin.AddChild(&m_BtnSwitch);

    //设置灰色小按钮属性
    m_BtnClear.SetID(MZ_IDC_BTNCLEAR);
    m_BtnClear.SetPos(GetWidth()-120,MZM_HEIGHT_BUTTON*2+10,100,60);
    m_BtnClear.SetButtonType(MZC_BUTTON_DELETE);
    m_BtnClear.SetTextColor(TCI_BUTTON_TEXT);
    m_BtnClear.SetText(L"复位");
    m_ScrollWin.AddChild(&m_BtnClear);

    //设置箭头按钮属性
    m_BtnArrow.SetID(MZ_IDC_BTNARROW);
    m_BtnArrow.SetPos(GetWidth()-70,MZM_HEIGHT_BUTTON*3,70,MZM_HEIGHT_BUTTON);
    m_BtnArrow.SetButtonType(MZC_BUTTON_ARROW_RIGHT);
    m_ScrollWin.AddChild(&m_BtnArrow);

    return TRUE;
  }
  virtual LRESULT MzDefWndProc(UINT message, WPARAM wParam, LPARAM lParam)
  {
    switch(wParam)
    {
      case MZ_IDC_STATUSBAR:
      {
        switch(message)
        {
          //滑块滑动时,更新显示滑块位置
          case MZ_MOUSE_DOWN_MOVE:
          {
            WCHAR wstr[10];
            wsprintf(wstr,L"%d%%",m_StatusBar.GetPadpos());
            m_StcValue.SetText(wstr);
            m_StcValue.Invalidate();
            m_StcValue.Update();
          }
          break;
        }
      }
      break;
      case MZ_IDC_BTNCLEAR:
      {
        switch(message)
        {
          //点击复位按钮
          case MZ_WM_COMMAND:
            {
              m_StatusBar.SetPadpos(0);
              m_StcValue.SetText(L"0%");
              m_BtnSwitch.SetState(0);
              Invalidate();
              UpdateWindow();
              printf("0x%x\n",message);
            }
            break;
        }

      }
      break;
    }

  return CMzWndEx::MzDefWndProc(message,wParam,lParam);
  }
private:
};
class CSampleApp: public CMzApp
{

public:
  //主窗体
  CSampleWnd_StatusBar 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;

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