Ovládací prvky MFC ActiveX: Ovládací prvek ActiveX pomocí obrázků
Tento článek popisuje běžné typ obrázku a implementaci vašeho ovládacího prvku ActiveX.Témata zahrnují:
Přehled vlastních vlastností obrázku
Provádění vlastní vlastnost obrázek v ovládacím prvku ActiveX
Dodatky k řízení projektu
Přehled vlastních vlastností obrázku
Typ obrázku je jedna skupina typů společné některé ovládací prvky ActiveX.Typ obrázku zpracovává metasoubory, rastry nebo ikony a umožňuje uživateli zadat obrázek zobrazený v ovládacím prvku ActiveX.Vlastní vlastnosti obrázku jsou implementovány pomocí objektu obrázek a Get a Set funkce, které umožňují řízení přístupu uživatele k vlastnosti obrázku.Ovládací prvek uživatelé vlastní vlastnost obrázek papír stránka vlastností obrázku.
Kromě standardní typ obrázku typy písma a barvy jsou také k dispozici.Další informace o použití standardní typ písma v ovládacím prvku ActiveX naleznete v článku ovládací prvky MFC ActiveX: písma pomocí.
Třídy ovládacího prvku ActiveX poskytují několik součástí, které můžete implementovat vlastnost ovládacího prvku obrázek.Tyto součásti:
CPictureHolder třídy.
Tato třída poskytuje snadný přístup k objekt obrázku a funkce pro položky zobrazené ve vlastních vlastností obrázku.
Podpora vlastnosti typu LPPICTUREDISP, je implementováno pomocí funkce Get a Set.
Pomocí třídy zobrazení můžete rychle přidat vlastní vlastnosti nebo vlastnosti, který podporuje typ obrázku.Další informace o přidání vlastnosti ovládacího prvku ActiveX zobrazení třídy naleznete v článku ovládací prvky MFC ActiveX: vlastnosti.
Stránka vlastností manipuluje obrázek vlastnost ovládacího prvku nebo vlastnosti.
Tato stránka vlastností je součástí skupiny akcií vlastností dostupných ovládacích prvků ActiveX.Další informace na 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í vlastní vlastnost obrázek v ovládacím prvku ActiveX
Po dokončení kroků v této části ovládacího prvku můžete zobrazit 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á tlačítko Procházet, který umožňuje uživateli vybrat různé obrázky.
Vlastní vlastnosti obrázku je implementováno pomocí procesu podobný pro provádění jiných vlastností hlavním rozdílem, že vlastní vlastnost musí podporovat typ obrázku.Protože položky vlastnosti obrázek musí být zakresleny pomocí ovládacího prvku ActiveX, musí počet dodatky a úpravy provedené na vlastnost před mohou být plně implementována.
Chcete-li implementovat vlastní vlastnosti obrázku, proveďte následující:
Přidejte kód řízení projektu.
Standardní obrázek vlastnost ID stránky, člena typu CPictureHoldera vlastní vlastnost typu LPPICTUREDISP s Get a Set provádění musí být přidán.
Upravit několik funkcí ve své třídě ovládací.
Tyto změny budou provedeny několik funkcí, které jsou odpovědné za kreslení ovládacího prvku ActiveX.
Dodatky k řízení projektu
Chcete-li přidat vlastnost ID stránky pro standardní vlastnost stránky obrázku vložte následující řádek po BEGIN_PROPPAGEIDS makra v souboru provádění řízení (.CPP):
PROPPAGEID(CLSID_CPicturePropPage)
Musí také zvýšit počet parametr vaše BEGIN_PROPPAGEIDS jedním makro.Následující řádek zobrazuje toto:
BEGIN_PROPPAGEIDS(CMyAxPicCtrl, 2)
Přidat CPictureHolder datový člen třídy řízení vložte následující řádek chráněné části deklarace třídy ovládacího prvku v záhlaví souboru 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:
Přidání obrázku vlastní vlastnosti pomocí Průvodce přidáním vlastností
Načtení ovládacího prvku projektu.
V zobrazení třídy rozbalte knihovnu ovládacího prvku.
Uzel rozhraní pro ovládání (druhý uzel uzel knihovny) tlačítkem otevřete místní nabídku.
V místní nabídce zvolte 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 položku IPictureDisp * pro typ vlastnosti.
Pro Typ implementace, klepněte na tlačítko Metody Get a Set.
Zadejte jedinečné názvy pro získání a nastavení funkcí nebo přijměte výchozí názvy.(Například výchozí názvy GetControlPicture a SetControlPicture jsou použity.)
Klepněte na tlačítko Dokončit.
Vlastnost Průvodce přidáním přidává následující kód mezi mapa odeslání komentáře v záhlaví control (.H) soubor:
IPictureDisp* GetControlPicture(void);
void SetControlPicture(IPictureDisp* pVal);
Navíc následující kód vložený v mapě odeslání provádění řízení (.Soubor CPP):
DISP_PROPERTY_EX_ID(CMyAxPicCtrl, "ControlPicture", dispidControlPicture,
GetControlPicture, SetControlPicture, VT_PICTURE)
Průvodce přidáním vlastností přidává následující funkce dvou se zakázaným inzerováním soubor provádění řízení:
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]
Ovládací prvek třídy a funkce názvy lišit od výše uvedený příklad.
Změny řízení projektu
Po provedení nezbytné dodatky k řízení projektu, musíte upravit několik funkcí, které ovlivňují vykreslování ovládacího prvku ActiveX.Tyto funkce OnResetState, OnDraw, a funkce Get a Set vlastních vlastností obrázku jsou umístěny v souboru provádění kontroly.(Poznámka: v tomto příkladu nazývá ovládací prvek třídy CSampleCtrl, CPictureHolder se nazývá datový člen m_pic, a název vlastnosti vlastní obrázek je ControlPicture.)
V ovládacím prvku OnResetState fungovat, přidejte následující volitelné po volání COleControl::OnResetState:
m_pic.CreateEmpty();
Nastaví tento prázdný obrázek ovládacího prvku obrázek.
Chcete-li nakreslit obrázek správně, volání na CPictureHolder::Render v ovládacím prvku OnDraw funkce.Upravte funkce podobat následující příklad:
void CMyAxPicCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& /*rcInvalid*/)
{
if (!pdc)
return;
m_pic.Render(pdc, rcBounds, rcBounds);
}
Ve funkci Get vlastnosti ovládacího prvku Obrázek vlastní přidejte následující řádek:
return m_pic.GetPictureDispatch();
Ve funkci sady vlastních vlastností obrázku na ovládací prvek přidejte následující řádky:
m_pic.SetPictureDispatch(pVal);
InvalidateControl();
Vlastnost Obrázek musí provádět za trvalé tak, aby se při spuštění zobrazí informace přidané v době návrhu.Přidejte následující řádek COleControl-odvozené třídy DoPropExchange funkce:
PX_Picture(pPX, _T("ControlPicture"), m_pic);
[!POZNÁMKA]
Názvy tříd a funkce se mohou lišit od výše uvedený příklad.
Po provedení změny znovu vytvořte projekt začlenit nová funkce vlastní vlastnosti obrázku a kontejner Test slouží k testování nové vlastnosti.Viz testování vlastnosti a události s kontejnerem Test informace o přístup k testovací kontejner.