duilib程序运行流程(1)
来源:互联网 发布:互盾数据恢复注册机 编辑:程序博客网 时间:2024/05/17 23:21
本人最近在学习duilibUI开发,就目前还是对duilib开发属于门外汉类型,不过就这几天的学习想做过小小的总结-----关于duilib程序运行的主要流程是怎么样的。
主函数(借鉴 Alberl所写的duilib教学入门)
class CDuiFrameWnd : public WindowImplBase
{
public:
virtual LPCTSTR GetWindowClassName() const { return _T("DUIMainFram"); }
virtual CDuiString GetSkinFile() { return _T("duilib.xml"); }
virtual CDuiString GetSkinFolder() { return _T(""); }
};
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
CPaintManagerUI::SetInstance(hInstance);
CDuiFrameWnd duiFrame;
duiFrame.Create(NULL, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
duiFrame.CenterWindow();
duiFrame.ShowModal();
return 0;
}
1,CPaintManagerUI::SetInstance(hInstance);
首先通过CPaintManagerUI类的SetInstance()函数保存应用程序的实例句柄hInstance于CPaintManagerUI这个类的成员变量m_hInstance
2,duiFrame.Create(NULL, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
用来创建一个窗体,这个函数其实是调用CWindowWnd类的Create函数,其实这个函数相当于win32应用程序的窗口创建
内部函数:
if( GetSuperClassName() != NULL && !RegisterSuperclass() ) return NULL;
if( GetSuperClassName() == NULL && !RegisterWindowClass() ) return NULL;
m_hWnd = ::CreateWindowEx(dwExStyle, GetWindowClassName(), pstrName, dwStyle, x, y, cx, cy, hwndParent, hMenu, CPaintManagerUI::GetInstance(), this);
ASSERT(m_hWnd!=NULL);
return m_hWnd;
3.duiFrame.ShowModal();将窗体显示
哪他是怎么将xml加载进来呢???
其关键就是CreateWindowEx()这个函数参数会发送一个WM_CREATE消息,而duilib一大功能就是拦截这个消息,然后调用WindowImplBase::OnCreate()函数,而这个函数就是用来加载xml的,通过virtual CDuiString GetSkinFile() { return _T("duilib.xml"); }和virtual CDuiString GetSkinFolder(){ return _T(""); }这两个函数获取xml路径,调用
CDialogBuilder类的Create函数去加载
- duilib程序运行流程(1)
- duilib学习(一)第一duilib程序
- duilib : 改变资源类型,加快程序运行速度.
- Java程序运行流程
- iOS程序运行流程
- iOS程序运行流程
- Iphone程序运行流程
- MapReduce程序运行流程
- caffe程序运行流程
- C++学习笔记1(Windows程序运行原理及程序编写流程)
- 1Windows程序运行原理及程序编写流程
- duilib 消息流程
- Duilib 窗口流程
- duilib基本流程
- Scribble 绘图程序运行流程
- iPhone程序运行流程浅谈
- iPhone程序运行流程浅谈
- ffplay程序运行流程分析
- VS颜色和字体配置文件
- 基类/子类 结构用途
- 显示自定的xib设计非纯代码的UITableViewCell
- 选择ARM7还是cortex-M3?
- 开始行动!
- duilib程序运行流程(1)
- Linux下安装使用Memcached
- 设置eclipse编译错误加下划线
- android 调用系统中分享功能
- 网络扫描工具Nmap使用教程(1)
- 密码输入框 底下显示的文字方法
- HttpWebRequest的GetRespons偶尔超时、死掉的原因及解决办法
- 关于内核配置选项中没有yaffs2这个选项问题的解决方案
- 高性能服务器架构