デバイスコンテキストを取得し、ビットマップをしてつかうには?


ゆい  2007-02-04 10:59:48  No: 64376  IP: [192.*.*.*]

現在、スクリーンキャプチャした画像をビットマップとして利用たいと思い、下記のようなソースプログラムを作ったのですが、イメージとしてビットマップを読み出す事ができません。
        DWORD dwSize,dwFSize,dwWidth,dwHeight,dwLength;
TCHAR strFile[MAX_PATH]="";
HANDLE hFile;
LPBITMAPFILEHEADER lpHead;
LPBYTE lpBuf,lpPixel;
HDC hdc,hdcMem;
HBITMAP hBMP,hOld;
OPENFILENAME ofn={0};

dwWidth=1280;
dwHeight=1024;
// バッファの1ラインの長さを計算
if((dwWidth*3)%4==0)dwLength=dwWidth*3;
else dwLength=dwWidth*3+(4-(dwWidth*3)%4);
// 書き込み用バッファのサイズ計算
dwFSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+dwLength*dwHeight;
// バッファ確保とポインタ設定
lpBuf=(LPBYTE)GlobalAlloc(GPTR,dwFSize);
lpHead=(LPBITMAPFILEHEADER)lpBuf;
lpInfo=(LPBITMAPINFOHEADER)(lpBuf+sizeof(BITMAPFILEHEADER));
lpPixel=lpBuf+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
//BMPファイルのヘッダの作成
lpHead->bfType='M'*256+'B';
lpHead->bfSize=dwFSize;
lpHead->bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);
lpInfo->biSize=sizeof(BITMAPINFOHEADER);
lpInfo->biWidth=dwWidth;
lpInfo->biHeight=dwHeight;
lpInfo->biPlanes=1;
lpInfo->biBitCount=24;
// ウインドウのデバイスコンテキスト取得
hdc = CreateDC(TEXT("DISPLAY") , NULL , NULL , NULL);
//ウインドウのデバイスコンテキストと互換のBITMAPを作成 
hBMP=CreateCompatibleBitmap(hdc,dwWidth,dwHeight);
//クライアント領域を取得
hdcMem=CreateCompatibleDC(hdc);
hOld=(HBITMAP)SelectObject(hdcMem,hBMP);
BitBlt(hdcMem,0,0,dwWidth,dwHeight,hdc,0,0,SRCCOPY);
SelectObject(hdcMem,hOld);
GetDIBits(hdc,hBMP,0,dwHeight,lpPixel,(LPBITMAPINFO)lpInfo,DIB_RGB_COLORS);
//後処理
DeleteDC(hdc);
DeleteObject(hBMP);
DeleteObject(hdcMem);

この処理をさせた後、デバイスコンテキストから取得したビットマップをファイルから読み出しの変わりに利用するにはどうしたらいいのでしょうか?

編集 削除
ゆい  2007-02-04 11:02:35  No: 64377  IP: [192.*.*.*]

多重投稿してしまいました。
もうしわけありません。

編集 削除