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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
白線

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

#1

投稿記事 by 白線 » 18年前

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:白い枠線ができてしまいます

#2

投稿記事 by 管理人 » 18年前

すみません、管理人の力不足ゆえその辺よくわかりません・・(_ _||)
申し訳ないです・・。

白線

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

#3

投稿記事 by 白線 » 18年前

いえいえ、いきなりよく考えもせず質問してしまってすみませんでした。
ウインドウスタイルのWS_POPUPをWS_CHILDにすれば枠線は消えるんですが
色々とエラーが。。。
ぶしつけな質問ですみませんでした。

閉鎖

“C言語何でも質問掲示板” へ戻る