Sdílet prostřednictvím


Windows Forms a přehled nespravovaných aplikací

model Windows Forms aplikace a ovládací prvky můžou spolupracovat s nespravovanými aplikacemi s některými upozorněními. Následující části popisují scénáře a konfigurace, které model Windows Forms aplikace a ovládací prvky podporují a které nepodporují.

ovládací prvky model Windows Forms a aplikace technologie ActiveX

S výjimkou microsoft Internet Exploreru a tříd MICROSOFT Foundation (MFC) nejsou ovládací prvky model Windows Forms podporovány v aplikacích navržených k hostování technologie ActiveX ovládacích prvků. Další aplikace a vývojové nástroje, které jsou schopné hostovat ovládací prvky technologie ActiveX, včetně technologie ActiveX testovacích kontejnerů z verzí sady Visual Studio starších než Visual Studio .NET 2003, nejsou podporovány hostiteli ovládacích prvků model Windows Forms.

Tato omezení platí také pro použití ovládacích prvků model Windows Forms prostřednictvím zprostředkovatele komunikace modelu COM modelu COMPONENT Object Model. Použití ovládacího prvku model Windows Forms prostřednictvím obálky s možností volání modelu COM (CCW) je podporováno pouze v Internet Exploreru. Další informace o interoperabilitě modelu COM najdete v tématu

Interoperabilita modelu COM

Následující tabulka ukazuje dostupnou podporu hostování technologie ActiveX ovládacích prvků model Windows Forms.

verze model Windows Forms Technická podpora
.NET Framework verze 1.0 Internet Explorer 5.01 a novější verze
.NET Framework verze 1.1 a novější Internet Explorer 5.01 a novější verze

Microsoft Foundation Classes (MFC) 7.0 a novější

Hostování komponent model Windows Forms jako ovládacích prvků technologie ActiveX

V rozhraní .NET Framework 1.1 byla podpora rozšířena tak, aby zahrnovala mfc 7.0 a novější verze. Tato podpora zahrnuje všechny kontejnery, které jsou plně kompatibilní s prostředím MFC 7.0 a novějším technologie ActiveX řídicím kontejnerem.

Registrace ovládacích prvků model Windows Forms, protože ovládací prvky technologie ActiveX se nepodporují. com.ms.win32.Ole32.CoCreateInstance Volání metody pro ovládací prvky model Windows Forms také není podporováno. Podporuje se pouze spravovaná aktivace ovládacích prvků model Windows Forms. Jakmile vytvoříte ovládací prvek model Windows Forms, můžete ho hostovat v aplikaci MFC stejně jako ovládací prvek technologie ActiveX.

Pokud chcete v nespravované aplikaci používat ovládací prvky model Windows Forms, musíte buď hostovat modul CLR pomocí nespravovaných rozhraní API pro hostování modulu CLR, nebo používat funkce interoperability C++. Doporučeným řešením je použití funkcí zprostředkovatele komunikace C++.

model Windows Forms v klientských aplikacích modelu COM

Když otevřete formulář Windows Form z klientské aplikace modelu COM, například aplikace Visual Basic 6.0 nebo aplikace MFC, může se formulář chovat neočekávaně. Když například stisknete klávesu TAB, fokus se nezmění z jednoho ovládacího prvku na jiný ovládací prvek. Když stisknete klávesu ENTER, když je fokus na příkazovém tlačítku, událost tlačítka Click se nevyvolá. Může také dojít k neočekávanému chování při stisknutí kláves nebo aktivitě myši.

K tomuto chování dochází, protože nespravovaná aplikace neimplementuje podporu smyčky zpráv, která model Windows Forms vyžaduje správné fungování. Smyčka zpráv poskytovaná klientskou aplikací MODELU COM se v podstatě liší od smyčky zpráv model Windows Forms.

Smyčka zpráv aplikace je interní smyčka programu, která načítá zprávy z fronty zpráv vlákna, překládá je a pak je odesílá do aplikace, která se má zpracovat. Smyčka zpráv pro formulář windows nemá stejnou architekturu jako smyčky zpráv, které poskytují dřívější aplikace, jako jsou aplikace Jazyk Visual Basic 6.0 a aplikace MFC. Zprávy okna, které jsou publikovány do smyčky zprávy, mohou být zpracovávány jinak než Windows Form očekává. Proto může dojít k neočekávanému chování. Některé kombinace stisknutí kláves nemusí fungovat, některé aktivity myši nemusí fungovat nebo některé události nemusí být vyvolány podle očekávání.

Řešení problémů s interoperabilitou

Tyto problémy můžete vyřešit zobrazením formuláře ve smyčce zpráv rozhraní .NET Framework, který je vytvořen pomocí Application.Run metody.

Chcete-li, aby formulář windows fungoval správně z klientské aplikace MODELU COM, musíte ho spustit ve smyčce zpráv model Windows Forms. K tomu použijte jeden z následujících přístupů:

Viz také