WinAPIで文字の重ね書きはできるの?
//宣言部
HDC hD;
PAINTSTRUCT ps;
TEXTMETRIC tm;
RECT rt;
int i,j,k,l,m,n;
string str;
static int i_W,i_H,i_w,i_h;
//処理部(ペイント部のみ)
case WM_PAINT:
hD=BeginPaint(hW,&ps);
GetClientRect(hW,&rt);
i_W=rt.right-rt.left;
i_H=rt.bottom-rt.top;
SelectObject(hD,GetStockObject(OEM_FIXED_FONT));
GetTextMetrics(hD,&tm);
i_w=tm.tmAveCharWidth;
i_h=i_H/24;
SetROP2(hD,R2_NOTXORPEN);//これによる効果
SetTextAlign(hD,TA_LEFT|TA_TOP);
/////////////////////////////////////////////////////////
Rectangle(hD,2*i_w,2*i_h,66*i_w,12*i_h);//ok
Rectangle(hD,12*i_w,6*i_h,76*i_w,16*i_h);//ok
str="||||||||||||||";
TextOut(hD,0,0,str.c_str(),str.size());//out
str="--------------";
TextOut(hD,0,0,str.c_str(),str.size());//out
//////////////////////////////////////////////////////////
EndPaint(hW,&ps);
return 0;
において"SetROP2(hD,R2_NOTXORPEN);"により長方形を被せずに書くことができます
しかし文字は重ね書きできません
上の例では'+'を表示したいのに後で書いた'-'だけが表示されてしまいます
何か良い方法はないでしょうか?
お礼
ありがとうございました!