他人の絵を盗み描く

カッコよく言うとね、「外部ライブラリのリソースから画像を取得して表示」してるんだけどね、あんまりすごくないですw

カッコよく言うとね、「外部ライブラリのリソースから画像を取得して表示」してるんだけどね、あんまりすごくないですw

  • タグ:
  • タグはありません
#include "kernel32.as"//
#include "user32.as"//
#include "Gdi32.as"//3つDLL使うの久しぶりだ

#define RT_BITMAP           2

DLLNAME="ieframe.dll"
LoadLibrary DLLNAME
HDLL=stat

;pResourceName="Bitmap\\TRAVEL_PRESSED_XP_120.BMP"
RESNAME="TRAVEL_PRESSED_XP_120.BMP"//リソースハッカーで居場所を突き止めた画像をセット
FindResource HDLL, RESNAME, RT_BITMAP ;
HRES=stat
//LoadIcon HDLL,RESNAME
SizeofResource HDLL,HRES 
SizeRES=stat
LoadResource HDLL,HRES //戻り値はHGLOBAL グローバーるメモリにロード戻り値をLockResourceに渡すとBitMapのありか(=ポインタ)を教えてくれる
hLrs=stat
LockResource hLrs
lpBITMAPINFO=stat
dupptr BITMAPINFO,lpBITMAPINFO,44,
dwWidth=wpeek(BITMAPINFO,4)
dwHeight=wpeek(BITMAPINFO,8)
mes dwWidth
mes dwHeight
szBuf=lpBITMAPINFO+40+0
SetDIBitsToDevice hDC,0,0,dwWidth,dwHeight,0,0,0,dwHeight,szBuf,lpBITMAPINFO,0//この関数どんだけ引数あるんだよwww
mes stat
redraw 1

/* 関数や構造体の定義はこちら
	typedef struct tagBITMAPINFO {(44byte)=dim ***,11
	   BITMAPINFOHEADER bmiHeader;//下記参照(40byte)
	   RGBQUAD bmiColors[1]; //RGBQUADはDWORD(4byte)
	} BITMAPINFO;
	
	typedef struct tagBITMAPINFOHEADER {//(40byte)long=4 WORD=2 DWORD=4
	    DWORD  biSize;
	    LONG   biWidth;
	    LONG   biHeight;
	    WORD   biPlanes;
	    WORD   biBitCount;
	    DWORD  biCompression;
	    DWORD  biSizeImage;
	    LONG   biXPelsPerMeter;
	    LONG   biYPelsPerMeter;
	    DWORD  biClrUsed;
	    DWORD  biClrImportant;
	} BITMAPINFOHEADER;
	
	int SetDIBitsToDevice(
		  HDC hdc,                 // デバイスコンテキストのハンドル
		  int XDest,               // 転送先長方形の左上隅の x 座標
		  int YDest,               // 転送先長方形の左上隅の y 座標
		  DWORD dwWidth,           // 転送元長方形の幅
		  DWORD dwHeight,          // 転送元長方形の高さ
		  int XSrc,                // 転送元長方形の左下隅の x 座標
		  int YSrc,                // 転送元長方形の左下隅の y 座標
		  UINT uStartScan,         // 配列内の最初の走査行
		  UINT cScanLines,         // 走査行の数
		  CONST VOID *lpvBits,     // DIB ビットからなる配列
		  CONST BITMAPINFO *lpbmi, // ビットマップ情報
		  UINT fuColorUse          // RGB 値またはパレットインデックス
		);
*/
	// szBuf = (char *)lpBinfo + sizeof(BITMAPINFOHEADER) + nClr * sizeof(RGBQUAD);
	//ncrの値は色数だが0だとフルカラーなのでよし