int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR /*lpstrCmdLine*/, int /*nCmdShow*/) { //HRESULT hRes = CoInitialize(NULL); OleInitialize(NULL); //DUIASSERT(SUCCEEDED(hRes)); // CLSID iecls=CLSID_InternetExplorer; // IUnknown *pwb; // HRESULT hres = CoCreateInstance(iecls, NULL, // CLSCTX_LOCAL_SERVER, IID_IUnknown, (void **)&pwb); TCHAR szCurrentDir[MAX_PATH+1]; memset( szCurrentDir, 0, sizeof(szCurrentDir) ); GetModuleFileName( NULL, szCurrentDir, MAX_PATH ); LPTSTR lpInsertPos = _tcsrchr( szCurrentDir, _T('\\') ); *lpInsertPos = _T('\0'); DuiSystem duiSystem(hInstance); DefaultLogger loger; loger.setLogFilename(CDuiStringT(szCurrentDir)+_T("\\duiengine.log")); duiSystem.SetLogger(&loger); duiSystem.logEvent(_T("demo started")); #ifdef __DUIFILE_RC //从文件夹加载皮肤,指定皮肤位置 _tcscat( szCurrentDir, _T("\\..\\skin") ); DuiResProviderFiles *pResFiles=new DuiResProviderFiles; if(!pResFiles->Init(szCurrentDir)) { DUIASSERT(0); return 1; } duiSystem.SetResProvider(pResFiles); #else //从资源加载皮肤 duiSystem.SetResProvider(new DuiResProviderPE(hInstance)); #endif BOOL bOK=duiSystem.Init(_T("IDR_DUI_INIT")); //初始化DUI系统,原来的系统初始化方式依然可以使用。 duiSystem.SetMsgBoxTemplate(_T("IDR_DUI_MSGBOX")); int nRet = 0; // BLOCK: Run application { CMainDlg dlgMain; nRet = dlgMain.DoModal(); } duiSystem.logEvent(_T("demo end")); delete duiSystem.GetResProvider(); // CoUninitialize(); OleUninitialize(); return nRet; }
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR /*lpstrCmdLine*/, int /*nCmdShow*/) { CScintillaModule sciMod; if(!sciMod) return -1; HRESULT hRes = CoInitialize(NULL); DUIASSERT(SUCCEEDED(hRes)); TCHAR szCurrentDir[MAX_PATH+1]; memset( szCurrentDir, 0, sizeof(szCurrentDir) ); GetModuleFileName( NULL, szCurrentDir, MAX_PATH ); LPTSTR lpInsertPos = _tcsrchr( szCurrentDir, _T('\\') ); *lpInsertPos = _T('\0'); DuiSystem duiSystem(hInstance); DefaultLogger loger; loger.setLogFilename(CDuiStringT(szCurrentDir)+_T("\\duiengine.log")); duiSystem.SetLogger(&loger); duiSystem.logEvent(_T("demo started")); #ifdef __DUIFILE_RC //从文件夹加载皮肤,指定皮肤位置 _tcscat( szCurrentDir, _T("\\..\\skin") ); DuiResProviderFiles *pResFiles=new DuiResProviderFiles; if(!pResFiles->Init(szCurrentDir)) { DUIASSERT(0); return 1; } duiSystem.SetResProvider(pResFiles); #else //从资源加载皮肤 duiSystem.SetResProvider(new DuiResProviderPE(hInstance)); #endif BOOL bOK=duiSystem.Init(_T("IDR_DUI_INIT")); //初始化DUI系统,原来的系统初始化方式依然可以使用。 duiSystem.SetMsgBoxTemplate(_T("IDR_DUI_MSGBOX")); //注册图片预览控件 RegSkinViewClass(); DuiWindowFactoryManager::getSingleton().RegisterFactory(TplDuiWindowFactory<CDuiColorPicker>()); int nRet = 0; // BLOCK: Run application { CMainDlg dlgMain; nRet = dlgMain.DoModal(); } duiSystem.logEvent(_T("demo end")); delete duiSystem.GetResProvider(); CoUninitialize(); return nRet; }
void CDuiMaskEdit::InsertCharAt(int nPos, TCHAR nChar) { DUIASSERT(PosInRange(nPos)); if (!PosInRange(nPos)) return; CDuiStringT strMaskedText = CDuiStringT(nChar) + GetMaskedText(nPos); SetMaskedText(strMaskedText, nPos, FALSE); }
BOOL DuiStringPool::Init( pugi::xml_node xmlNode ) { if (strcmp(xmlNode.name(), "string") != 0) { DUIASSERT(FALSE); return FALSE; } UINT uStringID = 0; for (pugi::xml_node xmlStr=xmlNode.child("s"); xmlStr; xmlStr=xmlStr.next_sibling("s")) { uStringID=xmlStr.attribute("id").as_int(-1); if(uStringID==-1) continue; CDuiStringA str=xmlStr.text().get(); if(str.IsEmpty()) str=xmlStr.attribute("text").value(); AddKeyObject(uStringID,CDuiStringT(DUI_CA2T(str, CP_UTF8))); } return TRUE; }
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR /*lpstrCmdLine*/, int /*nCmdShow*/) { HRESULT hRes = OleInitialize(NULL); DUIASSERT(SUCCEEDED(hRes)); #if !defined(_WIN64) //<--资源类型选择 DuiSystem * pDuiModeSel = new DuiSystem(hInstance); DuiSystem::getSingletonPtr(); DuiResProviderZip *pResModeSel= new DuiResProviderZip; pResModeSel->Init(hInstance,MAKEINTRESOURCE(IDR_ZIP_MODESEL),_T("ZIP")); pDuiModeSel->SetResProvider(pResModeSel); DuiSkinPool::getSingleton().Init(_T("xml_skin")); // 加载皮肤,为了不依赖于程序中的宏定义,此处的ID采用硬编码 DuiStylePool::getSingleton().Init(_T("xml_style")); // 加载风格 DuiCSS::getSingleton().Init(_T("xml_defattr"));//加载类默认属性 int nMode=-1; { CResModeSelDlg dlgModeSel; if(IDOK==dlgModeSel.DoModal()) { nMode=dlgModeSel.m_nMode; } } delete pResModeSel; delete pDuiModeSel; if(nMode==-1) return -1; #else int nMode=0; //64位时直接从文件加载资源 #endif //资源类型选择完成 --> DuiSystem *pDuiSystem=new DuiSystem(hInstance); //生成控件类厂并注册到系统 DuiWindowFactoryManager::getSingleton().RegisterFactory(TplDuiWindowFactory<CDuiListBox2>(),true); //生成皮肤类厂并注册到系统 DuiSkinFactoryManager::getSingleton().RegisterFactory(TplSkinFactory<CDuiVScrollBarSkin>()); DuiSkinFactoryManager::getSingleton().RegisterFactory(TplSkinFactory<CDuiSkinGif>()); TCHAR szCurrentDir[MAX_PATH]; memset( szCurrentDir, 0, sizeof(szCurrentDir) ); GetModuleFileName( NULL, szCurrentDir, sizeof(szCurrentDir) ); LPTSTR lpInsertPos = _tcsrchr( szCurrentDir, _T('\\') ); *lpInsertPos = _T('\0'); DefaultLogger loger; loger.setLogFilename(CDuiStringT(szCurrentDir)+_T("\\dui-demo.log")); pDuiSystem->SetLogger(&loger); //加载ID名称对照表 pDuiSystem->InitName2ID(MAKEINTRESOURCE(IDR_NAME2ID),_T("XML2")); //根据选择的资源加载模式生成resprovider switch(nMode) { case 0://load from files { _tcscat( szCurrentDir, _T("\\..\\dui_demo") ); DuiResProviderFiles *pResFiles=new DuiResProviderFiles; if(!pResFiles->Init(szCurrentDir)) { DUIASSERT(0); return 1; } pDuiSystem->SetResProvider(pResFiles); pDuiSystem->logEvent(_T("load resource from files")); } break; case 1://load from PE { pDuiSystem->SetResProvider(new DuiResProviderPE(hInstance)); pDuiSystem->logEvent(_T("load resource from exe")); } break; default://load form ZIP { #if !defined(_WIN64) //从ZIP文件加载皮肤 DuiResProviderZip *zipSkin=new DuiResProviderZip; CDuiStringT strZip=CDuiStringT(szCurrentDir)+_T("\\def_skin.zip"); if(!zipSkin->Init(strZip)) { DUIASSERT(0); return 1; } pDuiSystem->SetResProvider(zipSkin); pDuiSystem->logEvent(_T("load resource from zip")); #else return -1; #endif; } break; } // 2013前版本使用的系统初始化代码,新版本使用DuiSystem::Init来处理。 // 以下 Load xx 的语句是必须的,否则皮肤将不能显示。这部分资源属性皮肤级别,不同的皮肤可以有不同的定义 // BOOL bOK=DuiStringPool::getSingleton().Init(IDR_DUI_STRING_DEF); // 加载字符串 // DuiFontPool::getSingleton().SetDefaultFont(DuiStringPool::getSingleton().Get(IDS_APP_FONT), -12); // 设置字体,必须在style加载前设置。 // bOK=DuiSkinPool::getSingleton().Init(IDR_DUI_SKIN_DEF); // 加载皮肤 // bOK=DuiStylePool::getSingleton().Init(IDR_DUI_STYLE_DEF); // 加载风格 // bOK=DuiCSS::getSingleton().Init(IDR_DUI_OBJATTR_DEF);//加载类默认属性 BOOL bOK=pDuiSystem->Init(_T("IDR_DUI_INIT")); //初始化DUI系统,原来的系统初始化方式依然可以使用。 pDuiSystem->SetMsgBoxTemplate(_T("IDR_DUI_MSGBOX")); #ifdef LUA_TEST CLuaScriptModule scriptLua; scriptLua.executeScriptFile("..\\dui_demo\\lua\\test.lua"); pDuiSystem->SetScriptModule(&scriptLua); #endif CMenuWndHook::InstallHook(hInstance,"skin_menuborder"); int nRet = 0; // BLOCK: Run application { pDuiSystem->logEvent(_T("demo started")); CMainDlg dlgMain; nRet = dlgMain.DoModal(); pDuiSystem->logEvent(_T("demo end")); } delete pDuiSystem->GetResProvider(); //释放资源 CMenuWndHook::UnInstallHook(); DuiSkinPool::getSingleton().RemoveAll();//以DLL方式使用DuiEngine时,使用了自定义皮肤类型时需要先删除皮肤池才能正常释放皮肤类厂。 //从系统中反注册控件及皮肤类厂并删除类厂对象 DuiWindowFactoryManager::getSingleton().UnregisterFactory(CDuiListBox2::GetClassName()); DuiSkinFactoryManager::getSingleton().UnregisterFactory(CDuiSkinGif::GetClassName()); delete pDuiSystem; OleUninitialize(); return nRet; }