Ovládací prvky ActiveXna Internetu
Ovládací prvky ActiveX jsou aktualizované verze specifikace ovládacího prvku OLE.Ovládací prvky jsou primární architektura pro vývoj programovatelné softwarové součásti, které lze použít v řadě různých kontejnerů, včetně COM podporující webové prohlížeče v síti Internet.Všechny ovládací prvky ActiveX lze ovládací prvek Internet a můžete přidat funkce do aktivního dokumentu nebo být součástí webové stránky.Ovládací prvky na webové stránce můžete vzájemně komunikují pomocí skriptování.
Ovládací prvky ActiveX nejsou omezeny na Internetu.Ovládací prvek ActiveX lze také v kontejneru, tak dlouho, dokud ovládací prvek podporuje rozhraní vyžadované tohoto kontejneru.
Ovládací prvky ActiveX mají několik výhod, včetně:
Méně než předchozí ovládací prvek OLE požadované rozhraní.
Schopnost být bez oken a aktivní vždy na místě.
Aby se ovládací prvek ActiveX, ovládací prvek musí:
Podpora IUnknown rozhraní.
Objekt modelu COM být.
Export Funkce DLLRegisterServer a DLLUnRegisterServer.
V případě potřeby funkce podporovat další rozhraní.
Provádění stávajících ovládacích prvků Internet-Friendly
Návrh ovládacího prvku, který bude pracovat i v prostředí Internetu vyžaduje pozornost pro relativně nízkou přenosovou rychlostí v síti Internet.Můžete použít existující ovládací prvky; Nicméně existují kroky, které byste měli vzít pro zmenšení velikosti kódu a chcete-li stáhnout asynchronně vlastnosti ovládacího prvku.
Pro zvýšení výkonu ovládacích prvků pomocí následujících tipů na faktory ovlivňující účinnost:
Provádění technik popsaných v článku ovládací prvky ActiveX: optimalizace.
Zvažte, jak vytvořit instanci ovládacího prvku.
Být asynchronní; Nedržte jinými programy.
Stahování dat v malé bloky.
Při stahování velkých proudů jako rastrové obrázky nebo video dat, přístup k ovládací prvek data asynchronně ve spolupráci s kontejnerem.Načtení dat přírůstkové nebo progresivní způsobem kooperativně pracovat s jinými ovládacími prvky, které mohou být načítání dat.Kód můžete také stáhnout asynchronně.
Download kód a vlastnosti na pozadí.
Uživatelské rozhraní se stanou aktivní co nejrychleji.
Zvažte, jak trvalá data uložena, vlastnosti a velké datové objekty BLOB (například rastrový obrázek nebo video dat).
Ovládací prvky s významné částky trvalých dat, například velké bitmapy nebo AVI soubory vyžadují pečlivé způsob stahování.Stránku nebo do dokumentu můžete viditelná, co nejdříve a umožnit uživatelům interakci se stránkou při načtení ovládacích prvků data na pozadí.
Psát účinný rutiny běhu a zachování velikosti kódu.
Malé tlačítko a popisek ovládací prvky, s pouze několik bajtů trvalých dat, jsou vhodné pro použití v prostředí Internetu a práce dobře do prohlížeče.
Zvažte pokroku, bude sdělen do kontejneru.
Upozorněte na kontejner pokroku v asynchronní stahování, včetně uživatele můžete začít pracovat se stránkou a po dokončení stahování.Kontejner lze zobrazit průběh (jako procento dokončení) uživateli.
Zvažte, jak ovládacích prvků jsou registrovány v klientském počítači.
Vytvoření nového ovládacího prvku ActiveX
Při vytváření nového ovládacího prvku pomocí Průvodce aplikací, můžete povolit podporu pro asynchronní zástupných názvů, jakož i další optimalizace.Chcete-li přidat podporu pro stažení ovládacího prvku vlastnosti asynchronně, postupujte takto:
Chcete-li vytvořit projekt pomocí MFC ActiveX Control Wizard.
Klepněte na tlačítko New v souboru nabídky.
Vyberte MFC ActiveX Control Wizard z Visual C++ projekty a název projektu.
Na Nastavení stránku, vyberte asynchronně načte vlastnosti.Tato možnost nastaví vlastnost připravena a připravena změnit událost za vás.
Můžete také vybrat další optimalizace jako bez okna aktivace, který je popsán v ovládací prvky ActiveX: optimalizace.
Zvolte Dokončit pro vytvoření projektu.
Chcete-li vytvořit třídu odvozenou od CDataPathProperty
Vytvořit třídu odvozenou od CDataPathProperty.
V jednotlivých zdrojových souborech, které jsou zahrnuty v souboru hlaviček pro ovládací prvek přidejte soubor hlaviček pro třídu dříve, než.
Do této třídy, přepsat OnDataAvailable.Tato funkce je volána vždy, když jsou k dispozici pro zobrazení data.Jako data k dispozici, je zvládá způsobem, který zvolíte, například vykreslením postupně ji.
Následujícím výpisu kódu je jednoduchý příklad postupně zobrazení dat v ovládacím prvku pro úpravy.Všimněte si použití příznaku BSCF_FIRSTDATANOTIFICATION zrušte zaškrtnutí ovládacího prvku pro úpravy.
void CMyDataPathProperty::OnDataAvailable(DWORD dwSize, DWORD bscfFlag) { CListCtrl list_ctrl; CEdit* edit = list_ctrl.GetEditControl(); if ((bscfFlag & BSCF_FIRSTDATANOTIFICATION) && edit->m_hWnd) { edit->SetSel(0, -1); edit->Clear(); } if (dwSize > 0) { CString string; LPTSTR str = string.GetBuffer(dwSize); UINT nBytesRead = Read(str, dwSize); if (nBytesRead > 0) { string.ReleaseBuffer(nBytesRead); edit->SetSel(-1, -1); edit->ReplaceSel(string); } } }
Všimněte si, že je nutné zahrnout AFXCMN.H použití CListCtrl třídy.
Při ovládacího prvku celkové změně stavu (například od nakládky do inicializována nebo interaktivní uživatel), volání COleControl::InternalSetReadyState.Má pouze jednu datovou cestu vlastnost vlastní ovládací prvek, můžete přidat kód na BSCF_LASTDATANOTIFICATION oznámit kontejneru na dokončení stahování.Příklad:
if (bscfFlag & BSCF_LASTDATANOTIFICATION) { GetControl()->InternalSetReadyState(READYSTATE_COMPLETE); }
Přepište OnProgress.V OnProgress, jsou předány zobrazující maximální rozsah čísla a čísla ukazující, jak daleko podél aktuální stahování je.Tato čísla můžete zobrazit stav jako procentuální hodnota dokončení pro uživatele.
Další postup přidá vlastnost ovládacího prvku pro použití pouze odvozené třídy.
Chcete-li přidat vlastnost
V Zobrazení třídy, klepněte pravým tlačítkem myši na rozhraní pod uzlu knihovny a vyberte Přidat, pak Přidat vlastnost.Tato akce spustí Průvodce přidáním vlastnosti.
V Průvodce přidáním vlastnosti, vyberte Set/Get metody přepínač, zadejte Název vlastnosti, například EditControlText, a vyberte BSTR jako typ vlastnosti.
Klepněte na tlačítko Dokončit.
Deklaraci členské proměnné v CDataPathProperty-odvozené třídy a třídy ovládacího prvku ActiveX.
CMyDataPathProperty EditControlText;
Implementace Get/Set metody.Pro získat, vrátí řetězec.Pro Set, načtení vlastností a volání SetModifiedFlag.
BSTR CMFCActiveXControlCtrl::GetEditControlText(void) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CString strResult; strResult = EditControlText.GetPath(); return strResult.AllocSysString(); } void CMFCActiveXControlCtrl::SetEditControlText(LPCTSTR newVal) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); Load(newVal, EditControlText); SetModifiedFlag(); }
V DoPropExchange, přidejte následující řádek:
PX_DataPath(pPX, _T("DataPath"), EditControlText);
Přepsat ResetData vlastnost obnovit jeho ovládací prvek přidáním následujícího řádku upozornění:
EditControlText.ResetData();
Rozhodnutí, zda jsou odvozeny z CDataPathProperty nebo CCachedDataPathProperty
V předchozím příkladu je popsán postup pro odvození vlastností ovládacího prvku z CDataPathProperty.Toto je dobrou volbou, pokud stahujete data v reálném čase, které se často mění, a pro které nepotřebujete zachovat všechna data, ale pouze aktuální hodnotu.Příkladem je burzovním ovládacím prvku.
Můžete také odvozovat z CCachedDataPathProperty.V tomto případě stažených dat je uložen do mezipaměti v paměti souboru.To je dobrou volbou, pokud potřebujete zachovat stažených dat, například ovládací prvek, který vykreslí postupně rastrový obrázek.V tomto případě má třída členskou proměnnou obsahující data:
CMemFile m_Cache;
Ve třídě ovládacího prvku ActiveX můžete použít tento soubor mapované paměti v OnDraw k zobrazení dat.Ve vašem ovládacím prvku ActiveX CCachedDataPathProperty-odvozené třídy, přepsat členské funkce OnDataAvailable a znehodnotit ovládací prvek po volání provádění základní třídy.
void CMyCachedDataPathProperty::OnDataAvailable(DWORD dwSize, DWORD bscfFlag)
{
CCachedDataPathProperty::OnDataAvailable(dwSize, bscfFlag);
GetControl()->InvalidateControl();
}
Stahování dat asynchronně pomocí ovládacích prvků ActiveX
Stahování dat přes síť by měla být provedena asynchronně.Výhodou to tak je, že pokud je přenést velké množství dat nebo při pomalém připojení neblokuje proces stahování ostatních procesů na straně klienta.
Asynchronní zástupných názvů umožňují asynchronně stahovat data přes síť.Čtení operace na asynchronní zástupný název vrátí hodnotu okamžitě, i v případě, že operace nebyla dokončena.
Například pokud pouze 10 bajtů, které jsou k dispozici, a čtení je volána asynchronně, 1K souboru pro čtení neblokuje, ale vrátí se v současnosti 10 bajtů.
Můžete implementovat asynchronní zástupných názvů použití CAsyncMonikerFile třídy.Však můžete použít ovládací prvky ActiveX CDataPathProperty třídy, která je odvozena z CAsyncMonikerFile, při provádění asynchronní ovládací prvek – vlastnosti.
ASYNDOWN vzorek ukazuje, jak nastavit do asynchronní smyčky pomocí časovačů číst data.ASYNDOWN je podrobně popsána v následujícím článku znalostní báze Knowledge Base, "Postupy: AsyncDown ukazuje asynchronní stahování dat" (Q177244) a je k dispozici v Centru pro stahování Microsoft Download Center. (Další informace o stahování souborů z Microsoft Download Center naleznete v článku "Jak chcete získat soubory z Online služby podpory" (Q119591) znalostní báze Microsoft Knowledge Base.) Články znalostní báze můžete vyhledat na disku CD-ROM knihovny MSDN nebo na https://support.microsoft.com/support.
Základní technika používaná v ASYNDOWN je nastavit časovač CDataPathProperty::OnDataAvailable k označení, pokud jsou k dispozici data.Při přijetí zprávy časovače aplikace čte v blocích 128 bajtů dat a vyplní ovládací prvek pro úpravy.Data nejsou k dispozici při zpracování zprávy časovače, časovač vypnutý.OnDataAvailablespustí časovač, pokud další data dorazí později.
Zobrazení ovládacího prvku na webové stránce
Zde je příklad značky a atributy pro vložení ovládacího prvku na webové stránce.
<OBJECT
CLASSID="clsid:FC25B780-75BE-11CF-8B01-444553540000"
CODEBASE="/ie/download/activex/iechart.ocx"
ID=chart1
WIDTH=400
HEIGHT=200
ALIGN=center
HSPACE=0
VSPACE=0
>
<PARAM NAME="BackColor" value="#ffffff">
<PARAM NAME="ForeColor" value="#0000ff">
<PARAM NAME="url" VALUE="/ie/controls/chart/mychart.txt">
</OBJECT>
Aktualizace existujícího ovládacího prvku OLE použít nové funkce ovládacího prvku ActiveX
Pokud váš ovládací prvek OLE byl vytvořen s verzí aplikace Visual C++ před 4.2, existují kroky, pomocí kterých můžete zlepšit výkon a vylepšit jeho funkcionalitu.Podrobný popis těchto změn naleznete v ovládací prvky ActiveX: optimalizace.
Chcete-li přidat podporu asynchronní vlastnosti do existujícího ovládacího prvku, je nutné přidat vlastnost připravena a ReadyStateChange události sami.V konstruktoru ovládacího prvku přidejte:
m_lReadyState = READYSTATE_LOADING;
Připravena bude aktualizovat, váš kód je stažené voláním COleControl::InternalSetReadyState.Jedno místo, které by mohly volat InternalSetReadyState je OnProgress přepsání CDataPathProperty-odvozené třídy.
Potom postupujte podle pokynů v vytváření nového ovládacího prvku ActiveX.