Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
	}
Ejemplo n.º 3
0
    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;
    }
Ejemplo n.º 4
0
/// ウィンドウの初期化
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] );
}
Ejemplo n.º 6
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);
	}
}