Kelas CDynamicChain
Kelas ini menyediakan metode yang mendukung penautan dinamis peta pesan.
Penting
Kelas ini dan anggotanya tidak dapat digunakan dalam aplikasi yang dijalankan di Windows Runtime.
Sintaks
class CDynamicChain
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CDynamicChain::CDynamicChain | Konstruktor. |
CDynamicChain::~CDynamicChain | Destruktor. |
Metode Publik
Nama | Deskripsi |
---|---|
CDynamicChain::CallChain | Mengarahkan pesan Windows ke peta pesan objek lain. |
CDynamicChain::RemoveChainEntry | Menghapus entri peta pesan dari koleksi. |
CDynamicChain::SetChainEntry | Menambahkan entri peta pesan ke koleksi atau memodifikasi entri yang ada. |
Keterangan
CDynamicChain
mengelola kumpulan peta pesan, memungkinkan pesan Windows diarahkan, pada waktu proses, ke peta pesan objek lain.
Untuk menambahkan dukungan untuk penautan dinamis peta pesan, lakukan hal berikut:
Dapatkan kelas Anda dari
CDynamicChain
. Di peta pesan, tentukan makro CHAIN_MSG_MAP_DYNAMIC untuk ditautkan ke peta pesan default objek lain.Dapatkan setiap kelas yang ingin Anda rantai dari CMessageMap.
CMessageMap
memungkinkan objek untuk mengekspos peta pesannya ke objek lain.Panggil
CDynamicChain::SetChainEntry
untuk mengidentifikasi objek mana dan peta pesan mana yang ingin Anda rantai.
Misalnya, misalkan kelas Anda didefinisikan sebagai berikut:
class CMyChainWnd : public CWindowImpl<CMyChainWnd>,
public CDynamicChain
{
public:
CMyChainWnd() {}
BEGIN_MSG_MAP(CMyChainWnd)
MESSAGE_HANDLER(WM_PAINT, OnPaint)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
// dynamically chain to the default
// message map in another object
CHAIN_MSG_MAP_DYNAMIC(1313)
// '1313' identifies the object
// and the message map that will be
// chained to. '1313' is defined
// through the SetChainEntry method
END_MSG_MAP()
LRESULT OnPaint(UINT /*nMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
// Do some painting code
return 0;
}
LRESULT OnSetFocus(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
return 0;
}
};
Klien kemudian memanggil CMyWindow::SetChainEntry
:
myCtl.SetChainEntry(1313, &chainedObj);
di mana chainedObj
adalah objek berantai dan merupakan instans kelas yang berasal dari CMessageMap
. Sekarang, jika myCtl
menerima pesan yang tidak ditangani oleh OnPaint
atau OnSetFocus
, prosedur jendela mengarahkan pesan ke chainedObj
peta pesan default.
Untuk informasi selengkapnya tentang penautan peta pesan, lihat Peta Pesan di artikel "Kelas Jendela ATL."
Persyaratan
Header: atlwin.h
CDynamicChain::CallChain
Mengarahkan pesan Windows ke peta pesan objek lain.
BOOL CallChain(
DWORD dwChainID,
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam,
LRESULT& lResult);
Parameter
dwChainID
[di] Pengidentifikasi unik yang terkait dengan objek berantai dan peta pesannya.
hWnd
[di] Handel ke jendela yang menerima pesan.
uMsg
[di] Pesan yang dikirim ke jendela.
wParam
[di] Informasi khusus pesan tambahan.
lParam
[di] Informasi khusus pesan tambahan.
lResult
[out] Hasil pemrosesan pesan.
Tampilkan Nilai
TRUE jika pesan sepenuhnya diproses; jika tidak, FALSE.
Keterangan
Agar prosedur jendela dipanggil CallChain
, Anda harus menentukan makro CHAIN_MSG_MAP_DYNAMIC di peta pesan Anda. Misalnya, lihat gambaran umum CDynamicChain .
CallChain
memerlukan panggilan sebelumnya ke SetChainEntry untuk mengaitkan nilai dwChainID dengan objek dan peta pesannya.
CDynamicChain::CDynamicChain
Konstruktor.
CDynamicChain();
CDynamicChain::~CDynamicChain
Destruktor.
~CDynamicChain();
Keterangan
Membebaskan semua sumber daya yang dialokasikan.
CDynamicChain::RemoveChainEntry
Menghapus peta pesan yang ditentukan dari koleksi.
BOOL RemoveChainEntry(DWORD dwChainID);
Parameter
dwChainID
[di] Pengidentifikasi unik yang terkait dengan objek berantai dan peta pesannya. Anda awalnya menentukan nilai ini melalui panggilan ke SetChainEntry.
Tampilkan Nilai
TRUE jika peta pesan berhasil dihapus dari koleksi. Jika tidak, FALSE.
CDynamicChain::SetChainEntry
Menambahkan peta pesan yang ditentukan ke koleksi.
BOOL SetChainEntry(
DWORD dwChainID,
CMessageMap* pObject,
DWORD dwMsgMapID = 0);
Parameter
dwChainID
[di] Pengidentifikasi unik yang terkait dengan objek berantai dan peta pesannya.
pObject
[di] Penunjuk ke objek berantai yang mendeklarasikan peta pesan. Objek ini harus berasal dari CMessageMap.
dwMsgMapID
[di] Pengidentifikasi peta pesan di objek berantai. Nilai defaultnya adalah 0, yang mengidentifikasi peta pesan default yang dideklarasikan dengan BEGIN_MSG_MAP. Untuk menentukan peta pesan alternatif yang dideklarasikan dengan ALT_MSG_MAP(msgMapID), lewati msgMapID
.
Tampilkan Nilai
TRUE jika peta pesan berhasil ditambahkan ke koleksi. Jika tidak, FALSE.
Keterangan
Jika nilai dwChainID sudah ada dalam koleksi, objek dan peta pesan terkait digantikan oleh pObject dan dwMsgMapID. Jika tidak, entri baru ditambahkan.