外部DLLを使用した画像表示

  ダウンロード



http://www.vector.co.jp/soft/win95/prog/se222453.html

ダウンロードしたら解凍して imgctl.dll を Windows のシステムディレクトリへコピーします
さらに、App01 ディレクトリへ imgctl.h をコピーしてください



  MyClass.h に定義追加



ProcEndWMPaint は、ClassView の MyClass を選択して「メンバ関数の追加」で追加して下さい

  
#include <CLClass.h>

#define IMGCTL_RUNTIME
#define WINAPI __stdcall
#include "imgctl.h"
#define LOAD_DLL(PATH) \
	this->lib = LoadLibrary( #PATH ); \
	if ( this->lib == NULL ) { \
		MsgOk(#PATH " を使用できません"); \
	}
#define LOAD_FUNC(TYPE,FUNC) \
	FUNC = (TYPE)GetProcAddress( this->lib, #FUNC ); \
	if ( FUNC == NULL ) { \
		MsgOk( #FUNC " をロードできません"); \
	}

class MyClass : public CLWin  
{
public:
	void ProcEnd();
	void WMPaint();
	void LVClick();
	void LVDblclick();
	void ProcOperator();
	void WMCreate();
	MyClass();
	virtual ~MyClass();

	HINSTANCE lib;
	HDIB hDib;
	DELETEDIB DeleteDIB;
	TODIB ToDIB;
	HEADDIB HeadDIB;
	DIBTODC DIBtoDC;

};
  



  コンストラクタ に ハンドル 初期処理を追加

  
// *********************************************************
// コンストラクタ
// *********************************************************
MyClass::MyClass()
{
	this->hDib = NULL;
}
  



  WMCreate に DLL 初期処理を追加

  
	LOAD_DLL(imgctl.dll)
	if ( this->lib != NULL ) {
		LOAD_FUNC(DELETEDIB,DeleteDIB)
		LOAD_FUNC(TODIB,ToDIB)
		LOAD_FUNC(HEADDIB,HeadDIB)
		LOAD_FUNC(DIBTODC,DIBtoDC)
	}
  



  ProcEnd に終了処理を追加

  
// *********************************************************
// 終了処理
// *********************************************************
void MyClass::ProcEnd()
{
	if ( this->hDib != NULL ) {
		DeleteDIB( this->hDib );
	}
	if ( this->lib != NULL ) {
		FreeLibrary( this->lib );
	}
}
  



  WMPaint に描画処理を追加

  
// *********************************************************
// 描画
// *********************************************************
void MyClass::WMPaint()
{
	BITMAPINFOHEADER bi;

	if ( this->hDib != NULL ) {
		HeadDIB( this->hDib, &bi );	
		DIBtoDC(
			this->hDc,
			0,
			LTbar->Height(),
			bi.biWidth,
			bi.biHeight,
			this->hDib,
			0,
			0,
			SRCCOPY
		);
	}
}
  



  IDM_IMAGE によるイベント処理

  
	switch( ControlId ) {
	case IDM_IMAGE:
		{
			LboxString LString;
			LboxCommdlg Commdlg( this->hWnd );

			Commdlg.lpstrTitle = "ファイルを開く";
			Commdlg.lpstrFilter = "画像ファイル,*.jpg;*.jpeg;*.png;*.gif;*.bmp";

			if ( Commdlg.OpenFileName( &LString ) ) {
				LView->Hide();
				this->hDib = ToDIB( LString.szLboxString );
				::RedrawWindow(
					this->hWnd,
					NULL,
					NULL,
					RDW_INVALIDATE | RDW_ERASE
				);
			}
			break;
		}

  










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





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

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ