LboxIEControl

  コンストラクタ



このクラスを使用する場合は、アプリケーションの開始処理に CoInitialize( NULL ) を実行し、
アプリケーションの終了処理に CoUninitialize( ) を実行して下さい

※ MFC は使用していませんが、ATL.DLL が必要です

画像加工の結果を表示したくて作成しました。現状では画像(URL)表示する以上の事はほとんどできません

  
// *********************************************************
// コンストラクタ
// *********************************************************
LboxIEControl::LboxIEControl( HWND hOwner )
{
	this->pIEControl = NULL;

	AtlAxWinInit();
	this->hWnd = CreateWindowEx(
		WS_EX_CLIENTEDGE,
		"AtlAxWin",
		"about:blank",
		WS_CHILD | WS_VISIBLE
		| WS_BORDER | WS_HSCROLL | WS_VSCROLL,
		0, 0, 200, 200,
		hOwner,
		NULL,
		LboxGetInstance( hOwner ),
		NULL
	);

	if ( this->hWnd != NULL ) {
		if ( 
			AtlAxGetControl(
				this->hWnd, (IUnknown**)&(this->pIEControl)
			) != S_OK )	{
			this->pIEControl = NULL;
		}
	}

}
LboxIEControl::LboxIEControl()
{
	this->pIEControl = NULL;
	this->hWnd = NULL;
}

// *********************************************************
// デストラクタ
// *********************************************************
LboxIEControl::~LboxIEControl()
{
	if ( this->pIEControl != NULL ) {
		SHDocVw::IWebBrowser2Ptr pIE;
		pIE.operator = (
			(SHDocVw::IWebBrowser2Ptr *)&(this->pIEControl)
		);
		pIE.Release();
		this->pIEControl = NULL;
	}
	if ( this->hWnd != NULL ) {
		DestroyWindow( this->hWnd );
		this->hWnd = NULL;
	}

	LboxInfo Info;
	LboxString Buff;
	LboxString Path;
	LboxString DelPath;
	LboxTool Tool;
	
	if ( !(Info.TempPath( &Buff ) ) ) {
		Tool.ProgramDirectory( &Buff );
	}

	Buff.AddBackslash();
	Path.operator = (&Buff);
	Buff.operator += ("LIC*.tmp");

	HANDLE hFile;
	BOOL bRet;
	WIN32_FIND_DATA wfd;

	hFile = FindFirstFile( Buff.szLboxString, &wfd );
	bRet = true;

	int nLoop;

	nLoop = 0;

	while( hFile != INVALID_HANDLE_VALUE && bRet == (BOOL)true ) {

		nLoop++;
		if ( nLoop > 1000 ) {
			break;
		}

		DelPath.operator = (&Path);
		DelPath.operator += (wfd.cFileName );

		DeleteFile( DelPath.szLboxString );
		bRet = FindNextFile( hFile, &wfd );

	}
	if ( !bRet ) {
		FindClose( hFile );
	}
}
  



  Load



  
// *********************************************************
// ドキュメントのロード
// *********************************************************
BOOL LboxIEControl::Load( LboxString *LString )
{	
	return LboxIEControl::Load( LString->szLboxString );
}
BOOL LboxIEControl::Load( LPTSTR lpPath )
{
	if ( this->pIEControl == NULL ) {
		this->SetControlErrorMessage();
		return false;
	}
	if ( this->hWnd == NULL ) {
		this->SetWndErrorMessage();
		return false;
	}

	_bstr_t bstrValue;
	VARIANT vParam;

	bstrValue.operator = (lpPath);
	vParam.vt = VT_BSTR;
	vParam.bstrVal = 
		(wchar_t*)(bstrValue.operator const wchar_t * ());

	BOOL bError;

	bError = false;

	SHDocVw::IWebBrowser2Ptr pIE;
	pIE.operator = (
		(SHDocVw::IWebBrowser2Ptr *)&(this->pIEControl)
	);

	try {
		if ( pIE != NULL ) {
			pIE->Navigate2(&vParam);
		}
		else {
			bError = true;
		}
	}
	catch (_com_error &e)
	{
		bError = true;
	}

	this->pIEControl = pIE.Detach( );

	return !bError;
}
  



  LoadFit

  
// *********************************************************
// ドキュメントのロード(HTML使用)
// *********************************************************
BOOL LboxIEControl::LoadFit( LboxString *LString )
{	
	return LboxIEControl::LoadFit( LString->szLboxString );
}
BOOL LboxIEControl::LoadFit( LPTSTR lpPath )
{
	if ( this->pIEControl == NULL ) {
		this->SetControlErrorMessage();
		return false;
	}
	if ( this->hWnd == NULL ) {
		this->SetWndErrorMessage();
		return false;
	}

	LboxInfo Info;
	LboxString Buff;
	LboxTool Tool;
	
	if ( !(Info.TempPath( &Buff ) ) ) {
		Tool.ProgramDirectory( &Buff );
	}

	LboxFileSystem Fs;
	LboxString Path;

	Fs.CreateTempFile(
		Buff.szLboxString,
		"LIC",
		&Path
	);

	LboxTextFile Txt;

	Txt.WriteOpen( &Path );
	Txt.Put( "<HTML>" );
	Txt.Put( "<BODY>" );
	Txt.Put( "<IMG src=\"" );
	Txt.Put( lpPath );
	Txt.Put( "\" style='position:absolute;left:0;top:0'>" );
	Txt.Put( "</BODY>" );
	Txt.Put( "</HTML>" );
	Txt.Close();

	_bstr_t bstrValue;
	VARIANT vParam;

	bstrValue.operator = (Path.szLboxString);
	vParam.vt = VT_BSTR;
	vParam.bstrVal = 
		(wchar_t*)(bstrValue.operator const wchar_t * ());

	BOOL bError;

	bError = false;

	SHDocVw::IWebBrowser2Ptr pIE;
	pIE.operator = (
		(SHDocVw::IWebBrowser2Ptr *)&(this->pIEControl)
	);

	try {
		if ( pIE != NULL ) {
			pIE->Navigate2(&vParam);
		}
		else {
			bError = true;
		}
	}
	catch (_com_error &e)
	{
		bError = true;
	}

	this->pIEControl = pIE.Detach( );

	return !bError;
}
  



  IsBusy

  
// *********************************************************
// 使用中かどうか
// *********************************************************
BOOL LboxIEControl::IsBusy( void )
{
	if ( this->pIEControl == NULL ) {
		this->SetControlErrorMessage();
		return false;
	}
	if ( this->hWnd == NULL ) {
		this->SetWndErrorMessage();
		return false;
	}

	BOOL bRet;

	bRet = false;

	SHDocVw::IWebBrowser2Ptr pIE;
	pIE.operator = (
		(SHDocVw::IWebBrowser2Ptr *)&(this->pIEControl)
	);

	try {
		if ( pIE != NULL ) {
			READYSTATE sts;
			sts = pIE->GetReadyState();
			switch( sts ) {
				case READYSTATE_UNINITIALIZED:
					bRet = false;
					break;
				case READYSTATE_LOADING:
					bRet = true;
					break;
				case READYSTATE_LOADED:
					bRet = true;
					break;
				case READYSTATE_INTERACTIVE:
					bRet = true;
					break;
				case READYSTATE_COMPLETE:
					bRet = false;
					break;
			}
		}
		else {
			bRet = false;
		}
	}
	catch (_com_error &e)
	{
		bRet = false;
	}

	this->pIEControl = pIE.Detach( );

	return bRet;
}
  



  Reload

  
// *********************************************************
// リロード
// *********************************************************
BOOL LboxIEControl::Reload( void )
{
	if ( this->pIEControl == NULL ) {
		this->SetControlErrorMessage();
		return false;
	}
	if ( this->hWnd == NULL ) {
		this->SetWndErrorMessage();
		return false;
	}

	VARIANT vParam;
	_variant_t vWork;

	BOOL bRet;

	bRet = false;

	SHDocVw::IWebBrowser2Ptr pIE;
	pIE.operator = (
		(SHDocVw::IWebBrowser2Ptr *)&(this->pIEControl)
	);

	try {
		if ( pIE != NULL ) {
			vWork.operator = ( (short)REFRESH_COMPLETELY );
			vParam = vWork.Detach();
			pIE->Refresh2(&vParam);
			bRet = true;
		}
		else {
			bRet = false;
		}
	}
	catch (_com_error &e)
	{
		bRet = false;
	}

	this->pIEControl = pIE.Detach( );

	return bRet;
}
  



  GoHome

  
// *********************************************************
// HOME へ移動
// *********************************************************
BOOL LboxIEControl::GoHome( void )
{
	if ( this->pIEControl == NULL ) {
		this->SetControlErrorMessage();
		return false;
	}
	if ( this->hWnd == NULL ) {
		this->SetWndErrorMessage();
		return false;
	}

	BOOL bRet;

	bRet = false;

	SHDocVw::IWebBrowser2Ptr pIE;
	pIE.operator = (
		(SHDocVw::IWebBrowser2Ptr *)&(this->pIEControl)
	);

	try {
		if ( pIE != NULL ) {
			pIE->GoHome();
			bRet = true;
		}
		else {
			bRet = false;
		}
	}
	catch (_com_error &e)
	{
		bRet = false;
	}

	this->pIEControl = pIE.Detach( );

	return bRet;
}
  



  GoForward

  
// *********************************************************
// 次へ移動
// *********************************************************
BOOL LboxIEControl::GoForward( void )
{
	if ( this->pIEControl == NULL ) {
		this->SetControlErrorMessage();
		return false;
	}
	if ( this->hWnd == NULL ) {
		this->SetWndErrorMessage();
		return false;
	}

	BOOL bRet;

	bRet = false;

	SHDocVw::IWebBrowser2Ptr pIE;
	pIE.operator = (
		(SHDocVw::IWebBrowser2Ptr *)&(this->pIEControl)
	);

	try {
		if ( pIE != NULL ) {
			pIE->GoForward();
			bRet = true;
		}
		else {
			bRet = false;
		}
	}
	catch (_com_error &e)
	{
		bRet = false;
	}

	this->pIEControl = pIE.Detach( );

	return bRet;
}
  



  GoBack

  
// *********************************************************
// 前へ移動
// *********************************************************
BOOL LboxIEControl::GoBack( void )
{
	if ( this->pIEControl == NULL ) {
		this->SetControlErrorMessage();
		return false;
	}
	if ( this->hWnd == NULL ) {
		this->SetWndErrorMessage();
		return false;
	}

	BOOL bRet;

	bRet = false;

	SHDocVw::IWebBrowser2Ptr pIE;
	pIE.operator = (
		(SHDocVw::IWebBrowser2Ptr *)&(this->pIEControl)
	);

	try {
		if ( pIE != NULL ) {
			pIE->GoBack();
			bRet = true;
		}
		else {
			bRet = false;
		}
	}
	catch (_com_error &e)
	{
		bRet = false;
	}

	this->pIEControl = pIE.Detach( );

	return bRet;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ