本文将分析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源码分析之资源文件加载相关推荐

  1. Spring Ioc源码分析 之 Bean的加载(7):初始化

    接着分析doCreateBean()的第6步--初始化 bean 实例对象 首先回顾下CreateBean的主流程: 如果是单例模式,从factoryBeanInstanceCache 缓存中获取Be ...

  2. Spring Ioc源码分析 之 Bean的加载(6):属性填充(populateBean())

    "属性填充",也是在populateBean()方法中. 首先回顾下CreateBean的主流程: 如果是单例模式,从factoryBeanInstanceCache 缓存中获取B ...

  3. LuaStudio源码分析2资源文件

    资源文件被放在ResDll项目里单独编译出dll的,LuaStudio工程中的资源在编译时由于使用了宏并不包含实际的任何资源, 因此编译出的LuaStudio.exe图标是一个空白图标,这当然并不耽误 ...

  4. Myabtis源码分析五-Mybatis配置加载完全图解,建造者模式的使用,涵盖Java各种技术栈

    private SqlSessionFactory sqlSessionFactory; @Before public void init() throws IOException { //----- ...

  5. Spring Ioc源码分析 之 Bean的加载(4):实例化Bean(createBeanInstance()方法)

    实例化 Bean 在doCreateBean()代码 <2> 处,有一行代码instanceWrapper = createBeanInstance(beanName, mbd, args ...

  6. nhibernate源码分析之六: Criteria数据加载

    ICriteria是使用Expression进行数据加载的接口, 提供了设置表达式(Expression), 排序方式(Order), 分页记录等操作. 它使用一种类似于SQL语句where表达表的方 ...

  7. Spring Ioc源码分析 之 Bean的加载(5):循环依赖处理(populateBean())

    首先回顾下Bean加载的主流程: 1.如果是单例模式,从factoryBeanInstanceCache 缓存中获取BeanWrapper 实例对象并删除缓存 2.调用 createBeanInsta ...

  8. 基于TCP网络通信的自动升级程序源码分析-客户端接收文件

    升级程序客户端接收文件 /// <summary>/// 文件数据缓存 索引是 ConnectionInfo对象 数据包的顺序号 值是数据/// </summary>Dicti ...

  9. 直播app系统源码通过CSS液体实现加载动画

    直播app系统源码通过CSS液体实现加载动画 首先我们要让元素能够旋转起来,可以使用transform中的rotate进行2D的360deg旋转. 紧接着我们可以通过CSS变量(–开头的形式)结合an ...

最新文章

  1. 剑指 offer set 22 数组中的逆序数
  2. 计算机对英语口语考试,计算机辅助高考英语口语考试中题型的设计与交际能力的实现.pdf...
  3. CCNA 2 chapter
  4. MATLAB实战应用案例:欧拉法、改进欧拉法、ode45求解微分方程实例
  5. PPT 下载 | 神策数据徐美玲:数据分析之产品应用实践
  6. 采用redis+ThreadLocal获取全局的登录用户信息(二)增加token快失效时刷新
  7. java重写6,java重写equals()方法和hashCode()方法
  8. Python 基础课程第十一天
  9. SWPUACM第二次周赛
  10. Ubuntu 14.04 开机手动开启numlock led
  11. Java项目(一):家庭收支记账软件
  12. java mat转成二维数组_opencv二维数组转mat
  13. 解决Office安装错误代码1024:安装程序无法打开注册表项UNKNOWN\Components\
  14. 网络概念与常见问题全解析(网络面试题 学会这篇 基本都能答上来)
  15. 基于激光投影技术的虚拟键盘
  16. this.$nextTick
  17. 升级cuda10.2+pytorch+cudnn
  18. 影视行业舆情监测方案
  19. ReentrantLock解锁流程
  20. Linux 下进行服务器间网络测速

热门文章

  1. 使用Ubuntu+qemu模拟器搭建arm运行环境
  2. 微信 Mac版Beta 3.0.0.1内测——朋友圈功能已上线
  3. 2018国庆第四场个人赛
  4. 写一个 价格变动的CGE模型
  5. Java 根据IP地址获取城市(ip2region)
  6. 已解决:mysql报错> 1067 - Invalid default value for ‘comment_date‘ [DTF] 2> wp_links: Getting
  7. Ubuntu删除u盘的文件后空间不释放
  8. 基于微信的智能家电控制系统
  9. Elasticsearch管理工具
  10. 计算机控制音响阵列,HIFIDIY论坛