摘要: 引: 这篇博客是根据昨天的我们团队技术研讨会,我所讲的部分的内容(这句话读起来好纠结啊),由幻灯片改变而成的。因为我们团队在界面设计上缺陷很大,而我想对强一些(当然是我们团队之中了,我们都是大学生,所以我也强不到哪儿去)。为什么不直接讲MFC技术,而要简单讲框架。原因如下:个人认为MFC难学难用在于你不了解MFC的架构,如果你稍微有一些了解的话,用起来也就没那么复杂了。框架类型的东西往往如此,为程序员隐藏了太多的细节,通常都是知其然而不知其所以然。我准备了好长时间,但是讲解效果不好。意料之外,情理之中。一来看框架就要看源码,一个框架源码的复杂程度可想而知;二来大家都关心一些实用的技术,表面性. 阅读全文
posted @ 2011-09-20 00:45 独酌逸醉 阅读(3812) 评论(16) 推荐(3) 编辑
摘要: MFCRTTI探究张杰2011-09-17声明本文由张杰原创,参考了侯俊杰先生的《深入浅出MFC》,源码摘自MicrosoftVisualStudio9.0\VC。个人能力有限,文章必定存在很多错误。我的邮箱是:chinajiezhang@gmail.comchinajiezhang@163.com欢迎您来邮件斧正。当然您也可以加我msn:chinazhangjie@hotmail.com交流。本文可供传播、交流、学习使用,但请不要用于商业用途。转载请标明此声明,谢谢您的合作。DECLARE_DYNCREATE和IMPLEMENT_DYNCREATE查看DECLARE_DYNCREATE定义( 阅读全文
posted @ 2011-09-20 00:37 独酌逸醉 阅读(1698) 评论(0) 推荐(1) 编辑
摘要: MFC消息映射与命令传递张杰2011-09-17声明本文由张杰原创,参考了侯俊杰先生的《深入浅出MFC》,源码摘自MicrosoftVisualStudio9.0\VC。个人能力有限,文章必定存在很多错误。我的邮箱是:chinajiezhang@gmail.comchinajiezhang@163.com欢迎您来邮件斧正。当然您也可以加我msn:chinazhangjie@hotmail.com交流。本文可供传播、交流、学习使用,但请不要用于商业用途。转载请标明此声明,谢谢您的合作。DECLARE_MESSAGE_MAP宏在MFC几乎每个头文件下(类的最后一行声明),都会有这么几行代码://生 阅读全文
posted @ 2011-09-20 00:12 独酌逸醉 阅读(6366) 评论(0) 推荐(0) 编辑
摘要: MFC程序来龙去脉_子文档5探究nReturnCode=pThread->Run()查看pThread->Run代码(C:\ProgramFiles\MicrosoftVisualStudio9.0\VC\atlmfc\src\mfc\thrdcore.cpp):intCWinApp::Run(){ if(m_pMainWnd==NULL&&AfxOleGetUserCtrl()) { //Notlaunched/Embeddingor/Automation,buthasnomainwindow! TRACE(traceAppMsg,0,"Warning: 阅读全文
posted @ 2011-09-20 00:03 独酌逸醉 阅读(1549) 评论(0) 推荐(2) 编辑
摘要: MicrosoftInternetExplorer402DocumentNotSpecified7.8Normal0MFC程序来龙去脉_子文档 4_子文档1寻找m_pMainWnd初始化时机直接搜索所有m_pMainWnd赋值语句(m_pMainWnd=)会发现如下代码:(1)UINTAPIENTRY_AfxThreadEntry(void*pParam){pThread->m_pMainWnd=&threadWnd;}(2)CDocument*CSingleDocTemplate::OpenDocumentFile(LPCTSTRlpszPathName, BOOLbMakeV 阅读全文
posted @ 2011-09-20 00:02 独酌逸醉 阅读(595) 评论(0) 推荐(1) 编辑
摘要: MFC程序来龙去脉_子文档4探究pThread->InitInstance()由上面解释可知pThread指向theApp。尽管类型不是CFirstMFCDemoApp*,但必定是其父类。由OO多态性可知该语句调用的是子类方法CFirstMFCDemoApp::InitInstance()。查看CFirstMFCDemoApp::InitInstance()源码:BOOLCFirstMFCDemoApp::InitInstance(){ //如果一个运行在WindowsXP上的应用程序清单指定要 //使用ComCtl32.dll版本6或更高版本来启用可视化方式, //则需要InitCom 阅读全文
posted @ 2011-09-20 00:01 独酌逸醉 阅读(955) 评论(0) 推荐(1) 编辑
摘要: MFC程序来龙去脉_子文档2探究AfxWinInit(hInstance,hPrevInstance,lpCmdLine,nCmdShow)查看AfxWinInit源码:BOOLAFXAPIAfxWinInit(_In_HINSTANCEhInstance,_In_HINSTANCEhPrevInstance, _In_z_LPTSTRlpCmdLine,_In_intnCmdShow){ ASSERT(hPrevInstance==NULL); //handlecriticalerrorsandavoidWindowsmessageboxes SetErrorMode(SetErrorMod 阅读全文
posted @ 2011-09-20 00:00 独酌逸醉 阅读(706) 评论(0) 推荐(1) 编辑
摘要: MFC程序来龙去脉_子文档3探究pApp->InitApplication()查看CWinApp::InitApplication()源码:BOOLCWinApp::InitApplication(){ if(CDocManager::pStaticDocManager!=NULL) { if(m_pDocManager==NULL) m_pDocManager=CDocManager::pStaticDocManager; CDocManager::pStaticDocManager=NULL; } if(m_pDocManager!=NULL) m_pDocManager->A 阅读全文
posted @ 2011-09-20 00:00 独酌逸醉 阅读(356) 评论(0) 推荐(1) 编辑