0
我在繪製ActiveX控件時遇到了一些麻煩。在下面的屏幕截圖中,您將看到VB6 IDE中調整大小後的控件。控制的從大小調整前的輪廓仍然顯示在控制左側:如何清除ActiveX OCX控件的繪圖區域?
這裏是繪製一個黑色的省略號帶有紅色的Z代碼:
void CzFileIoXCtrl::OnDraw(CDC* pdc,
const CRect& rcBounds,
const CRect& rcInvalid)
{
if (!pdc)
{
return;
}
pdc->SetBkMode(TRANSPARENT);
pdc->SelectObject(CBrush::FromHandle((HBRUSH)GetStockObject(BLACK_BRUSH)));
pdc->Ellipse(rcBounds.left, rcBounds.top,
rcBounds.left + rcBounds.Width(),
rcBounds.top + rcBounds.Height());
HFONT font = CreateFont(int(rcBounds.Height() * 0.7),
int(rcBounds.Width() * 0.5),
0, 0, FW_BLACK, FALSE, FALSE, FALSE,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
CLEARTYPE_QUALITY,
FF_DECORATIVE, NULL);
pdc->SelectObject(font);
pdc->SetTextColor(RGB(255, 0, 0));
DRAWTEXTPARAMS params = { sizeof(DRAWTEXTPARAMS), 1, 0, 0, 1 };
RECT bounds = rcBounds;
CString z(L"Z");
pdc->DrawTextEx(z, &bounds, DT_CENTER | DT_VCENTER | DT_SINGLELINE, ¶ms);
}
如何清除繪圖區域?
我無法在MSVC2010對話框編輯器中重現此操作。我用上面的代碼插入了一個示例activex。無論如何,你是否已經在表單中插入了兩個activex控件副本? – PermanentGuest 2012-08-08 15:37:29
只有一個。它可能是VB6 IDE的一個特點,它並不總是清除調整大小的背景,但是,我非常有興趣知道如何清除代碼背景。 – 2012-08-08 15:40:47