摘要:
MFC 对 Windows API 进行了封装,在很多方面都会提供便利。用 FromHandle 返回零时对象的指针,就可以调用各种类的方法。临时对象会在 OnIdle 中销毁。这里对 FromHandle 的实现原理从源码上进行解析。// // 1 // CWnd* PASCAL CWnd::FromHandle(HWND hWnd) { CHandleMap* pMap = afxMapHWND(TRUE); //create map if not exist ASSERT(pMap != NULL); CWnd* pWnd = (CWnd*)pMap->FromH... 阅读全文
摘要:
用GetDC()得到的DC,必须调用ReleaseDC()用CreateDC()创建的DC,必须调用DeleteDC()两者是不能混淆的.一种典型的错误代码如下:CDC*pDC=GetDC();…..//做一些无聊的事…..pDC->DeleteDC();//做了错误的事一般情况下,上面这个代码也能够工作,就是有时要报一点CHandleMap::RemoveHandle(HANDLEh)异常,跟踪进代码也看不出啥问题.区别:ReleaseDC()仅是释放对DC的引用DeleteDC()是删除DC对象,使用GetDC()的时候,明显的这个DC不是我们自己创建的,使用DeleteDC()的话 阅读全文
摘要:
1、创建Application object对象theApp 程序一开始生产一个(且只有一个)Application object对象theApp,也即一个CWinApp对象,这个全局对象一产生,便执行其构造函数,因为并没有定义CMyWinApp构造函数,所以即执行CWinApp类的构造函数。该函数定义于APPCORE.CPP第75行,你可以自己搜出来啃一啃,因此,CWinApp之中的成员变量将因为theApp这个全局对象的诞生而获得配置与初值。2、WinMain登场 用SDK编程序时,程序的入口点是WinMain函数,而在MFC程序里我们并没有看到WinMain函数,哦!~ 原来她是被隐藏在 阅读全文