.NET meets COM

ActiveX-Controls benutzen

Beim ActiveX-Control handelt es sich um ein ganz einfaches Control mit nur wenigen Möglichkeiten - schließlich soll es ja nur für eine Demonstration eingesetzt werden. Das Control zeichnet einen Kreis in ein Viereck. Normalerweise sind der Hintergrund und die Außenfläche des Kreises weiß. Das Control exportiert eine einzelne Methode mit dem Namen ToggleRed(). Wird die Methode aufgerufen, setzt sie ein Flag im Control und invalidiert das Control:

void CaxctrlCtrl::ToggleRed(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
isRed = ! isRed;
Invalidate();
}

Das führt dazu, dass das Control neu gezeichnet wird - diesmal aber in roter Farbe für die Außenfläche des Kreises:

void CaxctrlCtrl::OnDraw(
CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
if (!pdc)
return;

if( isRed)
{
CBrush b( RGB(255,0,0));
pdc->FillRect(rcBounds, &b);
pdc->Ellipse(rcBounds);
}
else
{
pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
pdc->Ellipse(rcBounds);

}
}