zoukankan      html  css  js  c++  java
  • 魅族m8开发 step by step(1)(让程序跑起来)

        nokia 5800被偷,正好上段时间在学c++,看别人买了m8还可以,就下决心买了一个。m8虽然没iPhone强大,但在国内很受大家欢迎,目前国内的也就m8做的还比较像样。看sample,写个学习笔记,让我等无c++开发经验的学习下。

    官方有sdk下载,所以开发起来还算方便.

    m8 sdk被官方称为MZFC,Meizu Foundation Classes的简称,即魅族基础类库。

    虽然其没有MFC这么强大,但其提供的UI确实比内置的好看多了。下面我们慢慢来完成第一个demo.

    一.引用MZFC库的头文件

    #include <mzfc_inc.h>

    二.创建应用程序


    不管是WinForm,还是WPF,MFC,我们都会有一个Application和窗体类,MZFC也是如此

    MZFC的的应用程序类为CMzApp,其用来初始化,我们必须顶一个从其派生的类,并重写Init方法.一个最简单的定义

    class CSample1App: public CMzApp
    {
    public:
      virtual BOOL Init()
      {
        CoInitializeEx(0, COINIT_MULTITHREADED);
    
       return TRUE;
      }
    };
    CSample1App theApp;


    这里必须先调用CoInitializeEx来初始化com组件.到这里如果测试这个程序的话,将什么也不会发生.

    三.创建窗体类


    窗体类从CMzWndEx类派生,与应用程序类一样,我们也要初始化(OnInitDialog)窗体.首先必须调用基类静态方法OnInitDialog初始化

    class CSample1MainWnd: public CMzWndEx
    {
     public:
     
    protected:
     virtual BOOL OnInitDialog()
      {
        if (!CMzWndEx::OnInitDialog())
        {
          return FALSE;
        }    
            return TRUE;
      }
    };

    四.在应用程序中启动主窗体


    应用程序类和窗体类建好后,就可以在在应用程序初始化时启动主窗体了

    创建窗体需要分两个步骤

    (1)调用窗体基类的Create方法,创建窗体
    (2)调用Show方法显示窗体

    庆幸方法有详细注释

    image

    我们重新回到App那里

    class CSample1App: public CMzApp
    {
    public:
      CSample1MainWnd m_MainWnd;
    
      virtual BOOL Init()
      {
        CoInitializeEx(0, COINIT_MULTITHREADED);
    
        m_MainWnd.Create(0,0,200,200, 0, 0, 0);
        m_MainWnd.Show();
    
        return TRUE;
      }
    };
    
    CSample1App theApp;


    前面7个参数是必须的,这样一个基本的程序就创建出来了,我们可以通过MzGetWorkArea方法获取工作区大小

    /// 求矩形宽度
    #define RECT_WIDTH(rc) ((rc).right-(rc).left) 
    /// 求矩形高度
    #define RECT_HEIGHT(rc) ((rc).bottom-(rc).top) 
    RECT rcWork = MzGetWorkArea();
    m_MainWnd.Create(rcWork.left,rcWork.top,RECT_WIDTH(rcWork),RECT_HEIGHT(rcWork), 0, 0, 0);

    Ok,这样主窗体就会充满整个屏幕了,来一个简单截图,啥也没,呵呵。

    image

  • 相关阅读:
    测试数据不会造?Fake Data!
    Go面试题汇总
    数据存储的 timestamp 时间正确 但是 Laravel 取出来的时间慢的 8 小时(Lumen timezone 时区设置方法(慢了8个小时))
    nginx php和html伪静态
    laravel DB操作
    深度学习_tensorflow-gpu安装:Win10-64bit+ NVIDIA GeForce MX150
    clickhouse SQL查询语句 【译自Github 英文文档】
    ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
    elasticsearch max virtual memory areas vm.max_map_count [65530] is too low, increase to at le
    Pycharm 一键加引号
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1603160.html
Copyright © 2011-2022 走看看