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 jak implementovat do ovládacího prvku technologie ActiveX.Témata zahrnují:
Přehled vlastností vlastní obrázek
Provádění vlastnost vlastní obrázek do ovládacího prvku technologie ActiveX
Dodatky k řízení projektu
Přehled vlastností vlastní obrázek
Typ obrázku je jedním ze skupiny typů, které jsou společné pro některé ovládací prvky ActiveX.Typ obrázku zpracování metasouborů a rastrové obrázky, ikony a umožňuje uživateli zadat obrázek, který se má zobrazit v ovládacím prvku ActiveX.Vlastní vlastnosti obrázku jsou implementovány pomocí objektu obrázku a Get a Set funkce, které umožňují řízení přístupu uživatele k vlastnosti obrázku.Ovládací prvek uživatelé vlastnost vlastní obrázek papír stránka vlastností obrázku.
Kromě standardní typ obrázku jsou typy písma a barvy k dispozici.Další informace o použití standardní písmo v ovládacího prvku technologie ActiveX naleznete v článku ovládací prvky MFC ActiveX: písma pomocí.
ActiveX control třídy poskytují několik součástí, které lze použít k implementaci vlastnosti Obrázek ovládacího prvku.Mezi tyto součásti patří:
CPictureHolder třídy.
Tato třída poskytuje snadný přístup k objektu obrázku a funkce pro položku vlastnost vlastní obrázek zobrazit.
Podpora vlastnosti typu LPPICTUREDISP, je implementováno pomocí funkcí Get/Set.
Pomocí zobrazení tříd můžete rychle přidat vlastní vlastnosti nebo vlastnosti, který podporuje typ obrázku.Další informace o přidávání vlastností ovládacího prvku ActiveX pomocí zobrazení tříd naleznete v článku ovládací prvky MFC ActiveX: vlastnosti.
Stránka vlastností, který manipuluje s vlastnost obrázek ovládacího prvku nebo vlastnosti.
Tato vlastnost je součástí skupiny stránek uloženou vlastnost k dispozici pro ovládací prvky ActiveX.Další informace o stránkách vlastností ovládacího prvku ActiveX naleznete v článku ovládací prvky MFC ActiveX: pomocí stránky vlastností populace
Provádění vlastnost vlastní obrázek do ovládacího prvku technologie ActiveX
Po dokončení kroků v této části můžete zobrazit ovládací prvek obrázky zvolí uživatel.Uživatel může změnit zobrazený obrázek pomocí stránky vlastností, který zobrazuje aktuální obrázek a má procházet tlačítko, které umožňuje uživateli vybrat různé obrázky.
Vlastní vlastnost obrázek je implementováno pomocí procesu podobná té, která používá pro provádění jiné vlastnosti hlavní rozdíl, že vlastní vlastnost musí podporovat typ obrázku.Vzhledem k tomu, že ovládací prvek ActiveX musí být zakresleny položky vlastnost obrázek, počet dodatků a změn je nutno provádět vlastnost dříve, než mohou být plně implementována.
Implementovat vlastní vlastnost obrázek, postupujte takto:
Přidejte kód do projektu ovládací.
Standardní obrázek vlastnost ID stránky, datový člen typu CPictureHoldera vlastní vlastnost typu LPPICTUREDISP s Get a Set musí být přidán implementace.
Upravit několik funkcí ve třídě ovládacího.
Tyto změny budou provedeny několik funkcí, které jsou zodpovědné za vykreslení ovládacího prvku technologie ActiveX.
Dodatky k řízení projektu
Chcete-li přidat ID stránky vlastností pro standardní stránku vlastností obrázku, vložte následující řádek po BEGIN_PROPPAGEIDS makra v souboru implementace ovládacího prvku (.CPP):
PROPPAGEID(CLSID_CPicturePropPage)
Musíte také zvýšit počet parametr v BEGIN_PROPPAGEIDS makro po jednom.To ukazuje následující řádek:
BEGIN_PROPPAGEIDS(CMyAxPicCtrl, 2)
Chcete-li přidat CPictureHolder datový člen na ovládací prvek třídy vložte následující řádek v části chráněné deklarace třídy ovládacího prvku v souboru záhlaví ovládacího prvku (.H):
CPictureHolder m_pic;
Není nutné název datového členu m_pic; postačí libovolný název.
Dále přidejte vlastní vlastnost, která podporuje typ obrázku:
Chcete-li přidat vlastnost vlastní obrázek pomocí Průvodce přidáním vlastnosti
Načtěte projektu ovládacího prvku.
V zobrazení tříd rozbalte uzel knihovny ovládacího prvku.
Klepněte pravým tlačítkem na uzel rozhraní pro ovládací prvek (druhý uzel uzlu knihovny) a místní nabídce.
V místní nabídce klepněte na příkaz Přidat a Přidat vlastnost.
V Název vlastnosti zadejte název vlastnosti.Například účely, ControlPicture se používá v tomto postupu.
V Vlastnost typu vyberte IPictureDisp * pro typ vlastnosti.
Pro Typ implementace, klepněte na tlačítko Metody Get/Set.
Zadejte jedinečné názvy pro Get a Set funkce nebo přijměte výchozí názvy. (V tomto příkladu výchozí názvy GetControlPicture a SetControlPicture slouží.)
Klepněte na tlačítko Dokončit.
Průvodce přidáním vlastnosti přidá následující kód mezi mapy odeslání poznámky v záhlaví ovládacího prvku (.H) soubor:
IPictureDisp* GetControlPicture(void);
void SetControlPicture(IPictureDisp* pVal);
Kromě toho byl vložen následující kód v mapě odeslání implementace ovládacího prvku (.Soubor CPP):
DISP_PROPERTY_EX_ID(CMyAxPicCtrl, "ControlPicture", dispidControlPicture,
GetControlPicture, SetControlPicture, VT_PICTURE)
Průvodce přidáním vlastnosti také přidá následující funkce dvou se zakázaným inzerováním v souboru implementace ovládacího prvku:
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]
Do třídy a funkce názvy ovládacích prvků se může lišit od výše uvedeném příkladu.
Změny v řízení projektu
Po provedení nezbytné dodatky k řízení projektu, je třeba upravit několik funkcí, které mají vliv na vykreslení ovládacího prvku technologie ActiveX.Tyto funkce, OnResetState, OnDraw, a funkce Get a Set vlastnosti vlastní obrázek, jsou umístěny v souboru implementace ovládacího prvku. (Poznámka: v tomto příkladu nazývá třídu ovládacího prvku CSampleCtrl, CPictureHolder se nazývá datový člen m_pic, a název vlastnost vlastní obrázek je ControlPicture.)
V ovládacím prvku OnResetState funkce, přidejte následující řádek volitelné po volání COleControl::OnResetState:
m_pic.CreateEmpty();
To nastaví prázdný obrázek ovládacího prvku obrázek.
Nakreslete obrázek správně, se dovolat do CPictureHolder::Render v ovládacím prvku OnDraw funkce.Upravte funkci podobat následujícímu 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 vlastnost vlastní obrázek ovládacího prvku přidejte následující řádek:
return m_pic.GetPictureDispatch();
Ve funkci nastavení vlastní vlastnost obrázek ovládacího prvku přidejte následující řádky:
m_pic.SetPictureDispatch(pVal);
InvalidateControl();
Vlastnost Obrázek musí být proveden trvalé tak, aby informace přidané v době návrhu se zobrazí v době běhu.Přidejte následující řádek COleControl-odvozené třídy DoPropExchange funkce:
PX_Picture(pPX, _T("ControlPicture"), m_pic);
[!POZNÁMKA]
Jména třídy a funkce se mohou lišit od výše uvedeném příkladu.
Po provedení změny znovu začlenit nové funkce vlastnost vlastní obrázek a použít testovací kontejner k testování nové vlastnosti projektu.Viz Testování vlastností a událostí s kontejnerem Test informace o získání přístupu k kontejner testu.