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方法显示窗体

庆幸方法有详细注释

我们重新回到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,这样主窗体就会充满整个屏幕了,来一个简单截图,啥也没,呵呵。

转载于:https://www.cnblogs.com/Clingingboy/archive/2009/11/14/1603160.html

魅族m8开发 step by step(1)(让程序跑起来)相关推荐

  1. 魅族M8开发初识及一点思考

    近日比较寂寞,公司的开发任务也比较轻松.于是向同学低价买了台2手魅族M8玩玩,初次接触惊叹于M8惊艳的电容触摸屏,感觉比Iphone的还好点,这就激起了我对研究这款机器的兴趣.下面就是我这几天研究的心 ...

  2. ActionScript 3.0 Step By Step系列(五):走在面向对象开发的路上,以类为基础去思考编程问题...

    面向对象的程序设计(Object-Oriented Programming,简记为OOP)是一种功能非常强大的编程方法,立意于创建软件重用代码,以类为基础去思考编程问题. ActionScript 3 ...

  3. ActionScript 3.0 Step By Step系列(四):来自面向对象开发之前的呐喊:“学会写可重用的代码”...

    增强代码的可重用能力,从创建可重用的代码开始,可重用的代码则是通过从现有代码中重构加以封装,使其成为功能单一的可复用代码块.这句话笼统点说便是"封装"或"抽象" ...

  4. C++开发WPF,Step by Step

    C++开发WPF,Step by Step 示例代码 使用C++来开发WPF,主要是如何在MFC(Win32)的窗口中Host WPF的Page.下面我就做个详细的介绍. 一.创建工程, 由于MFC的 ...

  5. 为魅族M8手机开发的围棋打谱软件(M8WeiqiPu)发布0.1版

    M8围棋谱(M8WeiqiPu) v0.1 为魅族M8手机开发的围棋打谱软件,还在开发过程中,目前功能不全,但基本功能可用.现在仅支持SGF格式的围棋棋谱. 可到魅族官方论坛下载:http://bbs ...

  6. 为魅族M8手机开发的围棋打谱软件(M8WeiqiPu)发布0.8版,多图

    <M8围棋谱>v0.8,是我(liigo)为魅族M8手机开发的围棋打谱软件,还在开发过程中,目前功能不全,但基本功能可用. 基本功能:打开并解析SGF棋谱,单步向前向后,落子音效,自动提子 ...

  7. 为魅族M8手机开发软件《M8空中警报》(M8AirAlarm) ,已开源

    <M8空中警报>(M8AirAlarm) v1.0 作者:liigo, 2009/5, http://blog.csdn.net/liigo 当您的魅族M8手机不慎跌落时,本软件将在M8落 ...

  8. 【Step By Step】将Dotnet Core部署到Docker下

    一.使用.Net Core构建WebAPI并访问Docker中的Mysql数据库 这个的过程大概与我之前的文章<尝试.Net Core-使用.Net Core + Entity FrameWor ...

  9. NHibernate Step by Step:序篇 (转)

    原文出处:http://www.cnblogs.com/abluedog/archive/2006/04/15/375676.html 原文作者:abluedog 很久以前,你可能习惯了connect ...

最新文章

  1. FMDatabase常见的几个操作
  2. Why Did the Cow Cross the Road III(树状数组)
  3. golang 数组 切片 下标范围
  4. Play框架的用户验证。
  5. 2019年最流行的10个前端框架
  6. 小时级的进度监控工具
  7. LSTM(序列标注,自实现)
  8. python爬虫自动更换ip_Python 爬虫使用动态切换ip防止封杀
  9. 泰坦尼克号数据集_机器学习入门—泰坦尼克号生存率预测
  10. linux IP DNS 配置
  11. 中国移动老功臣退休致辞:工作结束了 人生没结束
  12. Day08- team、iptables、firewall
  13. mybatis 遍历数组_Mybatis中别名、插件与数据源配置
  14. 股票市场的本质是为优质企业提供融资的平台
  15. c中的结构体嵌套问题_C中的结构
  16. absolute之后居中宽度自适应
  17. VassistX番茄助手使用技巧
  18. win10+VS2013+OPENCV如何配置于仕琪人脸检测算法
  19. 百词斩不复习_百词斩是不是真的好用?
  20. Flowchat 流程图在Markdown中的使用(不同编辑器有细微区别)

热门文章

  1. 试题7 算法训练 P0505(最右边的那个非0的数字)
  2. Codeforces Round #383 (Div. 1): D. Arpa’s letter-marked tree…(dsu on tree+状压)
  3. [深度学习] 深度学习常见概念
  4. jQuery form插件使用详解
  5. xilinx sdk在Debug模式下根据地址在内存里观察值
  6. 电磁场中场点和源点及▽(R)▽(1/R)▽.▽(1/R)
  7. 详解汇编里的单步中断-T使用寄存器标志位TF和IF
  8. Crackme019
  9. Python库安装注意事项
  10. Software--Architecture--SOA Factory