Bağlantı Noktası Genel İşlevleri
Bu işlevler bağlantı noktaları ve havuz haritaları için destek sağlar.
Önemli
Aşağıdaki tabloda listelenen işlevler, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.
İşlev | Açıklama |
---|---|
AtlAdvise | Bir nesnenin bağlantı noktası ve istemcinin havuzu arasında bir bağlantı oluşturur. |
AtlUnadvise | aracılığıyla AtlAdvise kurulan bağlantıyı sonlandırır. |
AtlAdviseSinkMap | Bir olay havuzu eşlemesindeki girişleri önerir veya unadvises. |
Gereksinimler
Üst bilgi: atlbase.h
AtlAdvise
Bir nesnenin bağlantı noktası ve istemcinin havuzu arasında bir bağlantı oluşturur.
Önemli
Bu işlev, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.
HRESULT AtlAdvise(
IUnknown* pUnkCP,
IUnknown* pUnk,
const IID& iid,
LPDWORD pdw);
Parametreler
pUnkCP
[in] İstemcinin IUnknown
bağlanmak istediği nesnenin işaretçisi.
Punk
[in] İstemcinin işaretçisi IUnknown
.
iid
[in] Bağlantı noktasının GUID'i. Bu genellikle bağlantı noktası tarafından yönetilen giden arabirimle aynıdır.
pdw
[out] Bağlantıyı benzersiz olarak tanımlayan tanımlama bilgisinin işaretçisi.
Dönüş Değeri
Standart bir HRESULT değeri.
Açıklamalar
Havuz, bağlantı noktası tarafından desteklenen giden arabirimi uygular. İstemci, bağlantıyı AtlUnadvise'ye geçirerek kaldırmak için pdw tanımlama bilgisini kullanır.
Örnek
LPUNKNOWN m_pSourceUnk;
LPUNKNOWN m_pSinkUnk;
DWORD m_dwCustCookie;
// create source object
HRESULT hr = CoCreateInstance (CLSID_MyComponent, NULL, CLSCTX_ALL,
IID_IUnknown, (LPVOID*)&m_pSourceUnk);
ATLASSERT(SUCCEEDED(hr));
// Create sink object. CMySink is a CComObjectRootEx-derived class
// that implements the event interface methods.
CComObject<CMySink>* pSinkClass;
CComObject<CMySink>::CreateInstance(&pSinkClass);
hr = pSinkClass->QueryInterface (IID_IUnknown, (LPVOID*)&m_pSinkUnk);
ATLASSERT(SUCCEEDED(hr));
hr = AtlAdvise (m_pSourceUnk, m_pSinkUnk, __uuidof(_IMyComponentEvents), &m_dwCustCookie);
ATLASSERT(SUCCEEDED(hr));
AtlUnadvise
AtlAdvise aracılığıyla kurulan bağlantıyı sonlandırır.
Önemli
Bu işlev, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.
HRESULT AtlUnadvise(
IUnknown* pUnkCP,
const IID& iid,
DWORD dw);
Parametreler
pUnkCP
[in] İstemcinin IUnknown
bağlı olduğu nesnenin işaretçisi.
iid
[in] Bağlantı noktasının GUID'i. Bu genellikle bağlantı noktası tarafından yönetilen giden arabirimle aynıdır.
Dw
[in] Bağlantıyı benzersiz olarak tanımlayan tanımlama bilgisi.
Dönüş Değeri
Standart bir HRESULT değeri.
Örnek
LPUNKNOWN m_pSourceUnk;
LPUNKNOWN m_pSinkUnk;
DWORD m_dwCustCookie;
// create source object
HRESULT hr = CoCreateInstance (CLSID_MyComponent, NULL, CLSCTX_ALL,
IID_IUnknown, (LPVOID*)&m_pSourceUnk);
ATLASSERT(SUCCEEDED(hr));
// Create sink object. CMySink is a CComObjectRootEx-derived class
// that implements the event interface methods.
CComObject<CMySink>* pSinkClass;
CComObject<CMySink>::CreateInstance(&pSinkClass);
hr = pSinkClass->QueryInterface (IID_IUnknown, (LPVOID*)&m_pSinkUnk);
ATLASSERT(SUCCEEDED(hr));
hr = AtlAdvise (m_pSourceUnk, m_pSinkUnk, __uuidof(_IMyComponentEvents), &m_dwCustCookie);
ATLASSERT(SUCCEEDED(hr));
// do something
CComBSTR bstrMsg(L"Hi there!");
((CMyComponent*)m_pSourceUnk)->Fire_ShowMyMsg(bstrMsg);
hr = AtlUnadvise (m_pSourceUnk, __uuidof(_IMyComponentEvents), m_dwCustCookie);
ATLASSERT(SUCCEEDED(hr));
AtlAdviseSinkMap
Nesnenin havuz olayı eşlemesindeki tüm girişleri önermek veya öneriyi kaldırmak için bu işlevi çağırın.
Önemli
Bu işlev, Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.
HRESULT AtlAdviseSinkMap(T* pT, bool bAdvise);
Parametreler
Pt
[in] Havuz eşlemesini içeren nesnenin işaretçisi.
bVise ekle
[in] Tüm havuz girdilerinin önerilmesi gerekiyorsa TRUE; Tüm havuz girdileri unadvised olacaksa YANLIŞ.
Dönüş Değeri
Standart bir HRESULT değeri.
Örnek
class CMyDlg :
public CAxDialogImpl<CMyDlg>
{
public:
BEGIN_MSG_MAP(CMyDlg)
MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
COMMAND_HANDLER(IDOK, BN_CLICKED, OnClickedOK)
COMMAND_HANDLER(IDCANCEL, BN_CLICKED, OnClickedCancel)
CHAIN_MSG_MAP(CAxDialogImpl<CMyDlg>)
END_MSG_MAP()
LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
CAxDialogImpl<CMyDlg>::OnInitDialog(uMsg, wParam, lParam, bHandled);
AtlAdviseSinkMap(this, TRUE);
bHandled = TRUE;
return 1; // Let the system set the focus
}
// Remainder of class declaration omitted.