#include"BMP_out.h"
BOOL
CopyDIB(HWND hWnd)
{
LPBMPINFO lpBmpInfo;
int iWidth,iHeight;
LPDWORD
lpPixel;
HGLOBAL
hMem;
LPBYTE
lpMem;
LPBITMAPINFOHEADER
lpInfo;
LPBYTE
lpPixelClip;
int x,y;
lpBmpInfo=(LPBMPINFO)GetWindowLong(hWnd,GWL_USERDATA);
if(lpBmpInfo==NULL
|| lpBmpInfo->lpPixel==NULL){
MessageBox(hWnd,"画像がありません","エラー",MB_OK);
return
FALSE;
}
iWidth=lpBmpInfo->biInfo.bmiHeader.biWidth;
iHeight=lpBmpInfo->biInfo.bmiHeader.biHeight;
lpPixel=lpBmpInfo->lpPixel;
hMem=GlobalAlloc(GHND,sizeof(BITMAPINFOHEADER)+iWidth*iHeight*3);
lpMem=(LPBYTE)GlobalLock(hMem);
lpInfo=(LPBITMAPINFOHEADER)lpMem;
lpPixelClip=lpMem+sizeof(BITMAPINFOHEADER);
lpInfo->biSize=sizeof(BITMAPINFOHEADER);
lpInfo->biWidth=iWidth;
lpInfo->biHeight=iHeight;
lpInfo->biPlanes=1;
lpInfo->biBitCount=24;
lpInfo->biCompression=BI_RGB;
for (y=0;y<iHeight;y++)
for (x=0;x<iWidth;x++)
CopyMemory(lpPixelClip+x*3+y*iWidth*3,lpPixel+x+y*iWidth,3);
GlobalUnlock(hMem);
OpenClipboard(hWnd);
EmptyClipboard();
SetClipboardData(CF_DIB,hMem);
CloseClipboard();
return TRUE;
}