VC++
文章平均质量分 75
xsh_123321
这个作者很懒,什么都没留下…
展开
-
MFC RTTI 实现
MFC RTTI 实现 ——摘自侯俊杰《深入浅出MFC》1.为了支持RTTI,MFC引入了CRuntimeClass的定义,定义如下:struct CRuntimeClass{ //Attributes LPCSTR m_lpszClassName; int m_nObjectSize; UINT m_wSchema;//schema number of the loaded class CObject* (PASCAL* m_pfnCreateObject)();//NUL原创 2010-09-07 15:02:00 · 1377 阅读 · 3 评论 -
ATL之thunk技术
<br /><br /><br />学习下 ATL 的 thunk<br />由于 C++ 成员函数的调用机制问题,对C语言回调函数的 C++ 封装是件比较棘手的事。为了保持C++对象的独立性,理想情况是将回调函数设置到成员函数,而一般的回调函数格式通常是普通的C函数,尤其是 Windows API 中的。好在有些回调函数中留出了一个额外参数,这样便可以由这个通道将 this 指针传入。比如线程函数的定义为:<br />typedef DWORD (WINAPI *PTHREAD_START_ROUTINE转载 2010-11-05 16:37:00 · 4631 阅读 · 0 评论 -
OnPaint OnEraseBkgnd的调用关系
以下是定制Button的OnPaint函数,详细说明如下:void CCustomBtn::OnPaint() { CPaintDC dc(this); // CPaintDC 实际上封装了BeginPaing,EndPaint。 BeginPaint() 和EndPaint() 可以删除消息队列中的WM_PAINT消息,并使无效区域有效,以防止因包含无效区域不停得发送WM_PAINT消息。如果无效区域被标记为可擦除的,BeginPaint发送一个WM_ERASEBKGND消息给窗口,WM_ERASE原创 2010-11-12 13:33:00 · 1955 阅读 · 1 评论