MFC消息映射机制
MFC消息映射机制的具体实现方法是:在每个能接收和处理消息的类中,定义一个消息和消息函数静态对照表,即消息映射表。在消息映射表中,消息与对应的消息处理函数的指针是成对出现的。每个类能处理的所有消息及其对应的消息处理函数的地址都列在这个类所对应的静态表中。当有消息需要处理时,程序只要搜索该消息静态表,查看表中是否含有该消息,就可知道该类能否处理此消息。如果能处理该消息,则同样依照静态表能很容易找到并调用对应的消息处理函数。
MFC在后台维护了一个 窗口句柄和C++对象对照表
消息的参数具有窗口句柄,指明该消息是发生在哪个窗口的,然后在对照表中找到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,只能访问客户区
CWindowDC派生于CDC,客户区、非客户区都能访问
框架窗口的非客户区有标题栏、菜单栏。
客户区是菜单栏以下部分。
视类窗口只有客户区。