MFCで、MemDCを利用した描画系のアプリを作っているのですが、
WinXPと他のOS(Win9X,Win2000)で動作が異なってしまい
困っています。どなたか原因と対策をご教授ください。
具体的な内容は以下のとおりです。
下記のソースにて描画すると、
WinXPでは、MemDCに描いたX座標1024以降の
CPenの結果(Rectangleのエッジ)が表示されません。
(「pen.CreatePen(PS_SOLID, 2, color2)」で
CPenを作成すると表示されるのですが。。。)
WinXPマシンの画面の解像度は1024×768です。
--ソース--------
void CBitTestView::OnDraw(CDC* pDC)
{
int x=1000; //MemDCのテスト描画視点
CDC MemDC;
CBitmap Bitmap;
//四角形描画用のRECT構造体
RECT rt;
rt.left = x;
rt.top = 0;
rt.right = x+200;
rt.bottom = 50;
DWORD color = RGB(255, 0, 0);
DWORD color2 = RGB(0, 0, 255);
//メモリDCを作成
MemDC.CreateCompatibleDC(pDC);
Bitmap.CreateCompatibleBitmap(pDC, x+1000, 100);
CBitmap *oldBitmap = MemDC.SelectObject(&Bitmap);
//描画モードにR2_MASKPEN を指定
int bkMode = MemDC.SetROP2(R2_MASKPEN);
CPen pen;
pen.CreatePen(PS_SOLID, 1, color2);
CPen *oldPen = MemDC.SelectObject(&pen);
CBrush brush2;
brush2.CreateSolidBrush(color);
CBrush *oldBrush2 = MemDC.SelectObject(&brush2);
//描画
MemDC.PatBlt(0, 0, x+1000, 100, WHITENESS);
MemDC.Rectangle(&rt);
//BitBltにてメモリDCからDCへ転送
pDC->BitBlt(0,0, 1000, 100, &MemDC, x, 0, SRCCOPY);
MemDC.SetROP2(bkMode);
MemDC.SelectObject(oldBitmap);
MemDC.SelectObject(oldBrush2);
MemDC.SelectObject(oldPen);
return ;
}