Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Microsoft Visual C++ .NET (2002) ve Microsoft Visual C++ .NET (2003), .NET Framework tarafından sağlanan bir yönetilen kod model hem de yerel Windows kod modeli yönetilmeyen destekler. Bu makaledeki bilgiler yalnızca yönetilmeyen Visual C++ kodu uygulanır.
AtlEvnt.exe ATL IDispEventImpl ve IDispEventSimpleImpl sınıfları kullanarak bir olay havuzunun nasıl gösterir. Birleşik denetimleri veya ATL iletişim kutuları için sihirbaz IDispEventImpl devralma listesinde havuzu ayarlamaya ekler. Bu nedenle bu örnek, odağı havuzlarını diğer COM nesneleri ve istemcilerine türleri oluşturmaktır. Bu yalnızca kaynak türünü görüntüleme arabirimi arabirimler için geçerlidir.
Bir tür kitaplığına erişiminiz IDispEventImpl kullanın. Tür kitaplığına veya tür kitaplığı yüklemesinde daha verimli olmasını istediğiniz erişim olmayan IDispEventSimpleImpl kullanın.
Örnek bir bağlantı yanı sıra, bu makalenin <a1>EK BILGI</a1> bölümü proje ve her sınıfın nasıl bilgileri hakkında genel bir bakış içerir.
Aşağıdaki dosyalar Microsoft Yükleme Merkezi'nden yüklenebilir:
Visual C++ 6.0
Bu resmi kapatBu resmi aç
Download Atlevnt.exe now
(http://download.microsoft.com/download/vc60pro/sample7/1/win98/en-us/atlevnt.exe)
Microsoft Destek dosyalarını karşıdan yükleme hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
119591
(http://support.microsoft.com/kb/119591/
)
Microsoft Destek Dosyaları Çevrimiçi Hizmetler'den Nasıl Alınır
Microsoft bu dosyada virüs taraması yapmıştır. Microsoft, dosyanın kullanıma sunulduğu tarihteki en güncel virüs tarama yazılımını kullanmıştır. Dosya, üzerinde herhangi bir yetkisiz değişiklik yapılmasını engellemeye yardım eden geliştirilmiş güvenliğe sahip sunucularda depolanır.
Visual C++ .NET
Bu resmi kapatBu resmi aç
Download Atlevntvcnet.exe now
(http://download.microsoft.com/download/visualstudionet/sample/1.11/win98mexp/en-us/atlevntvcnet.exe)
Yayım Tarihi: 25 Haziran 2002
Microsoft Destek dosyalarını karşıdan yükleme hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
119591
(http://support.microsoft.com/kb/119591/
)
Microsoft Destek Dosyaları Çevrimiçi Hizmetler'den Nasıl Alınır
Microsoft bu dosyada virüs taraması yapmıştır. Microsoft, dosyanın kullanıma sunulduğu tarihteki en güncel virüs tarama yazılımını kullanmıştır. Dosya, üzerinde herhangi bir yetkisiz değişiklik yapılmasını engellemeye yardım eden geliştirilmiş güvenliğe sahip sunucularda depolanır. ATLEVNT çalışma iki proje, AtlEvnt ve EventSrc oluşur. -D seçeneği, AtlEvnt.exe çalıştırdığınızda kullanın:
AtlEvnt çalışma iki proje, AtlEvnt ve EventSrc oluşur.
EventSrc projedir varsayılan ATL DLL proje nesnesiyle bir"basit." Basit Nesne yok yöntemlerine sahiptir ve bağlantı noktaları ve IPersist arabirim destekleyecek şekilde değiştirdi. COM nesnesi tick adlı tek bir yöntem olan bir varsayılan kaynak arabirimi (aşağıda) gösterir. COM nesnesi, bu yöntem bu süreölçer temel bağlı tüm havuzu nesnelerin çağırır:
ATL EXE projesinde The AltEvnt projedir. Bir ATL CDialogImpl sınıfı, bir basit iletişim uygulamasına projeyi açmak için eklenmiştir. Dört havuzlarını projeye (IDispEventImpl kullanarak iki ve iki IDispEventSimpleImpl kullanarak) eklenmiştir. Her havuz EventSrc COM nesnesi tarafından harekete tick olayını işlemek için bir havuzu nesnesi sağlama farklı bir şekilde gösterilmiştir.
Iletişim kutusundaki dört düğme vardır ve bir düğmeyi tıklatarak, ilgili havuzu EventSrc COM nesnesine bağlayan sağlar. Liste kutusunda bir dizi form görüntüler "Sinkn: Tick olay alınan - x" her zaman havuz olay işleyicisinde adlı onay. Bağlantı kurulduktan sonra düğme devre dışı bırakılır. Bağlantı oluşturma herhangi bir sorun oluşursa düğme metni bir <a1>form</a1> "Bağlan Err-burada"s", HRESULT hatası gösterir hr" dizesiyle yerini alır. Gelen "Hata arama" aracı, Visual C++ ile sürüm 6.0 hata hakkında bir açıklama almak için kullanın.
Bu örnek çalıştırmak için <a0></a0>, önce EventSrc Projeyi derleyin ve EventSrc nesne başarılı bir şekilde kayıtlı olduğundan emin olun. Sonra AtlEvnt Projeyi derleyin ve çalıştırın. (Tamam ve iptal dışında) dört düğme içeren BIR iletişim kutusu ve liste kutusu görüntülenir. Dört düğme dört havuzlarını temsil eder. Bir düğmeyi tıklatarak havuz, veri kaynağına bağlanır. Bağlantı yapıldıktan sonra dizeleri, her bir işleyici adlı liste kutusuna eklenir.
IDispEventImpl ' türetilmiş bir sınıf oluşturun. Yeni bir sınıf oluşturmak için Ekle menüsünden Yeni sınıf ' ı tıklatabilirsiniz. Her farklı havuzu için bir IDispEventImpl sınıfı ilk parametre olarak benzersiz bir KIMLIK ile <a1>devralma</a1> listesine ekleyin. Havuzu sınıfı, bir COM nesnesi (olarak bileşik denetim için) veya yalnızca IdispEventImpl ' türetilmiş bir sınıf olabilir:
// Just a sink.
class CSinkObj : public IDispEventImpl<IDC_OBJ, CSinkObj>
{
...
}
- veya -
// COM object that also implements a sink (as in a composite
// control).
class ATL_NO_VTABLE CSinkObj :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CSinkObj, &CLSID_SinkObj>,
public IDispatchImpl<ISinkObj, &IID_ISinkObj, &LIBID_SINKPROJLib>,
public IDispEventImpl<IDC_SRCOBJ, CSinkObj>
{
...
}
Kaynak arabirim KIMLIĞI, tür kitaplığı KIMLIĞI, birincil ve ikincil sürüm numaraları kaynak arabirimi, açıkça IdispEventImpl parametre olarak içeren tür kitaplığı belirtin, veya bu bilgileri, tür kitaplığından ayıklamak için AtlGetObjectSourceInterface() kullanın. Olay tetikleme COM nesnesi IProvideClassInfo2 veya IPersist * uygulamak AtlGetObjectSourceInterface() kullanılmasını gerektirir:
class CSinkObj : public IDispEventImpl<IDC_OBJ, CSinkObj>
{
...
}
- veya -
class CSinkObj : public IDispEventImpl<IDC_OBJ, CSinkObj,
&DIID__EventSink, // Source interface GUID.
&LIBID_COMOBJLib, // typelib ID containing source interface.
1, // Major version # of LIBID_COMOBJLib.
0> // Minor version # of LIBID_COMOBJLib.
{
...
}
Yukarıdaki sınıf ve kaynak arabiriminin işlemek istediğiniz her olaya karşılık gelen bir havuz giriş havuzu eşleme ekleyin. Kaynak arabirim olarak bir parametre IDispEventImpl, aksi halde belirtilen SINK_ENTRY_EX() kullanın, SINK_ENTRY() kullanın:
class CSinkObj : public IDispEventImpl<IDC_SRCOBJ, CSinkObj>
{
public:
BEGIN_SINK_MAP(CSinkObj)
SINK_ENTRY(IDC_SRCOBJ, 1 /*DISPID*/, OnTick /*Event Handler*/)
END_SINK_MAP()
...
}
- veya -
class CSinkObj : public IDispEventImpl<IDC_OBJ, CSinkObj,
&DIID__EventSink, &LIBID_COMOBJLib, 1, 0>
{
public:
BEGIN_SINK_MAP(CSinkObj)
SINK_ENTRY_EX(IDC_SRCOBJ, DIID__EventSink, 1, OnTick)
END_SINK_MAP()
...
}
Olay işleyicisi yöntemleri Sınıfınıza ekleyin. Çağırma __stdcall sahip olduklarından emin olun:
class CSinkObj : public IDispEventImpl<IDC_SRCOBJ, CSinkObj3>
{
public:
BEGIN_SINK_MAP(CSinkObj)
SINK_ENTRY(IDC_SRCOBJ, 1 , OnTick)
END_SINK_MAP()
// event handler for event defined in idl as
// [id(1)] HRESULT Tick([in] long tckcnt);
HRESULT __stdcall OnTick(long tickcnt)
{
ATLTRACE("CSinkObj::OnTick\n");
return S_OK;
}
...
}
Havuz arama DispEventAdvise() tarafından COM nesnesine bağlanın. Sonra kaynak arabirimi IDispEventImpl parametre olarak belirtilmişse, arama:
// pUnk is the IUnknown pointer of the COM object that fires events.
// pSinkObj is an instance of the CSinkObj class.
pSinkObj->DispEventAdvise(pUnk);
veya başka bir çağrı:
// Make sure the COM object corresponding to pUnk implements
// IProvideClassInfo2 or IPersist*.
// Call this method to extract info about source type library if you
// specified only two parameters to IdispEventImpl.
AtlGetObjectSourceInterface(pUnk, &pSinkObj->m_libid,
&pSinkObj->m_iid, &pSinkObj->m_wMajorVerNum,
&pSinkObj->m_wMinorVerNum);
hr = pSinkObj->DispEventAdvise(pUnk, &pSinkObj->m_iid);
IDispEventSimpleImpl uygulamak için gerekli adımları
IDispEventSimpleImpl ' türetilmiş bir sınıf oluşturun. Kaynak arabirimi belirtilmesi gerekir.
Aşağıdaki adım 3 yukarıdaki dışında SINK_ENTRY_INFO() işlemek istediğiniz kaynak arabirimi için her yöntemi ekleyin. IDispEventSimpleImpl tür kitaplığına erişimi olmayan bu yana bir _ATL_FUNC_INFO yapısında her olay işleyici, her olay işleyici için bir tane hakkında bilgi vermek zorundasınız.
SINK_ENTRY_EX() kullanabileceğiniz bir _ATL_FUNC_INFO yapısı içinde SINK_ENTRY_INFO() belirtmek yerine, makro ve geçersiz kılma sanal işlevi _ATL_FUNC_INFO doldurmak için GetFuncInfoFromId() yapısı, aşağıdaki gösterildiği gibi.
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:194179
(http://support.microsoft.com/kb/194179/en-us/
)
Bu makaleyi kullanmak için ne kadar kişisel çaba harcadınız?
Çok az
Az
Orta
Fazla
Çok fazla
Bu bilgiyi geliştirmemiz için nedenleri ve bu konuda neler yapabileceğimizi paylaşın
Teşekkürler! Görüşleriniz, destek içeriğimizi geliştirmemize yardımcı olmak için kullanılmaktadır. Diğer yardım seçenekleri için, lütfen Yardım ve Destek Giriş Sayfasını ziyaret edin.