Bagikan melalui


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 chainedObjpeta 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.

Lihat juga

Kelas CWindowImpl
Gambaran Umum Kelas