本文整理汇总了C++中CAutoRefPtr类的典型用法代码示例。如果您正苦于以下问题:C++ CAutoRefPtr类的具体用法?C++ CAutoRefPtr怎么用?C++ CAutoRefPtr使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CAutoRefPtr类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SASSERT
int SImgX_WIC::LoadFromMemory(void *pBuf,size_t bufLen )
{
SASSERT(m_pImgArray == NULL);
IWICImagingFactory* factory = SImgDecoderFactory_WIC::s_wicImgFactory;
CAutoRefPtr<IWICBitmapDecoder> decoder;
CAutoRefPtr<IWICStream> stream ;
if(FAILED(factory->CreateStream(&stream))) return 0;
if(FAILED(stream->InitializeFromMemory((BYTE*)pBuf,(DWORD)bufLen))) return 0;
if(FAILED(factory->CreateDecoderFromStream(stream,NULL,WICDecodeMetadataCacheOnDemand,&decoder))) return 0;
return _DoDecode(decoder);
}
示例2: BOOL
HRESULT RichEditOleBase::Draw(
DWORD dwDrawAspect,
LONG lindex,
void *pvAspect,
DVTARGETDEVICE *ptd,
HDC hdcTargetDev,
HDC hdcDraw,
LPCRECTL lprcBounds,
LPCRECTL lprcWBounds,
BOOL ( STDMETHODCALLTYPE *pfnContinue )(ULONG_PTR dwContinue),
ULONG_PTR dwContinue)
{
InvertBorder(hdcDraw, (RECT*)lprcBounds);
m_rcObj = (RECT*)lprcBounds;
m_rcObj.InflateRect(-1,-1,-1,-1); // 四周留一个像素给RichEdit画反色框
m_oleWindow.SetOleWindowRect(m_rcObj);
CAutoRefPtr<IRegion> rgn;
GETRENDERFACTORY->CreateRegion(&rgn);
rgn->CombineRect((RECT*)lprcBounds,RGN_AND);
CAutoRefPtr<IRenderTarget> pRT;
GETRENDERFACTORY->CreateRenderTarget(&pRT, m_rcObj.Width(), m_rcObj.Height());
// 画背景
HDC hdc = pRT->GetDC(0);
::BitBlt(hdc, 0, 0, m_rcObj.Width(), m_rcObj.Height(),
hdcDraw, m_rcObj.left, m_rcObj.top,
SRCCOPY);
// 画richedit
m_oleWindow.RedrawRegion(pRT, rgn);
// 贴到目标DC
::BitBlt(hdcDraw, m_rcObj.left, m_rcObj.top, m_rcObj.Width(), m_rcObj.Height(),
hdc, 0, 0,
SRCCOPY);
pRT->ReleaseDC(hdc);
return S_OK;
}
示例3: SASSERT
int SImgX_WIC::_DoDecode( IWICBitmapDecoder * pDecoder )
{
SASSERT(m_uImgCount == 0);
IWICImagingFactory* factory = SImgDecoderFactory_WIC::s_wicImgFactory;
CAutoRefPtr<IWICFormatConverter> converter;
if(FAILED(factory->CreateFormatConverter(&converter)))
return 0;
if(FAILED(pDecoder->GetFrameCount(&m_uImgCount)))
return 0;
m_pImgArray = new SImgFrame_WIC[m_uImgCount];
for(UINT i = 0; i< m_uImgCount ;i++)
{
CAutoRefPtr<IWICBitmapFrameDecode> frame;
if(SUCCEEDED(pDecoder->GetFrame(i,&frame)))
{
// CAutoRefPtr<IWICMetadataQueryReader> pMetaReader;
// pDecoder->GetMetadataQueryReader(&pMetaReader);
// if(pMetaReader)
// {
// PROPVARIANT propValue;
// PropVariantInit(&propValue);
// HRESULT hr=pMetaReader->GetMetadataByName(L"/grctlext/Delay", &propValue);
// if(SUCCEEDED(hr))
// {
// m_pImgArray[i].SetFrameDelay(propValue.intVal);
// }
// PropVariantClear(&propValue);
// }
converter->Initialize(frame,
m_bPremultiplied?GUID_WICPixelFormat32bppPBGRA:GUID_WICPixelFormat32bppBGRA,
WICBitmapDitherTypeNone,NULL,
0.f,WICBitmapPaletteTypeCustom);
CAutoRefPtr<IWICBitmapSource> bmp;
converter->QueryInterface(IID_PPV_ARGS(&bmp));
m_pImgArray[i].SetWICBitmapSource(bmp);
}
}
return m_uImgCount;
}
示例4: initSysResource
bool initSysResource()
{
//加载系统资源
if(hSysResource == 0) return false;
BOOL bLoaded = FALSE;
CAutoRefPtr<IResProvider> sysSesProvider;
CreateResProvider(RES_PE,(IObjRef**)&sysSesProvider);
bLoaded = sysSesProvider->Init((WPARAM)hSysResource,0);
if(bLoaded == TRUE)
{
pSouiApp->LoadSystemNamedResource(sysSesProvider);
//采用hook绘制菜单的边框
CMenuWndHook::InstallHook(hInstance,_T("_skin.sys.menu.border"));
}
return (bLoaded == TRUE);
}
示例5: UpdateScrollInfo
void SScrollText::UpdateScrollInfo(CSize size)
{
CAutoRefPtr<IRenderTarget> pRT;
GETRENDERFACTORY->CreateRenderTarget(&pRT,0,0);
BeforePaintEx(pRT);
SIZE sz;
pRT->MeasureText(m_strText,m_strText.GetLength(),&sz);
if(sz.cx - size.cx>0)
{
m_nScrollWidth = sz.cx;
if (m_nRollType==1)
{
m_nOffset=-size.cx;
}
OnShowWindow(IsVisible(TRUE), 0);
}
else
{
m_nOffset = 0;
m_nScrollWidth = 0;
}
}
示例6: BeforePaint
void SItemPanel::Draw(IRenderTarget *pRT,const CRect & rc)
{
m_style.m_crBg=m_crBk;
if((m_dwState & WndState_Hover) && m_crHover != CR_INVALID) m_style.m_crBg=m_crHover;
if((m_dwState & WndState_Check) && m_crSelBk != CR_INVALID) m_style.m_crBg=m_crSelBk;
//不继承宿主的字体,从系统字体开始
SPainter painter;
BeforePaint(pRT,painter);
CAutoRefPtr<IRegion> rgn;
pRT->GetClipRegion(&rgn);
pRT->OffsetViewportOrg(rc.left,rc.top);
if(rgn)
{
rgn->Offset(-rc.TopLeft());
}
BuildWndTreeZorder();
RedrawRegion(pRT,rgn);
pRT->OffsetViewportOrg(-rc.left,-rc.top);
AfterPaint(pRT,painter);
}
示例7: rc2
void SItemPanel::OnRedraw(const CRect &rc)
{
if(m_pFrmHost->IsUpdateLocked()) return;
CRect rcItem=GetItemRect();
if(!rcItem.IsRectNull() && m_pFrmHost->IsVisible(TRUE))
{
if(m_pItemContainer->IsItemRedrawDelay())
{
CRect rc2(rc);
rc2.OffsetRect(rcItem.TopLeft());
rc2.IntersectRect(rc2,rcItem);
m_pFrmHost->InvalidateRect(rc2);
}else
{
IRenderTarget *pRT=OnGetRenderTarget(rc,OLEDC_PAINTBKGND);
CAutoRefPtr<IRegion> rgn;
GETRENDERFACTORY->CreateRegion(&rgn);
rgn->CombineRect(&rc,RGN_COPY);
RedrawRegion(pRT,rgn);
OnReleaseRenderTarget(pRT,rc,OLEDC_PAINTBKGND);
}
}
}
示例8: _tWinMain
//定义唯一的一个R,UIRES对象,ROBJ_IN_CPP是resource.h中定义的宏。
ROBJ_IN_CPP
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int /*nCmdShow*/)
{
HRESULT hRes = OleInitialize(NULL);
SASSERT(SUCCEEDED(hRes));
int nRet = 0;
SComMgr *pComMgr = new SComMgr;
HMODULE hSci = LoadLibrary(_T("SciLexer.dll"));
if(!hSci){
MessageBox(GetActiveWindow(),_T("Load SciLexer.dll failed! \nCopying third-part/SciLexer/bin/SciLexer.dll to the running folder should resolve the problem!!"),_T("error"),MB_OK|MB_ICONSTOP);
return -1;
}
//将程序的运行路径修改到项目所在目录所在的目录
TCHAR szCurrentDir[MAX_PATH] = { 0 };
GetModuleFileName(NULL, szCurrentDir, sizeof(szCurrentDir));
LPTSTR lpInsertPos = _tcsrchr(szCurrentDir, _T('\\'));
_tcscpy(lpInsertPos + 1, _T("..\\demos\\uieditor\\"));
SetCurrentDirectory(szCurrentDir);
{
BOOL bLoaded=FALSE;
CAutoRefPtr<SOUI::IImgDecoderFactory> pImgDecoderFactory;
CAutoRefPtr<SOUI::IRenderFactory> pRenderFactory;
bLoaded = pComMgr->CreateRender_GDI((IObjRef**)&pRenderFactory); //SRenderFactory_GDI
SASSERT_FMT(bLoaded,_T("load interface [render] failed!"));
bLoaded=pComMgr->CreateImgDecoder((IObjRef**)&pImgDecoderFactory);//SImgDecoderFactory_GDIP
SASSERT_FMT(bLoaded,_T("load interface [%s] failed!"),_T("imgdecoder"));
pRenderFactory->SetImgDecoderFactory(pImgDecoderFactory);//SImgDecoderFactory_GDIP
SApplication *theApp = new SApplication(pRenderFactory, hInstance);
//向app注册自定义类
theApp->RegisterWndFactory(TplSWindowFactory<SMyButton>());
theApp->RegisterWndFactory(TplSWindowFactory<SMoveWnd>());
theApp->RegisterWndFactory(TplSWindowFactory<SFreeMoveWindow>());
theApp->RegisterWndFactory(TplSWindowFactory<SToolbox>());
theApp->RegisterWndFactory(TplSWindowFactory<STurn3dView>());
// extened controls
theApp->RegisterWndFactory(TplSWindowFactory<SChromeTabCtrl>());//注册ChromeTabCtrl
theApp->RegisterWndFactory(TplSWindowFactory<SImageMaskWnd>());//注册SImageMaskWnd
theApp->RegisterWndFactory(TplSWindowFactory<SButtonEx>());
theApp->RegisterWndFactory(TplSWindowFactory<SWindowEx>());
theApp->RegisterWndFactory(TplSWindowFactory<SImRichEdit>());
theApp->RegisterWndFactory(TplSWindowFactory<SImagePlayer>());
theApp->RegisterWndFactory(TplSWindowFactory<SText>());
theApp->RegisterWndFactory(TplSWindowFactory<SImageEx>());
theApp->RegisterWndFactory(TplSWindowFactory<SSplitBar>());
theApp->RegisterWndFactory(TplSWindowFactory<SImageSwitcher>());
theApp->RegisterWndFactory(TplSWindowFactory<STabPage2>());//注册STabPage2
theApp->RegisterWndFactory(TplSWindowFactory<STabCtrl2>());//注册STabCtrl2
theApp->RegisterWndFactory(TplSWindowFactory<SAnimImg>());//注册SAnimImg
theApp->RegisterWndFactory(TplSWindowFactory<SGifPlayer>());//注册gif
theApp->RegisterWindowClass<SListBoxDrop>();
theApp->RegisterWindowClass<CDropWnd>();
theApp->RegisterWndFactory(TplSWindowFactory<SPropertyGrid>());//注册属性表控件
theApp->RegisterWndFactory(TplSWindowFactory<SScrollText>());
theApp->RegisterWndFactory(TplSWindowFactory<SRotateWindow>());
//extened skins
theApp->RegisterSkinFactory(TplSkinFactory<SColorMask>());
theApp->RegisterSkinFactory(TplSkinFactory<SSkinMutiFrameImg>());
theApp->RegisterSkinFactory(TplSkinFactory<SSkinVScrollbar>());
theApp->RegisterSkinFactory(TplSkinFactory<SSkinNewScrollbar>());
theApp->RegisterSkinFactory(TplSkinFactory<SSkinGif>());
theApp->RegisterSkinFactory(TplSkinFactory<SSkinAPNG>());
{
#ifdef _DEBUG
HMODULE hSysRes = LoadLibrary(_T("soui-sys-resourced.dll"));
#else
HMODULE hSysRes = LoadLibrary(_T("soui-sys-resource.dll"));
#endif
CAutoRefPtr<IResProvider> sysResProvider;
CreateResProvider(RES_PE, (IObjRef**)&sysResProvider);
sysResProvider->Init((WPARAM)hSysRes, 0);
theApp->LoadSystemNamedResource(sysResProvider);
FreeLibrary(hSysRes);
}
CAutoRefPtr<IResProvider> pResProvider;
#if (RES_TYPE == 0)
//.........这里部分代码省略.........
示例9: S_CT2A
void SQrCtrl::CreateQrImg( SStringT strContent )
{
CQR_Encode qrEncode;
int nLevel = 3;
int nVersion = 0;
bool bAutoExtent = true;
int nMaskingNo = -1;
SStringA strContentA = S_CT2A(strContent, CP_UTF8);
if (qrEncode.EncodeData(nLevel, nVersion, bAutoExtent, nMaskingNo, strContentA, strContentA.GetLength()))
{
if (m_pSkin == NULL)
{
int qrSize = qrEncode.m_nSymbleSize + (QR_MARGIN * 2);
CAutoRefPtr<IBitmap> bmp;
GETRENDERFACTORY->CreateBitmap(&bmp);
bmp->Init(qrSize, qrSize);
LPDWORD pBits = (LPDWORD)bmp->LockPixelBits();
memset(pBits, 0xFF, qrSize*qrSize * 4);
int nLineWid = qrSize;
LPDWORD pLine = pBits + QR_MARGIN*nLineWid;
for (int i = 0; i < qrEncode.m_nSymbleSize; i++)
{
LPDWORD pLineData = pLine + QR_MARGIN;
for (int j = 0; j < qrEncode.m_nSymbleSize; j++)
{
if (qrEncode.m_byModuleData[i][j])
{
pLineData[j] = RGBA(0, 0, 0, 255);
}
}
pLine += qrSize;
}
bmp->UnlockPixelBits(pBits);
SetImage(bmp);
}
else
{
int qrSize = qrEncode.m_nSymbleSize + 2;
CAutoRefPtr<IBitmap> bmp;
GETRENDERFACTORY->CreateBitmap(&bmp);
SIZE skinSize = m_pSkin->GetSkinSize();
CRect rcWind = GetWindowRect();
bmp->Init(rcWind.Width(), rcWind.Height());
CAutoRefPtr<IBitmap> qrbmp;
GETRENDERFACTORY->CreateBitmap(&qrbmp);
qrbmp->Init(qrSize, qrSize);
LPDWORD pBits = (LPDWORD)qrbmp->LockPixelBits();
memset(pBits, 0x00, qrSize*qrSize * 4);
int nLineWid = qrSize;
LPDWORD pLine = pBits + nLineWid;
for (int i = 0; i < qrEncode.m_nSymbleSize; i++)
{
LPDWORD pLineData = pLine + 1;
for (int j = 0; j < qrEncode.m_nSymbleSize; j++)
{
if (qrEncode.m_byModuleData[i][j])
{
pLineData[j] = RGBA(0xFF, 0xFF, 0xFF, 0xFF);
}
}
pLine += qrSize;
}
qrbmp->UnlockPixelBits(pBits);
MakeCacheApha(m_pSkin, bmp, qrbmp);
SetImage(bmp);
}
}
}
示例10: rc
void SQrCtrl::MakeCacheApha( ISkinObj *pSkin, IBitmap *_pBitCache, IBitmap *_pBitMask )
{
CAutoRefPtr<IRenderTarget> pRTDst;
GETRENDERFACTORY->CreateRenderTarget(&pRTDst, 0, 0);
CAutoRefPtr<IRenderObj> pOldBmp;
pRTDst->SelectObject(_pBitCache, &pOldBmp);
CRect rc(CPoint(0, 0), _pBitCache->Size());
pSkin->Draw(pRTDst, &rc, 0);
CAutoRefPtr<IBitmap> bmp;
GETRENDERFACTORY->CreateBitmap(&bmp);
if (m_QrRect.IsRectEmpty())
{
bmp = _pBitMask;
}
else
{
bmp->Init(m_QrRect.Width(), m_QrRect.Height());
pRTDst->SelectObject(bmp, NULL);
CRect rcSrc(CPoint(0, 0), _pBitMask->Size());
rc = CRect(CPoint(0, 0), bmp->Size());
pRTDst->DrawBitmapEx(rc, _pBitMask, rcSrc, MAKELONG(EM_STRETCH, m_fl));
pRTDst->SelectObject(pOldBmp);
}
int nDesLinePixels = _pBitCache->Width();
int nDesRowPixels = _pBitCache->Height();
int nline = bmp->Height();
int nRow = bmp->Width();
if ((nDesRowPixels < nRow + m_QrRect.top) || (nDesLinePixels < nline + m_QrRect.left))
return;
LPDWORD pBitCache = (LPDWORD)_pBitCache->LockPixelBits();
LPDWORD pBitMask = (LPDWORD)bmp->LockPixelBits();
LPDWORD pDst = pBitCache;
LPDWORD pSrc = pBitMask;
LPDWORD pLine = pDst + m_QrRect.top * nDesLinePixels;
for (int line = 0; line < nline; line++)
{
LPDWORD pLineData = pLine + m_QrRect.left;
for (int row = 0; row < nRow; row++)
{
LPBYTE byAlpha = (LPBYTE)(pSrc + row);
if (byAlpha[3] == 0)
{
LPDWORD pByteAlpha = (pLineData + row);
*pByteAlpha =RGBA(0,0,0,0);
}
}
pSrc += nRow;
pLine += nDesLinePixels;
}
_pBitCache->UnlockPixelBits(pBitCache);
bmp->UnlockPixelBits(pBitMask);
}
示例11: _tWinMain
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR /*lpstrCmdLine*/, int /*nCmdShow*/)
{
HRESULT hRes = OleInitialize(NULL);
SASSERT(SUCCEEDED(hRes));
int nRet = 0;
SComMgr * pComMgr = new SComMgr;
//将程序的运行路径修改到项目所在目录所在的目录
TCHAR szCurrentDir[MAX_PATH]={0};
GetModuleFileName( NULL, szCurrentDir, sizeof(szCurrentDir) );
LPTSTR lpInsertPos = _tcsrchr( szCurrentDir, _T('\\') );
_tcscpy(lpInsertPos+1,_T("\\..\\360"));
//SetCurrentDirectory(szCurrentDir);
{
CAutoRefPtr<SOUI::IImgDecoderFactory> pImgDecoderFactory;
CAutoRefPtr<SOUI::IRenderFactory> pRenderFactory;
pComMgr->CreateRender_GDI((IObjRef**)&pRenderFactory);
pComMgr->CreateImgDecoder((IObjRef**)&pImgDecoderFactory);
pRenderFactory->SetImgDecoderFactory(pImgDecoderFactory);
SApplication *theApp=new SApplication(pRenderFactory,hInstance);
CAutoRefPtr<ITranslatorMgr> trans;
pComMgr->CreateTranslator((IObjRef**)&trans);
if(trans)
{
theApp->SetTranslator(trans);
pugi::xml_document xmlLang;
if(xmlLang.load_file(L"Translator/lang_cn.xml"))
{
CAutoRefPtr<ITranslator> langCN;
trans->CreateTranslator(&langCN);
langCN->Load(&xmlLang.child(L"language"),1);//1=LD_XML
trans->InstallTranslator(langCN);
}
}
CAutoRefPtr<IResProvider> pResProvider;
#if (RES_TYPE == 0)
CreateResProvider(RES_FILE,(IObjRef**)&pResProvider);
if(!pResProvider->Init((LPARAM)_T("uires"),0))
{
SASSERT(0);
return 1;
}
#else
CreateResProvider(RES_PE,(IObjRef**)&pResProvider);
pResProvider->Init((WPARAM)hInstance,0);
#endif
theApp->AddResProvider(pResProvider);
TCHAR xx[MAX_PATH];
GetCurrentDirectory(MAX_PATH, xx);
//加载系统资源
HMODULE hSysResource=LoadLibrary(SYS_NAMED_RESOURCE);
if(hSysResource)
{
CAutoRefPtr<IResProvider> sysSesProvider;
CreateResProvider(RES_PE,(IObjRef**)&sysSesProvider);
sysSesProvider->Init((WPARAM)hSysResource,0);
theApp->LoadSystemNamedResource(sysSesProvider);
}
theApp->Init(_T("XML_INIT"));
// BLOCK: Run application
{
CMainDlg dlgMain;
dlgMain.Create(GetActiveWindow(),0,0,0,0);
dlgMain.SendMessage(WM_INITDIALOG);
dlgMain.CenterWindow(dlgMain.m_hWnd);
dlgMain.ShowWindow(SW_SHOWNORMAL);
nRet=theApp->Run(dlgMain.m_hWnd);
}
delete theApp;
}
delete pComMgr;
OleUninitialize();
return nRet;
}
示例12: _tWinMain
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int /*nCmdShow*/)
{
HRESULT hRes = OleInitialize(NULL);
SASSERT(SUCCEEDED(hRes));
int nRet = 0;
SComMgr *pComMgr = new SComMgr(_T("imgdecoder-gdip"));
{
BOOL bLoaded=FALSE;
CAutoRefPtr<SOUI::IImgDecoderFactory> pImgDecoderFactory;
CAutoRefPtr<SOUI::IRenderFactory> pRenderFactory;
bLoaded = pComMgr->CreateRender_GDI((IObjRef**)&pRenderFactory);
SASSERT_FMT(bLoaded,_T("load interface [render] failed!"));
bLoaded=pComMgr->CreateImgDecoder((IObjRef**)&pImgDecoderFactory);
SASSERT_FMT(bLoaded,_T("load interface [%s] failed!"),_T("imgdecoder"));
pRenderFactory->SetImgDecoderFactory(pImgDecoderFactory);
SApplication *theApp = new SApplication(pRenderFactory, hInstance);
theApp->RegisterWndFactory(TplSWindowFactory<SEdit2>());
theApp->RegisterWndFactory(TplSWindowFactory<SImgCanvas>());
theApp->RegisterWndFactory(TplSWindowFactory<SFolderTreeList>());
HMODULE hSysResource=LoadLibrary(SYS_NAMED_RESOURCE);
if(hSysResource)
{
CAutoRefPtr<IResProvider> sysSesProvider;
CreateResProvider(RES_PE,(IObjRef**)&sysSesProvider);
sysSesProvider->Init((WPARAM)hSysResource,0);
theApp->LoadSystemNamedResource(sysSesProvider);
}
CAutoRefPtr<IResProvider> pResProvider;
#if (RES_TYPE == 0)
//将程序的运行路径修改到项目所在目录所在的目录
SStringT strPath = theApp->GetAppDir();
strPath += _T("..\\SoTool\\uires");
SetCurrentDirectory(strPath);
CreateResProvider(RES_FILE, (IObjRef**)&pResProvider);
if (!pResProvider->Init((LPARAM)_T("uires"), 0))
{
SASSERT(0);
return 1;
}
#else
CreateResProvider(RES_PE, (IObjRef**)&pResProvider);
pResProvider->Init((WPARAM)hInstance, 0);
#endif
theApp->AddResProvider(pResProvider);
// BLOCK: Run application
{
CMainDlg dlgMain;
dlgMain.Create(GetActiveWindow());
dlgMain.SendMessage(WM_INITDIALOG);
dlgMain.CenterWindow(dlgMain.m_hWnd);
dlgMain.ShowWindow(SW_SHOWNORMAL);
nRet = theApp->Run(dlgMain.m_hWnd);
}
delete theApp;
}
delete pComMgr;
OleUninitialize();
return nRet;
}
示例13: _tWinMain
ROBJ_IN_CPP
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR /*lpstrCmdLine*/, int /*nCmdShow*/)
{
//必须要调用OleInitialize来初始化运行环境
HRESULT hRes = OleInitialize(NULL);
SASSERT(SUCCEEDED(hRes));
//LoadLibrary(L"E:\\soui.taobao\\richedit\\Debug\\riched20.dll");
/* XML预编译前面加载效率比较
pugi::xml_document doc;
LARGE_INTEGER perf;
QueryPerformanceFrequency(&perf);
LARGE_INTEGER t1,t2;
QueryPerformanceCounter(&t1);
doc.load_file(L"e:\\play.xml",pugi::parse_default,pugi::encoding_utf8);
QueryPerformanceCounter(&t2);
doc.save_file(L"e:\\play1.xml");
doc.save_bin(L"e:\\paly.xml.bin");
pugi::xml_document doc2;
LARGE_INTEGER t21,t22;
QueryPerformanceCounter(&t21);
doc2.load_bin_file(L"e:\\paly.xml.bin");
QueryPerformanceCounter(&t22);
doc2.save_file(L"e:\\play2.xml");
LONGLONG SP1 = (t2.QuadPart-t1.QuadPart)*1000000/perf.QuadPart;
LONGLONG SP2 = (t22.QuadPart-t21.QuadPart)*1000000/perf.QuadPart;
SStringW str;
str.Format(L"!!!!!sp2=%d,sp1=%d\n",(int)SP2,(int)SP1);
MessageBoxW(GetActiveWindow(),str,L"span",MB_OK);
return 0;
*/
int nRet = 0;
//使用imgdecoder-png图片解码模块演示apng动画
SComMgr *pComMgr = new SComMgr(_T("imgdecoder-png"));
{
int nType=MessageBox(GetActiveWindow(),_T("选择渲染类型:\n[yes]: Skia\n[no]:GDI\n[cancel]:Quit"),_T("select a render"),MB_ICONQUESTION|MB_YESNOCANCEL);
if(nType == IDCANCEL)
{
nRet = -1;
goto exit;
}
//定义一组类SOUI系统中使用的类COM组件
//CAutoRefPtr是一个SOUI系统中使用的智能指针类
CAutoRefPtr<IImgDecoderFactory> pImgDecoderFactory; //图片解码器,由imagedecoder-wid.dll模块提供
CAutoRefPtr<IRenderFactory> pRenderFactory; //UI渲染模块,由render-gdi.dll或者render-skia.dll提供
CAutoRefPtr<ITranslatorMgr> trans; //多语言翻译模块,由translator.dll提供
CAutoRefPtr<IScriptFactory> pScriptLua; //lua脚本模块,由scriptmodule-lua.dll提供
CAutoRefPtr<ILog4zManager> pLogMgr; //log4z对象
BOOL bLoaded=FALSE;
//从各组件中显式创建上述组件对象
if(nType == IDYES)
bLoaded = pComMgr->CreateRender_Skia((IObjRef**)&pRenderFactory);
else
bLoaded = pComMgr->CreateRender_GDI((IObjRef**)&pRenderFactory);
SASSERT_FMT(bLoaded,_T("load interface [%s] failed!"),nType==IDYES?_T("render_skia"):_T("render_gdi"));
bLoaded=pComMgr->CreateImgDecoder((IObjRef**)&pImgDecoderFactory);
SASSERT_FMT(bLoaded,_T("load interface [%s] failed!"),_T("imgdecoder"));
bLoaded=pComMgr->CreateTranslator((IObjRef**)&trans);
SASSERT_FMT(bLoaded,_T("load interface [%s] failed!"),_T("translator"));
if(pComMgr->CreateLog4z((IObjRef**)&pLogMgr))
if(pLogMgr){
pLogMgr->createLogger("soui");//support output soui trace infomation to log
pLogMgr->start();
}
//为渲染模块设置它需要引用的图片解码模块
pRenderFactory->SetImgDecoderFactory(pImgDecoderFactory);
//定义一个唯一的SApplication对象,SApplication管理整个应用程序的资源
SApplication *theApp=new SApplication(pRenderFactory,hInstance);
theApp->SetLogManager(pLogMgr);
LOGF("demo","test "<<100 << L"wchar");
SLOGFMTE("log output using ansi format,str=%s, tick=%u","test",GetTickCount());
SLOGFMTE(L"log output using unicode format,str=%s, tick=%u",L"中文",GetTickCount());
//控件注册要放到AddResProvider前: 2016年3月8日
//向SApplication系统中注册由外部扩展的控件及SkinObj类
SWkeLoader wkeLoader;
if(wkeLoader.Init(_T("wke.dll")))
//.........这里部分代码省略.........
示例14: _tWinMain
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR /*lpstrCmdLine*/, int /*nCmdShow*/)
{
HRESULT hRes = OleInitialize(NULL);
SASSERT(SUCCEEDED(hRes));
int nRet = 0;
SComLoader imgDecLoader;
SComLoader renderLoader;
//将程序的运行路径修改到项目所在目录所在的目录
TCHAR szCurrentDir[MAX_PATH]={0};
GetModuleFileName( NULL, szCurrentDir, sizeof(szCurrentDir) );
LPTSTR lpInsertPos = _tcsrchr( szCurrentDir, _T('\\') );
_tcscpy(lpInsertPos+1,_T(".."));
SetCurrentDirectory(szCurrentDir);
{
CAutoRefPtr<SOUI::IImgDecoderFactory> pImgDecoderFactory;
CAutoRefPtr<SOUI::IRenderFactory> pRenderFactory;
imgDecLoader.CreateInstance(COM_IMGDECODER,(IObjRef**)&pImgDecoderFactory);
renderLoader.CreateInstance(COM_RENDER_GDI,(IObjRef**)&pRenderFactory);
pRenderFactory->SetImgDecoderFactory(pImgDecoderFactory);
SApplication *theApp=new SApplication(pRenderFactory,hInstance);
HMODULE hSysResource=LoadLibrary(SYS_NAMED_RESOURCE);
if(hSysResource)
{
CAutoRefPtr<IResProvider> sysSesProvider;
CreateResProvider(RES_PE,(IObjRef**)&sysSesProvider);
sysSesProvider->Init((WPARAM)hSysResource,0);
theApp->LoadSystemNamedResource(sysSesProvider);
}
CAutoRefPtr<IResProvider> pResProvider;
CreateResProvider(RES_PE,(IObjRef**)&pResProvider);
pResProvider->Init((WPARAM)hInstance,0);
theApp->AddResProvider(pResProvider);
theApp->RegisterWndFactory(TplSWindowFactory<SIECtrl>());
theApp->Init(_T("XML_INIT"));
// BLOCK: Run application
{
CMainDlg dlgMain;
dlgMain.Create(GetActiveWindow(),0,0,0,0);
dlgMain.SendMessage(WM_INITDIALOG);
dlgMain.CenterWindow(dlgMain.m_hWnd);
dlgMain.ShowWindow(SW_SHOWNORMAL);
nRet=theApp->Run(dlgMain.m_hWnd);
}
delete theApp;
}
OleUninitialize();
return nRet;
}
示例15: _tWinMain
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR /*lpstrCmdLine*/, int /*nCmdShow*/)
{
HRESULT hRes = CoInitialize(NULL);
SOUI::CAutoRefPtr<SOUI::IRenderFactory> pRenderFactory=NULL;
SComMgr * pComMgr = new SComMgr;
///GDI渲染器
pComMgr->CreateRender_GDI((IObjRef**)&pRenderFactory);
///图片解码器
SOUI::CAutoRefPtr<SOUI::IImgDecoderFactory> pImgDecoderFactory;
pComMgr->CreateImgDecoder((IObjRef**)&pImgDecoderFactory);
pRenderFactory->SetImgDecoderFactory(pImgDecoderFactory);
SOUI::SApplication *theApp=new SApplication(pRenderFactory,hInstance);
theApp->RegisterWindowClass<SVideoPlayer>();
CAutoRefPtr<IResProvider> pResProvider;
CreateResProvider(RES_PE,(IObjRef**)&pResProvider);
if(pResProvider)
{
HMODULE hSysResource=LoadLibrary(_T("kkplayerdemoUI.dll"));
BOOL ret=pResProvider->Init((WPARAM)hSysResource,0);
theApp->AddResProvider(pResProvider);
}
//加载系统资源
HMODULE hSysResource=LoadLibrary(SYS_NAMED_RESOURCE);
if(hSysResource){
CAutoRefPtr<IResProvider> sysSesProvider;
CreateResProvider(RES_PE,(IObjRef**)&sysSesProvider);
sysSesProvider->Init((WPARAM)hSysResource,0);
theApp->LoadSystemNamedResource(sysSesProvider);
}
CAutoRefPtr<ITranslatorMgr> trans;
pComMgr->CreateTranslator((IObjRef**)&trans);
if(trans)
{
theApp->SetTranslator(trans);
pugi::xml_document xmlLang;
if(theApp->LoadXmlDocment(xmlLang,_T("lang_cn"),_T("translator"))){
CAutoRefPtr<ITranslator> langCN;
trans->CreateTranslator(&langCN);
langCN->Load(&xmlLang.child(L"language"),1);//1=LD_XML
trans->InstallTranslator(langCN);
}
}
int nRet=0;
SOUI::CMainDlg dlgMain;
dlgMain.Create(NULL,WS_POPUP|WS_CLIPCHILDREN| WS_CLIPSIBLINGS,0,0,0,0,0);
dlgMain.GetNative()->SendMessage(WM_INITDIALOG);
dlgMain.CenterWindow(dlgMain.m_hWnd);
dlgMain.ShowWindow(SW_SHOWNORMAL);
nRet = theApp->Run(dlgMain.m_hWnd);/**/
}