ページ 11

白い枠線ができてしまいます

Posted: 2007年5月17日(木) 12:54
by 白線
VisualC++.net2003のMFCのダイアログベースのアプリケーションを作って
スクリーン領域を確保して画像を表示させることを考えているのですが、

Panel(void)
{

wh->Create(NULL, "Screen", WS_POPUP|WS_VISIBLE,
CRect(StartX, StartY, StartX+Width, StartY+Height), NULL, NULL, 0, NULL);
pDC = wh->GetDC();

BYTE* m_BmpImage;
LPBITMAPINFO m_BmpInfo;
BITMAPFILEHEADER m_BmpFileHdr;

CBitmap pB;
BITMAPINFOHEADER bi;
CPalette *pOldPal = 0;

bitm = (BITMAPINFO*)LocalAlloc(LPTR, sizeof(RGBQUAD)*256+sizeof(BITMAPINFOHEADER));
for(int i = 0; i < 256; ++i) {
bitm->bmiColors.rgbRed = (BYTE)i;
bitm->bmiColors.rgbGreen = (BYTE)i;
bitm->bmiColors.rgbBlue = (BYTE)i;
bitm->bmiColors.rgbReserved =(BYTE)0;
}
bitm->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bitm->bmiHeader.biPlanes = 1;
bitm->bmiHeader.biCompression = BI_RGB;
bitm->bmiHeader.biXPelsPerMeter = 0;
bitm->bmiHeader.biYPelsPerMeter = 0;
bitm->bmiHeader.biClrUsed = 0;
bitm->bmiHeader.biClrImportant= 0;
bitm->bmiHeader.biWidth = Width3D;
bitm->bmiHeader.biHeight = Height3D;

bi.biSize = sizeof(BITMAPINFOHEADER);
bi.biPlanes = 1;
bi.biCompression = BI_RGB;
bi.biXPelsPerMeter = 0;
bi.biYPelsPerMeter = 0;
bi.biClrUsed = 0;
bi.biClrImportant = 0;
bi.biWidth = Width;
bi.biHeight = Height;

bitm->bmiHeader.biBitCount = 24;
bi.biBitCount = 24;
bitm->bmiHeader.biSizeImage = Width*Height*3;
bi.biSizeImage = Width*Height*3;

m_hbitmap = ::CreateDIBSection(*pDC, bitm, DIB_RGB_COLORS, (VOID**)&m_bits, 0, 0);

pM.CreateCompatibleDC(pDC);

oldBitmap = pM.SelectObject(CBitmap::FromHandle(m_hbitmap));
}

void Draw(unsigned char* buff)
{
int p;
int dp;
unsigned char line[Width*3], linebmp[Width*3];

for(int i = 0; i < Height; ++i) {
memcpy(line, &buff[i*Width*3], Width*3);

p = 0;
dp = 0;
for(int j = 0; j < Width; ++j) {
linebmp[dp+2] = line[p++];
linebmp[dp+1] = line[p++];
linebmp[dp] = line[p++];
dp += 3;
}
memcpy(m_bits+(Height-1-i)*Width*3, linebmp, Width*3);
}
pDC->BitBlt(0, 0, Width, Height, &pM, 0, 0, SRCCOPY);
}
という感じにスクリーン領域を確保してこの範囲に画像を表示させることができましたが、
このスクリーン領域に画像を表示させると、表示させた画像全体が白い枠線に囲まれてしまいます。
解決策はないでしょうか?

Re:白い枠線ができてしまいます

Posted: 2007年5月18日(金) 21:49
by 管理人
すみません、管理人の力不足ゆえその辺よくわかりません・・(_ _||)
申し訳ないです・・。

Re:白い枠線ができてしまいます

Posted: 2007年5月19日(土) 00:58
by 白線
いえいえ、いきなりよく考えもせず質問してしまってすみませんでした。
ウインドウスタイルのWS_POPUPをWS_CHILDにすれば枠線は消えるんですが
色々とエラーが。。。
ぶしつけな質問ですみませんでした。