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