MFC消息映射機制
MFC消息映射機制的具體實現(xiàn)方法是:在每個能接收和處理消息的類中,定義一個消息和消息函數(shù)靜態(tài)對照表,即消息映射表。在消息映射表中,消息與對應的消息處理函數(shù)的指針是成對出現(xiàn)的。每個類能處理的所有消息及其對應的消息處理函數(shù)的地址都列在這個類所對應的靜態(tài)表中。當有消息需要處理時,程序只要搜索該消息靜態(tài)表,查看表中是否含有該消息,就可知道該類能否處理此消息。如果能處理該消息,則同樣依照靜態(tài)表能很容易找到并調(diào)用對應的消息處理函數(shù)。
MFC在后臺維護了一個 窗口句柄和C++對象對照表
消息的參數(shù)具有窗口句柄,指明該消息是發(fā)生在哪個窗口的,然后在對照表中找到C++對象的指針。
- 利用設備描述表畫線
//首先獲得窗口的設備描述表
HDC hdc;
hdc = ::GetDC(m_hWnd);
//移動到線條的起點
MoveToEx(hdc, m_ptOrigin.x, m_ptOrigin.y, NULL);
//畫線
LineTo(hdc, point.x, point.y);
//釋放設備描述表
::ReleaseDC(m_hWnd,hdc);
CDC
CClientDC派生于CDC,只能訪問客戶區(qū)
CWindowDC派生于CDC,客戶區(qū)、非客戶區(qū)都能訪問
框架窗口的非客戶區(qū)有標題欄、菜單欄。
客戶區(qū)是菜單欄以下部分。
視類窗口只有客戶區(qū)。