MZFC应用程序的基础要点
MZFC应用是使用C++语言编写的程序,并使用Microsoft Visual Studio 2005(或更高版本)编译链接,可包含代码及资源文件;
程序编译时需要引用<mzfc_inc.h>头文件,链接时需要引用mzfc.lib文件。
一个MZFC窗口应用程序的结构一般如下
Application (CMzApp), Window (CMzWndEx), Controls (UiWin)
如图:![]()
如何建立一个MZFC应用程序
一、创建项目
1、打开VS2005,选择[文件]-[新建]-[项目]
2、选择下一步
3、平台选择:选择M8SDK![]()
4、下一步后选择Windows 应用程序![]()
5、点击完成后,VS2005自动生成一个程序框架。
二、建立MZFC应用程序
要想使用Meizu提供的界面库,我们不使用VS2005自动生成的程序框架,删除M8Sample.cpp的所有内容,拷贝下面的示例代码,粘贴到M8Sample.cpp中。
建立一个MZFC应用程序通常需要以下2个步骤:
现在,我们来写一个简单的MZFC应用程序。
在程序的主窗口创建一个按钮控件,并初始化为显示“Exit!”文字的绿色按钮。
m_btn.SetButtonType(MZC_BUTTON_GREEN); // 设置按钮类型:绿色按钮 m_btn.SetPos(100,250,280,100); // 设置控件在位置 m_btn.SetID(MZ_IDC_TESTBTN1); // 设置ID m_btn.SetText(L"Exit!"); // 设置控件的显示文本 m_btn.SetTextColor(RGB(255,255,255)); // 设置控件文本的颜色 AddUiWin(&m_btn); // 把控件添加到窗口中
然后,重载命令消息的处理函数 CMzWndEx::OnMzCommand(WPARAM wParam, LPARAM lParam) 对控件的消息进行处理。
virtual void OnMzCommand(WPARAM wParam, LPARAM lParam) { UINT_PTR id = LOWORD(wParam); switch(id) { case MZ_IDC_TESTBTN1: // 响应按钮命令 { if(1 == MzMessageBoxEx(m_hWnd, L"Really want to exit?", L"Exit", MB_YESNO, false)) PostQuitMessage(0); // 退出程序 } break; } }
完整的示例代码如下:
//包含MZFC库的头文件 #include <mzfc_inc.h> // 按钮控件的ID #define MZ_IDC_TESTBTN1 101 // 从 CMzWndEx 派生的主窗口类 class CSampleMainWnd: public CMzWndEx { MZ_DECLARE_DYNAMIC(CSampleMainWnd); public: // 窗口中的按钮控件 UiButton m_btn; 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"Exit!"); m_btn.SetTextColor(RGB(255,255,255)); // 把控件添加到窗口中 AddUiWin(&m_btn); return TRUE; } // 重载命令消息的处理函数 virtual void OnMzCommand(WPARAM wParam, LPARAM lParam) { UINT_PTR id = LOWORD(wParam); switch(id) { case MZ_IDC_TESTBTN1: // 响应按钮命令 { if(1 == MzMessageBoxEx(m_hWnd, L"Really want to exit?", L"Exit", MB_YESNO, false)) PostQuitMessage(0); } break; } } }; MZ_IMPLEMENT_DYNAMIC(CSampleMainWnd) // 从 CMzApp 派生的应用程序类 class MyApp: public CMzApp { public: // 应用程序的主窗口 CSampleMainWnd *m_pMainWnd; ~MyApp() { // 析构时删除主窗口指针 if(m_pMainWnd!=0) delete m_pMainWnd; } // 应用程序的初始化 virtual BOOL Init() { // 初始化 COM 组件 CoInitializeEx(0, COINIT_MULTITHREADED); // 创建主窗口并显示 RECT rcWork = MzGetWorkArea(); m_pMainWnd = new CSampleMainWnd; m_pMainWnd->Create(rcWork.left,rcWork.top,RECT_WIDTH(rcWork),RECT_HEIGHT(rcWork), 0, 0, 0); m_pMainWnd->Show(); // 成功则返回TRUE return TRUE; } }; // 全局的应用程序对象 MyApp theApp;
三、运行程序
1、配置项目设置
2、使用MZFC的静态连接库
随着固件版本的不断升级,MZFC 中某些函数接口可能会改变,如果使用动态链接mzfc.dll,会造成使用旧版SDK 编译生成的应用程序无法在新版的固件中正确运行,为 了解决这一问题,开发者可以选择静态链接MZFC 库:
3、编译生成应用程序
四、调试程序
1、使用模拟器调试应用程序
2、使用M8调试应用程序