Sdílet prostřednictvím


MFC – ovládací prvky ActiveX: Použití obrázků v ovládacím prvku ActiveX

Tento článek popisuje běžný typ obrázku a způsob jeho implementace v ovládacím prvku technologie ActiveX. Témata:

Přehled vlastností vlastního obrázku

Typ obrázku je jednou ze skupin typů běžných pro některé ovládací prvky technologie ActiveX. Typ obrázku zpracovává metasoubory, rastrové obrázky nebo ikony a umožňuje uživateli zadat obrázek, který se má zobrazit v ovládacím prvku technologie ActiveX. Vlastní vlastnosti obrázku se implementují pomocí objektu obrázku a funkcí Get/Set, které umožňují ovládacímu uživateli přístup k vlastnosti Picture. Pomocí stránky vlastností Stock Picture můžete řídit přístup uživatelů k vlastní vlastnosti Obrázek.

Kromě standardního typu obrázku jsou k dispozici také typy Písmo a barva. Další informace o použití standardního typu písma v ovládacím prvku technologie ActiveX naleznete v článku MFC technologie ActiveX Ovládací prvky: Použití písem.

Třídy ovládacích prvků technologie ActiveX poskytují několik komponent, které můžete použít k implementaci Picture vlastnost v rámci ovládacího prvku. Mezi tyto komponenty patří:

  • CPictureHolder – třída.

    Tato třída poskytuje snadný přístup k objektu a funkcím obrázku pro položku zobrazenou vlastní vlastností Picture.

  • Podpora vlastností typu LPPICTUREDISP implementovaná pomocí funkcí Get/Set

    Pomocí zobrazení tříd můžete rychle přidat vlastní vlastnost nebo vlastnosti, které podporují typ obrázku. Další informace o přidání technologie ActiveX vlastností ovládacího prvku pomocí zobrazení třídy naleznete v článku MFC technologie ActiveX ovládací prvky: Vlastnosti.

  • Stránka vlastností, která manipuluje s vlastností nebo vlastnostmi ovládacího prvku Obrázek.

    Tato stránka vlastností je součástí skupiny stránek skladových vlastností, které jsou k dispozici pro technologie ActiveX ovládací prvky. Další informace o technologie ActiveX stránkách vlastností ovládacího prvku naleznete v článku MFC technologie ActiveX ovládací prvky: Použití stránek vlastností stock

Implementace vlastní vlastnosti obrázku v ovládacím prvku technologie ActiveX

Po dokončení kroků uvedených v této části může ovládací prvek zobrazit obrázky vybrané jeho uživatelem. Uživatel může změnit zobrazený obrázek pomocí stránky vlastností, která zobrazuje aktuální obrázek, a má tlačítko Procházet, které uživateli umožňuje vybrat různé obrázky.

Vlastní vlastnost Picture je implementována pomocí procesu podobného k implementaci jiných vlastností, hlavní rozdíl je, že vlastní vlastnost musí podporovat typ obrázku. Vzhledem k tomu, že položka vlastnosti Picture musí být vykreslena ovládacím prvku technologie ActiveX, musí být do vlastnosti provedeno několik doplňků a úprav, aby bylo možné jej plně implementovat.

Pokud chcete implementovat vlastní vlastnost Picture, musíte provést následující:

  • Přidejte kód do řídicího projektu.

    Je třeba přidat standardní ID stránky vlastností Picture, datový člen typu CPictureHoldera vlastní vlastnost typu LPPICTUREDISP s implementací Get/Set.

  • Upravte několik funkcí ve třídě ovládacího prvku.

    Tyto změny budou provedeny v několika funkcích, které jsou zodpovědné za kreslení vašeho technologie ActiveX ovládacího prvku.

Přidání do řídicího projektu

Pokud chcete přidat ID stránky vlastností standardní stránky vlastností Obrázek, vložte následující řádek za makro BEGIN_PROPPAGEIDS do souboru implementace ovládacího prvku (. CPP):

PROPPAGEID(CLSID_CPicturePropPage)

Parametr počtu BEGIN_PROPPAGEIDS makra musíte také zvýšit o jeden. Následující řádek ukazuje toto:

BEGIN_PROPPAGEIDS(CMyAxPicCtrl, 2)

Chcete-li přidat CPictureHolder datový člen do třídy ovládacího prvku, vložte následující řádek pod chráněný oddíl deklarace třídy ovládacího prvku do souboru záhlaví ovládacího prvku (. H):

CPictureHolder    m_pic;

Není nutné pojmenovat svého datového člena m_pic; bude stačit jakýkoliv název.

Dále přidejte vlastní vlastnost, která podporuje typ obrázku:

Přidání vlastní vlastnosti obrázku pomocí Průvodce přidáním vlastnosti

  1. Načtěte projekt ovládacího prvku.

  2. V zobrazení tříd rozbalte uzel knihovny ovládacího prvku.

  3. Kliknutím pravým tlačítkem myši na uzel rozhraní ovládacího prvku (druhý uzel uzlu knihovny) otevřete místní nabídku.

  4. V místní nabídce zvolte Přidat a potom Přidat vlastnost.

  5. Do pole Název vlastnosti zadejte název vlastnosti. V tomto postupu se například ControlPicture používá.

  6. V poli Typ vlastnosti vyberte IPictureDisp* pro typ vlastnosti.

  7. Pro typ implementace klepněte na tlačítko Get/Set Metody.

  8. Zadejte jedinečné názvy funkcí Get a Set nebo přijměte výchozí názvy. (V tomto příkladu se používají výchozí názvy GetControlPicture . SetControlPicture )

  9. Klikněte na Finish (Dokončit).

Průvodce přidáním vlastnosti přidá následující kód mezi komentáře mapy odeslání v záhlaví ovládacího prvku (. H) soubor:

IPictureDisp* GetControlPicture(void);
void SetControlPicture(IPictureDisp* pVal);

Kromě toho byl následující kód vložen do mapy dispečer implementace řízení (. CPP) soubor:

DISP_PROPERTY_EX_ID(CMyAxPicCtrl, "ControlPicture", dispidControlPicture,
   GetControlPicture, SetControlPicture, VT_PICTURE)

Průvodce přidáním vlastnosti také přidá do souboru implementace ovládacího prvku následující dvě funkce zástupných procedur:

IPictureDisp* CWizardGenCtrl::GetControlPicture(void)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   // TODO: Add your dispatch handler code here

   return NULL;
}

void CWizardGenCtrl::SetControlPicture(IPictureDisp* /*pVal*/)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   // TODO: Add your property handler code here

   SetModifiedFlag();
}

Poznámka

Názvy tříd ovládacích prvků a funkcí se můžou lišit od výše uvedeného příkladu.

Úpravy řídicího projektu

Po dokončení potřebných doplňků k řídicímu projektu je potřeba upravit několik funkcí, které ovlivňují vykreslování ovládacího prvku technologie ActiveX. Tyto funkce , OnResetStateOnDrawa Get/Set funkce vlastní Picture vlastnost jsou umístěny v souboru implementace ovládacího prvku. (Všimněte si, že v tomto příkladu je volána CSampleCtrltřída ovládacího prvku , CPictureHolder datový člen se nazývá m_pic a vlastní název vlastnosti obrázku je ControlPicture.)

Do řídicí OnResetState funkce přidejte následující volitelný řádek za volání COleControl::OnResetState:

m_pic.CreateEmpty();
m_pic.CreateEmpty();

Tím se obrázek ovládacího prvku nastaví na prázdný obrázek.

Chcete-li obrázek nakreslit správně, proveďte volání CPictureHolder::Render v ovládací OnDraw funkci. Upravte funkci tak, aby vypadala podobně jako v následujícím příkladu:

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

   m_pic.Render(pdc, rcBounds, rcBounds);
}

Ve funkci Get vlastnosti vlastního obrázku ovládacího prvku přidejte následující řádek:

return m_pic.GetPictureDispatch();
return m_pic.GetPictureDispatch();

Do funkce Set vlastní picture vlastnosti ovládacího prvku přidejte následující řádky:

m_pic.SetPictureDispatch(pVal);
InvalidateControl();

Vlastnost obrázku musí být trvalá, aby se informace přidané v době návrhu zobrazovaly za běhu. Do funkce odvozené DoPropExchange třídy přidejte následující řádekCOleControl:

PX_Picture(pPX, _T("ControlPicture"), m_pic);

Poznámka

Názvy tříd a funkcí se můžou lišit od výše uvedeného příkladu.

Po dokončení úprav znovu sestavte projekt tak, aby zahrnoval nové funkce vlastní vlastnosti Picture a pomocí testovacího kontejneru otestujte novou vlastnost. Informace o přístupu k testovacímu kontejneru najdete v tématu Testování vlastností a událostí s testovacím kontejnerem .

Viz také

MFC – ovládací prvky ActiveX
MFC – ovládací prvky ActiveX: Použití písem
MFC – ovládací prvky ActiveX: Stránky vlastností