Ovládací prvky ActiveX na Internetu
Ovládací prvky ActiveX jsou aktualizovaná verze specifikace ovládací prvek OLE.Ovládací prvky jsou primární architektura pro vývoj programovatelné softwarové součásti, které lze použít v mnoha různých kontejnerů včetně COM podporující webové prohlížeče Internetu.Ovládacího prvku ActiveX lze ovládací prvek Internet a můžete přidat jeho funkce do aktivního dokumentu nebo část webové stránky.Ovládací prvky na webové stránce můžete komunikovat pomocí skriptování.
Ovládací prvky ActiveX nejsou omezeny na Internetu.Ovládací prvek ActiveX lze také v kontejneru, jako ovládací prvek podporuje rozhraní vyžadované 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 místo.
Ovládací prvek musí na být ovládací prvek ActiveX:
Podpora IUnknown rozhraní.
Objekt COM se.
Export DLLRegisterServer a DLLUnRegisterServer.
Potřeby pro funkci podporovat další rozhraní.
Provádění existujících prvků Internet Friendly
Navrhování ovládací prvek, který bude pracovat i v prostředí Internetu vyžaduje zvážení nízkou přenosovou rychlostí v síti Internet.Můžete použít existující ovládací prvky; jsou však postup, kterým by zmenšit velikost váš kód a stáhnout asynchronně vlastnosti ovládacího prvku.
Chcete-li zlepšit výkon ovládacích prvků pomocí následujících tipů na důležité informace o účinnosti:
Implementace metody popsané v článku ovládací prvky ActiveX: optimalizace.
Zvažte, jak vytvořit instanci ovládacího prvku.
Být asynchronní; Nedržte nahoru Další programy.
Stažení dat v malé bloky.
Při stahování velkých datových proudů jako rastrové obrázky nebo video dat, přístup k datům ovládacího prvku ve spolupráci s kontejnerem asynchronně.Načtení dat způsobem přírůstkové nebo progresivní, práce s ovládací prvky, které může být načítání dat ve.Kód můžete také stahování asynchronně.
Kód stažení a vlastnosti na pozadí.
Uživatelské rozhraní stane aktivní co nejrychleji.
Zvažte, jak trvalá data uložena, vlastnosti a velké datové BLOBs (například rastrový obrázek nebo video dat).
Ovládací prvky s významné množství trvalých dat, jako je například velký bitmapy nebo soubory AVI vyžaduje pečlivé způsob stahování.Dokument nebo stránku můžete viditelná, co nejdříve a umožňují uživateli pracovat s stránky, zatímco prvky načítat data na pozadí.
Zápis účinný rutiny zachovat velikost kódu a čas spuštění.
Malé tlačítko a popisek prvky s pouze několik bajtů trvalá data jsou vhodné pro použití v prostředí Internetu a práce i uvnitř prohlížeče.
Zvažte pokroku je sdělena kontejneru.
Uvědomí kontejner pokroku v asynchronní ke stažení včetně uživatele můžete začít pracovat na stránce a po dokončení stahování.Kontejner zobrazit průběh (jako procento dokončení) pro uživatele.
Zvažte, jak se ovládací prvky 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 stahování vlastnosti ovládacího prvku asynchronně, postupujte takto:
Vytvoření projektu pomocí průvodce ovládací prvek MFC ActiveX
Klepněte na New na soubor nabídce.
Vyberte Průvodce ovládacího prvku MFC ActiveX z aplikace Visual C++ projekty a zadejte název projektu.
Na Nastavení řízení stránky vyberte asynchronně načte vlastnosti.Tato možnost nastaví vlastnost připravena a připravena změnit událost.
Můžete také vybrat další optimalizace jako Windowless aktivace, popsané v ovládací prvky ActiveX: optimalizace.
Zvolte Dokončit vytvořte projekt.
Vytvoření třídy odvozené od CDataPathProperty
Vytvoření třídy odvozené od CDataPathProperty.
V každé zdrojové soubory, které obsahuje soubor záhlaví ovládacího prvku přidáte soubor záhlaví pro tuto třídu před ním.
V této třídě přepsat OnDataAvailable.Tato funkce se nazývá kdykoli k dispozici pro zobrazení data.Jako data k dispozici, lze jej zpracovat libovolným způsobem, například jako zvolíte napadených postupně.
Následující výpis kódu je jednoduchý příklad postupně zobrazení dat v ovládacím prvku pro úpravy.Poznámka: použití příznaku BSCF_FIRSTDATANOTIFICATION 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 musí zahrnovat AFXCMN.H používat CListCtrl třídy.
Ovládání jeho celkový stav změní (například z načítání do inicializována nebo interaktivní uživatel), volání COleControl::InternalSetReadyState.Ovládací prvek má vlastnost pouze jednu datovou cestu, 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řepsat OnProgress.V OnProgress, jsou předány ukazující maximální rozsah číslo a číslo ukazující, jak daleko podél aktuální stahování je.Tato čísla můžete uživateli zobrazit stav dokončeno.
Další postup přidá vlastnost ovládacího prvku pro použití pouze odvozené třídy.
Přidat vlastnost
V Zobrazení třídy, pravým tlačítkem myši na rozhraní pod uzlem knihovna a vyberte Přidat, pak Přidat vlastnost.Spustí Průvodce přidat vlastnost.
V Průvodce přidat vlastnost, vyberte Nastavit nebo získat metody přepínací tlačítko, zadejte Název vlastnosti, například EditControlText, a vyberte BSTR jako typ vlastnosti.
Klepněte na tlačítko Dokončit.
Členské proměnné deklarovat vaše CDataPathProperty-odvozené třídy a třídy ovládacího prvku ActiveX.
CMyDataPathProperty EditControlText;
Implementace Get a Set metod.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 oznámit vlastnosti obnovit jeho přidáním následujícího řádku:
EditControlText.ResetData();
Rozhodnutí, zda vyplývají z CDataPathProperty nebo CCachedDataPathProperty
Předchozí příklad popisuje kroky pro odvození vlastnost ovládacího prvku z CDataPathProperty.Toto je dobrou volbou v případě stahování dat v reálném čase často změny a pro které není třeba uchovávat všechna data, ale pouze aktuální hodnotu.Je například burzovní telegraf řízení.
Také lze odvodit z CCachedDataPathProperty.V tomto případě stažených dat 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ý vykresluje postupně bitmapy.V takovém případě má třída obsahující data členské proměnné:
CMemFile m_Cache;
Ve své třídě ovládací prvek ActiveX, můžete použít tento soubor paměti namapované v OnDraw k zobrazení dat.V ovládacím prvku ActiveX CCachedDataPathProperty-odvozené třídy, přepsat členské funkce OnDataAvailable a řízení, neruší 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 v síti musí být provedena asynchronně.Výhoda tím tak je, že pokud je převedena velké množství dat nebo pokud je připojení pomalé, proces stahování neblokuje jinými procesy na straně klienta.
Asynchronní zástupných názvů umožňují asynchronně stáhnout data přes síť.Operace čtení na asynchronní zástupný název vrátí okamžitě, i v případě, že operace nebyla dokončena.
Například pokud pouze 10 bajtů, které jsou k dispozici a čtení se nazývá asynchronně 1 kB soubor, čtení neblokuje, ale vrátí se nyní k dispozici 10 bajtů.
Implementace asynchronní zástupných názvů použití CAsyncMonikerFile třídy.Však můžete použít ovládací prvky ActiveX CDataPathProperty třídy odvozené od CAsyncMonikerFile, k provádění asynchronního ovládací prvek – vlastnosti.
ASYNDOWN příklad znázorňuje nastavení asynchronní smyčky, číst data pomocí časovače.ASYNDOWN je podrobně popsána v článku znalostní báze "Postupy: AsyncDown ukazuje asynchronní stahování dat" (Q177244) a pro stahování Microsoft Download Center je k dispozici.(Další informace o stahování souborů z webu služby Stažení softwaru naleznete v článku "Jak k získání služby podpory společnosti Microsoft soubory z Online" (Q119591) v databázi Microsoft Knowledge Base.) Články znalostní báze Knowledge Base můžete najít na disku CD-ROM MSDN Library, nebo na https://support.microsoft.com/support.
Základní technika používaná v ASYNDOWN, je nastavení časovače CDataPathProperty::OnDataAvailable k označení, pokud je k dispozici data.Při doručení zprávy časovače aplikace čte v blocích 128 bajtů dat a výplní ovládacího prvku pro úpravy.Jestliže data nejsou k dispozici při zpracování zprávy časovače, časovač je vypnuto.OnDataAvailablePokud později více dat, zapne časovač.
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 pomocí nové funkce ovládacího prvku ActiveX
Ovládání OLE byl vytvořen s verzí Visual C++ před 4.2, existují kroky, kterými můžete zlepšit výkon a zvýšit jeho funkce.Podrobný popis těchto změn naleznete v ovládací prvky ActiveX: optimalizace.
Podpora asynchronní vlastnost přidáváte do existujícího ovládacího prvku, je nutné přidat vlastnost připravena a ReadyStateChange událostí sami.Konstruktor pro ovládací prvek přidáte:
m_lReadyState = READYSTATE_LOADING;
Aktualizujte stavu připraveno stažené kódu voláním COleControl::InternalSetReadyState.Jedno místo, které by mohly volat InternalSetReadyState je OnProgress přepsat z CDataPathProperty-odvozené třídy.
Potom postupujte podle vytváření nového ovládacího prvku ActiveX.