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 | Tanım |
---|---|
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
.
ııd
[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.
İade 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.
ııd
[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.
İade 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Ş.
İade 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.
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin