|
COM 作成の基本と
id(1) 〜 id(3) は 上級マテリアルの COM 作成 を参照して下さい
MyCom.idl
MyAPI.h
MyAPI.cpp
|
|
|
// SavetoJPEG用
typedef WORD (__stdcall *LPFUNC_1)
(
LPCTSTR bmpf,
LPCTSTR jpgf,
BYTE Value,
short Prgrs
);
#define TARGET_DLL "SaveJPG.dll"
STDMETHODIMP CMyAPI::SavetoJPEG(
BSTR bmpf,
BSTR jpgf,
short Value,
BOOL Prgrs,
short *pVal
)
{
HINSTANCE lib;
// *******************************************
// DLL ロード
// *******************************************
lib = LoadLibrary( TARGET_DLL );
if ( lib == NULL ) {
*pVal = -1;
return S_OK;
}
LPFUNC_1 SavetoJPEG;
// *******************************************
// 関数アドレスのロード
// *******************************************
SavetoJPEG = (LPFUNC_1)GetProcAddress( lib, "SavetoJPEG" );
if ( SavetoJPEG == NULL ) {
FreeLibrary( lib );
*pVal = -2;
return S_OK;
}
// *******************************************
// 実行
// *******************************************
WORD wRet;
_bstr_t Bitmap(bmpf);
_bstr_t Jpeg(jpgf);
BYTE nRate;
nRate = (BYTE)Value;
wRet = SavetoJPEG( (LPTSTR)Bitmap, (LPTSTR)Jpeg, nRate, Prgrs );
// *******************************************
// DLL 解放
// *******************************************
FreeLibrary( lib );
*pVal = (short)wRet;
return S_OK;
}
| |
|
|
|
MyCom.idl
MyAPI.h
MyAPI.cpp
|
// DCSavetoJPEG用
typedef WORD (__stdcall *LPFUNC_2)
(
HDC hDc,
long nWidth,
long nHeight,
LPCTSTR jpgf,
BYTE Value,
short Prgrs
);
STDMETHODIMP CMyAPI::SaveDesktoptoJPEG(
BSTR jpgf,
short Value,
BOOL Prgrs,
short *pVal
)
{
HINSTANCE lib;
// *******************************************
// DLL ロード
// *******************************************
lib = LoadLibrary( TARGET_DLL );
if ( lib == NULL ) {
*pVal = -1;
return S_OK;
}
LPFUNC_2 DCSavetoJPEG;
// *******************************************
// 関数アドレスのロード
// *******************************************
DCSavetoJPEG = (LPFUNC_2)GetProcAddress( lib, "DCSavetoJPEG" );
if ( DCSavetoJPEG == NULL ) {
FreeLibrary( lib );
*pVal = -2;
return S_OK;
}
// *******************************************
// 実行
// *******************************************
WORD wRet;
_bstr_t Jpeg(jpgf);
BYTE nRate;
nRate = (BYTE)Value;
HWND hWnd;
hWnd = GetDesktopWindow(); // デスクトップのウインドウハンドル
RECT rt;
GetWindowRect( hWnd, &rt ); // デスクトップのサイズ
HDC hDc;
hDc = GetDC( hWnd ); // デスクトップのデバイスコンテキスト
wRet = DCSavetoJPEG(
hDc,
rt.right,
rt.bottom,
(LPTSTR)Jpeg,
nRate,
Prgrs
);
ReleaseDC( hWnd, hDc );
// *******************************************
// DLL 解放
// *******************************************
FreeLibrary( lib );
*pVal = (short)wRet;
return S_OK;
}
| |
|
|
|