zoukankan      html  css  js  c++  java
  • 魅族m8开发 step by step(2)(hello world)

        接上篇,每个程序都会有MessageBox,MZFC也是如此,但进行的美化,其函数名为MzMessageBoxEx

    一.MZFC的新MessageBox(MzMessageBoxEx)

    /**
    *    @brief提示对话框
    *    @param hWnd [in] 窗口句柄
    *    @param content [in] 提示的内容
    *    @param title    [in] 标题(目前设置标题是无效的)
    *    @param nType    [in] 显示的按钮类型
    *     MZ_OK    、                  
    *     MZ_OKCANCEL   、           
    *     MZ_ABORTRETRYIGNORE   、   
    *     MZ_YESNOCANCEL   、        
    *     MZ_YESNO     、             
    *     MZ_RETRYCANCEL  
    *    @param nHomeKeyReturnValue    [in] 设置此窗口在收到Home键时的返回值
    *    @return 返回按下的按钮,YES:1,NO:2,OK:1,RETRY:1,CANCEL:2,ABORT:2,IGNORE:3
    */
    int MZFC_API MzMessageBoxEx( HWND hWnd, const TCHAR* content, const TCHAR *title, int nType  = MZ_OK , int nHomeKeyReturnValue = SHK_RET_DEFAULT  );


    c/c++复习知识
    1.句柄(MessageBox必须包含一个窗体句柄)
    2.宽字符(char,wchar_t,TCHAR,WCHAR) 这点知识可以参考Windows程序设计 第二章,有详细介绍

    还可以参考这篇http://www.cnblogs.com/DonkeyWugui/archive/2009/08/20/1550291.html

    说实话我很不喜欢c/c+对类型重新定义,搞来搞去就这么几个类型,为了不同框架,就重新自己定义,千头万绪啊.都是typedef惹的祸,这可能就是c/c++的风格吧,很痛苦的去接受,还有#define的全局定义…,能定义一个静态类多好...

    下面我们在窗体里实际跳出一个弹出框(标题将不显示)

     virtual BOOL OnInitDialog()
     {
       if (!CMzWndEx::OnInitDialog())
       {
         return FALSE;
       }
       MzMessageBoxEx(m_hWnd, L"Hello World", L"Exit", MB_OK, false);
       return TRUE;
     }


    也截个图,还是挺漂亮的:)

    image

    二.为窗体添加和删除控件

    现在的UI框架,若无控件怎么算是一个框架呢,不过没有像开发WinForm这么幸福,无法拖拉.只能通过代码来.

    MZFC的控件基类为UiWin,如WinForm的Control类一般,不要期待MZFC能提供如微软那么多的控件给你,只有基本的,连checkbox,radiobutton等都没有,基本控件都很简单很弱,还好挺好看的,只能期待SDK的更新了

    image

    窗体定义了两个方法来添加和删除控件,记得参数是指针类型

    image

    三.添加一个按钮控件


    下面来测试往窗体中添加一个按钮

    class CSample1MainWnd: public CMzWndEx
    {
     public:
      UiButton m_btn;
    
    protected:
     virtual BOOL OnInitDialog()
      {
        if (!CMzWndEx::OnInitDialog())
        {
          return FALSE;
        }
        // 设置控件位置
    m_btn.SetPos(100,250,280,100); m_btn.SetText(L"Hello MZFC!"); // 把控件添加到窗口中 AddUiWin(&m_btn); return TRUE; } } };

    SetPos属于基类方法,设置控件位置,其他具体方法还可以参考SDK.设置完相关属性后,用AddUiWin添加到窗体中.再次截图

    image

    四.事件处理


    放按钮不是摆设的,点下去是要做事情的,MZFC的事件机制基于原始的消息机制,但是没有消息事件映射,所以很麻烦,得写很多case

    (1)为控件分配唯一ID标识符

    m_btn.SetID(MZ_IDC_TESTBTN1);


    (2)重载窗体类的OnMzCommand方法(WM_COMMAND)

    virtual void OnMzCommand(WPARAM wParam, LPARAM lParam)
    {
      UINT_PTR id = LOWORD(wParam);
      switch(id)
      {
      case MZ_IDC_TESTBTN1:
        {
            MzMessageBoxEx(m_hWnd, L"Hello World", L"Exit", MB_OK, false);
        }
        break;
      }
    }


    再次点击这个按钮就会弹出一个很可爱的弹出框了.

    应该算是step by step,很简单了,一个很简单的Hello MZFC能被我讲成这样:)

  • 相关阅读:
    unix:///tmp/supervisor.sock no such file错误
    学习笔记---java
    linux ps查看
    python-virtualenv(多个独立开发环境)
    windows配置java环境
    学习大牛笔记nginx + gunicorn + supervisor
    python request模块学习
    python requests 和SSL证书
    flask 使用配置证书,证书路径自行修改
    python 安装pip
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1603193.html
Copyright © 2011-2022 走看看