MPF源码分析之资源文件加载
本文将分析MPF客户端框架中资源文件相关的源代码,以github包中提供的qq界面demo作为
起点,一步一步分析程序的运行原理;
主程序很简单,代码如下:
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
suic::InitUIWgxs(true);
suic::InitUILogLevel(suic::LogLevel::Trace);
suic::BuildFactory::Ins()->Add(ChatTextBox::RTTIType());
suic::WindowPtr wnd(new MainWindow());
try
{
// 加载资源文件
suic::ThemeOp::SetSystemTheme("default.sres", "wr");
suic::String strApp = _T("QQ/Layout/Application.xml");
// 载入布局资源并运行系统
suic::Application::RunApp(wnd.get(), strApp.c_str());
}
catch(suic::Exception& e)
{
suic::String err = e.GetErrorMsg();
}
wnd = NULL;
suic::ExitUIWgx();
return 0;
}
先看框架的初始化函数suic::InitUIWgxs(true),函数实现代码如下:
SUIWGX_API bool __stdcall InitUIWgxs(bool initWgx)
{
if (!s_g_init)
{
suic::BuildFactory::Ins()->RegisterAddType(new WgxAddType());
suic::InitUICore();
::OleInitialize(NULL);
//suic::BuildFactory::Ins()->Add();
suic::InfoBox::StaticInit();
if (initWgx)
{
InitUIControls();
}
s_g_init = true;
}
return true;
}
转载于:https://www.cnblogs.com/skiing886/p/8003875.html
MPF源码分析之资源文件加载相关推荐
- Spring Ioc源码分析 之 Bean的加载(7):初始化
接着分析doCreateBean()的第6步--初始化 bean 实例对象 首先回顾下CreateBean的主流程: 如果是单例模式,从factoryBeanInstanceCache 缓存中获取Be ...
- Spring Ioc源码分析 之 Bean的加载(6):属性填充(populateBean())
"属性填充",也是在populateBean()方法中. 首先回顾下CreateBean的主流程: 如果是单例模式,从factoryBeanInstanceCache 缓存中获取B ...
- LuaStudio源码分析2资源文件
资源文件被放在ResDll项目里单独编译出dll的,LuaStudio工程中的资源在编译时由于使用了宏并不包含实际的任何资源, 因此编译出的LuaStudio.exe图标是一个空白图标,这当然并不耽误 ...
- Myabtis源码分析五-Mybatis配置加载完全图解,建造者模式的使用,涵盖Java各种技术栈
private SqlSessionFactory sqlSessionFactory; @Before public void init() throws IOException { //----- ...
- Spring Ioc源码分析 之 Bean的加载(4):实例化Bean(createBeanInstance()方法)
实例化 Bean 在doCreateBean()代码 <2> 处,有一行代码instanceWrapper = createBeanInstance(beanName, mbd, args ...
- nhibernate源码分析之六: Criteria数据加载
ICriteria是使用Expression进行数据加载的接口, 提供了设置表达式(Expression), 排序方式(Order), 分页记录等操作. 它使用一种类似于SQL语句where表达表的方 ...
- Spring Ioc源码分析 之 Bean的加载(5):循环依赖处理(populateBean())
首先回顾下Bean加载的主流程: 1.如果是单例模式,从factoryBeanInstanceCache 缓存中获取BeanWrapper 实例对象并删除缓存 2.调用 createBeanInsta ...
- 基于TCP网络通信的自动升级程序源码分析-客户端接收文件
升级程序客户端接收文件 /// <summary>/// 文件数据缓存 索引是 ConnectionInfo对象 数据包的顺序号 值是数据/// </summary>Dicti ...
- 直播app系统源码通过CSS液体实现加载动画
直播app系统源码通过CSS液体实现加载动画 首先我们要让元素能够旋转起来,可以使用transform中的rotate进行2D的360deg旋转. 紧接着我们可以通过CSS变量(–开头的形式)结合an ...
最新文章
- 剑指 offer set 22 数组中的逆序数
- 计算机对英语口语考试,计算机辅助高考英语口语考试中题型的设计与交际能力的实现.pdf...
- CCNA 2 chapter
- MATLAB实战应用案例:欧拉法、改进欧拉法、ode45求解微分方程实例
- PPT 下载 | 神策数据徐美玲:数据分析之产品应用实践
- 采用redis+ThreadLocal获取全局的登录用户信息(二)增加token快失效时刷新
- java重写6,java重写equals()方法和hashCode()方法
- Python 基础课程第十一天
- SWPUACM第二次周赛
- Ubuntu 14.04 开机手动开启numlock led
- Java项目(一):家庭收支记账软件
- java mat转成二维数组_opencv二维数组转mat
- 解决Office安装错误代码1024:安装程序无法打开注册表项UNKNOWN\Components\
- 网络概念与常见问题全解析(网络面试题 学会这篇 基本都能答上来)
- 基于激光投影技术的虚拟键盘
- this.$nextTick
- 升级cuda10.2+pytorch+cudnn
- 影视行业舆情监测方案
- ReentrantLock解锁流程
- Linux 下进行服务器间网络测速
热门文章
- 使用Ubuntu+qemu模拟器搭建arm运行环境
- 微信 Mac版Beta 3.0.0.1内测——朋友圈功能已上线
- 2018国庆第四场个人赛
- 写一个 价格变动的CGE模型
- Java 根据IP地址获取城市(ip2region)
- 已解决:mysql报错> 1067 - Invalid default value for ‘comment_date‘ [DTF] 2> wp_links: Getting
- Ubuntu删除u盘的文件后空间不释放
- 基于微信的智能家电控制系统
- Elasticsearch管理工具
- 计算机控制音响阵列,HIFIDIY论坛