duilib库自己现在用的蛮舒服的,全部的代码自己也看几遍,对自己开发UI帮助蛮多。duilib一个小巧的directui库,基本满足能大部分开发。虽然有一些BUG,但不影响开发,只要自己明白的他的库原理其他就容易了。
自己开发当中时候为了使模块更加模块话,我直接把界面和业务封装在一个DLL里面,资源都放在压缩包里面并做为DLL的资源。对外只提供接口,就算需求变化了,要修改界面,但对外面来说,接口不变,他们什么都知道,这样降低耦合性。但项目开发当中发现我启动一个用DUILIB模块界面后,前面界面关闭不关闭后面你要启动另一个DUILIB写的DLL里面的界面,你会发现根本启动不了,过了一会就调试一个ASSERT(pRoot) 的诊断报错。我觉得很奇怪,我以前用MFC这样开发时候没有发现这样的问题。觉得一点的不科学。后面想到一个进程公用一个DLL,一个进程中内存是一样的。所以猜测用了全部变量。
自己后来分析Core里面 CPaintManagerUI ,里面有大量的类的静态变量,显然对应CPaintManagerUI 所有的实例是公用的。
static HINSTANCE m_hInstance;
static HINSTANCE m_hResourceInstance;
static CDuiString m_pStrResourcePath;
static CDuiString m_pStrResourceZip;
static bool m_bCachedResourceZip;
static HANDLE m_hR