int luaX_panic(lua_State* L) { CString e(lua_tostring(L, -1)); luaX_host<ILuaLib>(L,0)->WriteError(e); ATLTRACE(atlTraceException, 0, _T("Lua panic: '%s'\n"), e ); AtlThrow(E_FAIL); return 0; }
void VssCopy::WaitAndQueryStatus(CComPtr<IVssAsync> pVssAsync) { CHECK_HRESULT( pVssAsync->Wait() ); HRESULT hr; CHECK_HRESULT( pVssAsync->QueryStatus(&hr, nullptr) ); if (hr == VSS_S_ASYNC_CANCELLED) { AtlThrow(hr); } return; }
CStringA GetToken(const CStringA& strData, LPCSTR szPrefix, LPCSTR szPostfix, int& nStart) { CStringA strResult; if(nStart < 0) { AtlThrow(E_INVALIDARG); return strResult; } size_t nPrefixLen = strlen(szPrefix); size_t nPostfixLen = strlen(szPostfix); int begin = strData.Find(szPrefix, nStart); if(begin == -1) return strResult; nStart = begin + nPrefixLen; int end = strData.Find(szPostfix, nStart); if(end == -1) return strResult; strResult = strData.Mid(begin + nPrefixLen, end - begin - nPrefixLen); return strResult; }
/// ウィンドウの初期化 int CDonutView::OnCreate(LPCREATESTRUCT lpCreateStruct) { // Let me initialize itself LRESULT lRet = DefWindowProc(); try { HRESULT hr = QueryControl(IID_IWebBrowser2, (void**)&m_spBrowser); ATLASSERT(m_spBrowser); BOOL bCheck = GetRegisterAsDropTarget(); hr = CoCreateInstance(CLSID_DragDropHelper, NULL, CLSCTX_INPROC_SERVER, IID_IDropTargetHelper, (LPVOID*)&m_spDropTargetHelper); ATLASSERT(hr == S_OK); // Set flat scrollbar style CComPtr<IAxWinHostWindow> spAxHostWindow; hr = QueryHost(&spAxHostWindow); // ホストを取得 if (FAILED(hr)) AtlThrow(hr); m_spAxAmbient = spAxHostWindow; ATLASSERT(m_spAxAmbient); //フラットビューの可否を適用 //hr = m_spAxAmbient->put_DocHostFlags(_bFlatView ? docHostUIFlagNotFlatView : docHostUIFlagDEFAULT); // UDT DGSTR ( added by dai #if 1 //+++ xp以降は themeによって平面的であることを期待して、フラットスクロールバーにしないtheme onの設定にする. //BOOL bFlatView = (m_dwDefaultExtendedStyleFlags & DVS_EX_FLATVIEW) != 0; //+++ ? 1 : 0; BOOL bFlatView = (m_ViewOption.m_dwExStyle & DVS_EX_FLATVIEW) != 0; //+++ ? 1 : 0; unsigned flags = DOCHOSTUIFLAG_NOT_FLATVIEW; if (bFlatView) { flags = _CheckOsVersion_XPLater() ? DOCHOSTUIFLAG_THEME_VIEW : DOCHOSTUIFLAG_NOT_FLATVIEW; } #else BOOL bFlatView = (CDLControlOption::s_dwExtendedStyleFlags & DVS_EX_FLATVIEW) != 0; //+++ ? 1 : 0; unsigned flags = bFlatView ? DOCHOSTUIFLAG_FLATVIEW : DOCHOSTUIFLAG_NOT_FLATVIEW; #endif hr = m_spAxAmbient->put_DocHostFlags(flags); //\\ flagsを設定する if (FAILED(hr)) AtlThrow(hr); // 外部UIのIDispatchインターフェイスを設定する CComQIPtr<IDocHostUIHandler> pDefaultHandler = spAxHostWindow; m_ExternalUIDispatch.SetDefaultUIHandler(pDefaultHandler); spAxHostWindow->SetExternalUIHandler(&m_ExternalUIDispatch); // 外部AmbientIDispatchインターフェイスを設定する CComQIPtr<IAxWinAmbientDispatchEx> pAmbient = spAxHostWindow; m_spHost = spAxHostWindow; //m_ExternalAmbientDispatch.SetHostWindow(spAxWindow); pAmbient->SetAmbientDispatch((IDispatch*)this);//(&m_ExternalAmbientDispatch); // DLMnager用にIServiceProviderを登録する CComQIPtr<IObjectWithSite> spObjectWithSite = spAxHostWindow; ATLASSERT(spObjectWithSite); hr = spObjectWithSite->SetSite((IUnknown*)(IServiceProvider*)this); _InitDLControlFlags(); #if 1 //+++ if (m_ViewOption.m_dwExStyle == (DWORD)-1) m_ViewOption.m_dwExStyle = CDLControlOption::s_dwExtendedStyleFlags; //_dwViewStyle; #else ATLASSERT(m_ViewOption.m_dwExStyle == 0); m_ViewOption.m_dwExStyle = CDLControlOption::s_dwExtendedStyleFlags; //_dwViewStyle; #endif RegisterDragDrop(m_hWnd, this); } catch (const CAtlException& e) { MessageBox(GetLastErrorString(e)); } return 0; }
//---------------------------------------------------------------------------- // NAME: ConvertUTF16ToUTF8 // DESC: Converts Unicode UTF-16 (Windows default) text to Unicode UTF-8 //---------------------------------------------------------------------------- std::string CStringToStdString( IN const wchar_t * utf16 ) { // // Check input pointer // ATLASSERT( utf16 != NULL ); if ( utf16 == NULL ) AtlThrow( E_POINTER ); // // Handle special case of empty string // if ( *utf16 == L'\0' ) { return ""; } // // Consider wchar_t's count corresponding to total string length, // including end-of-string (L'\0') character. // const int utf16Length = wcslen( utf16 ) + 1; // // Get size of destination UTF-8 buffer, in chars (= bytes) // int utf8Size = ::WideCharToMultiByte( CP_UTF8, // convert to UTF-8 0, // default flags utf16, // source UTF-16 string utf16Length, // total source string length, in wchar_t's, // including end-of-string \0 NULL, // unused - no conversion required in this step 0, // request buffer size NULL, NULL // unused ); ATLASSERT( utf8Size != 0 ); if ( utf8Size == 0 ) { AtlThrowLastWin32(); } // // Allocate destination buffer for UTF-8 string // std::vector< char > utf8Buffer( utf8Size ); // // Do the conversion from UTF-16 to UTF-8 // int result = ::WideCharToMultiByte( CP_UTF8, // convert to UTF-8 0, // default flags utf16, // source UTF-16 string utf16Length, // total source string length, in wchar_t's, // including end-of-string \0 &utf8Buffer[0], // destination buffer utf8Size, // destination buffer size, in bytes NULL, NULL // unused ); ATLASSERT( result != 0 ); if ( result == 0 ) { AtlThrowLastWin32(); } // // Build UTF-8 string from conversion buffer // return std::string( &utf8Buffer[0] ); }
void CExRichEditWindowless::InsertGif(LONG gif) { CComQIPtr<IDynamicOleCom> spDyn; HRESULT hr = spDyn.CoCreateInstance(STR_PROGID); if(SUCCEEDED(hr)) { LPOLEOBJECT lpOleObject = NULL; HRESULT hr = spDyn->QueryInterface(IID_IOleObject, (void**)&lpOleObject); IUnknownPtr lpUnk = lpOleObject; hr = lpUnk->QueryInterface(IID_IOleObject, (LPVOID*)&lpOleObject); if (lpOleObject == NULL) throw(E_OUTOFMEMORY); //hr = lpOleObject->SetClientSite( static_cast<IOleClientSite *>( this ) ); IViewObject2Ptr lpViewObject;// IViewObject for IOleObject above hr = lpOleObject->QueryInterface(IID_IViewObject2, (LPVOID*)&lpViewObject); if (hr != S_OK) { AtlThrow(hr); } IRichEditOle* pRichEditOle = GetIRichEditOle(); ////获取RichEdit的OLEClientSite IOleClientSitePtr lpClientSite; hr = pRichEditOle->GetClientSite(&lpClientSite); if (hr != S_OK) { AtlThrow(hr); } REOBJECT reobject; ZeroMemory(&reobject,sizeof(REOBJECT)); reobject.cbStruct = sizeof(REOBJECT); CLSID clsid; hr = lpOleObject->GetUserClassID(&clsid); if (hr != S_OK) { AtlThrow(hr); } reobject.clsid = clsid; reobject.cp = -1; //reobject.cp = REO_CP_SELECTION; reobject.dvaspect = DVASPECT_CONTENT;//DVASPECT_OPAQUE; reobject.poleobj = lpOleObject; reobject.polesite = lpClientSite; //reobject.pstg = lpStorage; SIZEL sizel; sizel.cx = sizel.cy = 0; // let richedit determine initial size Image* img = (Image*)gif; SIZEL sizeInPix = {img->GetWidth(), img->GetHeight()}; SIZEL sizeInHiMetric; AtlPixelToHiMetric(&sizeInPix, &sizeInHiMetric); reobject.sizel = sizeInHiMetric; reobject.dwFlags = REO_BELOWBASELINE|REO_STATIC;//REO_RESIZABLE CExRichEditData* pdata = new CExRichEditData; pdata->m_dataType = GIF; pdata->m_data = (void*)gif; reobject.dwUser = (DWORD)pdata;//TODO 用户数据 lpOleObject->SetClientSite(lpClientSite); hr = pRichEditOle->InsertObject(&reobject); lpOleObject->SetExtent(DVASPECT_CONTENT, &sizeInHiMetric); OleSetContainedObject(lpOleObject, TRUE); lpOleObject->Release(); spDyn->SetHostWindow((LONG)hwndParent); spDyn->InsertGif(gif); } }