魅族m8开发 step by step(2)(hello world)
2009-11-14 23:27 Clingingboy 阅读(526) 评论(0) 编辑 收藏 举报接上篇,每个程序都会有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; }
也截个图,还是挺漂亮的:)
二.为窗体添加和删除控件
现在的UI框架,若无控件怎么算是一个框架呢,不过没有像开发WinForm这么幸福,无法拖拉.只能通过代码来.
MZFC的控件基类为UiWin,如WinForm的Control类一般,不要期待MZFC能提供如微软那么多的控件给你,只有基本的,连checkbox,radiobutton等都没有,基本控件都很简单很弱,还好挺好看的,只能期待SDK的更新了
窗体定义了两个方法来添加和删除控件,记得参数是指针类型
三.添加一个按钮控件
下面来测试往窗体中添加一个按钮
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添加到窗体中.再次截图
四.事件处理
放按钮不是摆设的,点下去是要做事情的,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能被我讲成这样:)