随笔分类 -  C++ MFC

MFC
2010.8.21 关于RUNTIME_CLASS 不懂就问,不要自欺欺人!
摘要:BOOL CtestDlgApp::InitInstance(){ CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME, RUNTIME_CLASS(CtestDlgDoc), RUNTIME_CLASS(CMainFrame), // 主 SDI 框架窗口 RUNTIME_CL... 阅读全文

posted @ 2010-08-21 07:46 pjh123 阅读(683) 评论(0) 推荐(0)

2010.8.21 MFC的几个疑问,或者说思考
摘要:学习MFC已经两个月了,感觉许多知识点儿都是是是而非,模模糊糊,每当静下心来,都会涌出很多疑问。可能每个知识点都看过,但是总不能在心中画出一个清晰的网络结构出来。1、一个最简单的MFC程序,他的几个对象,比如APP、MainFrame、View、Doc等,这几个对象都是分别谁来管理?消息传递机制又是如何传递到各个对象,并触发相应的处理函数的?2、不能理清框架程序、消息循环机制的关系,就是将骨骼和血... 阅读全文

posted @ 2010-08-21 00:08 pjh123 阅读(209) 评论(0) 推荐(0)

2010.8.17 CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别
摘要:引用:http://hi.baidu.com/czlaner/blog/item/8ca6e58b011846dafd1f1009.html1、CreateThread——Windows的API函数2、_beginthreadex——MS对C Runtime库的扩展SDK函数3、AfxBeginThread——MFC中线程创建... 阅读全文

posted @ 2010-08-17 18:01 pjh123 阅读(494) 评论(0) 推荐(0)

2010.8.16 关于函数参数是指针、还是引用的区别
摘要:1、效率差别不是很大,但是引用好一点。用指针做形参,要另外开辟内存空间来存储实参的地址;但引用则不必。其实引用最大的好处在于使用简单明了。比如你的swap函数,若用指针,调用时要写swap(&x,&y);而用引用,调用时直接写swap(x,y);即可。 经过证实!2、在参数传递方面,引用比指针直观,可读性强: 1. 尽量使用引用代替指针,以下两条除外。 2. 如果必须传递数组,使... 阅读全文

posted @ 2010-08-16 18:09 pjh123 阅读(343) 评论(0) 推荐(0)

2010.8.12 VC菜单命令详解(文件打开、保存与关闭)
摘要:原文地址:http://blog.csdn.net/wirror800/archive/2009/03/21/4011847.aspx VC菜单命令详解(文件打开、保存与关闭) 收藏 第一部分:五个命令ID: 处理函数 ID_FILE_NEW CWinApp::OnFileNew ID_FILE_OPEN CWinApp::OnFileOpen ID_FILE_SAVE CDocument::On... 阅读全文

posted @ 2010-08-12 17:54 pjh123 阅读(542) 评论(0) 推荐(0)

2010.8.12 CString最大可以多大?
摘要:void CString::AllocBuffer(int nLen){assert(nLen >= 0);assert(nLen <= 2147483647-1); // (signed) int 的最大值 2Gif (nLen == 0) Init();else{ CStringData* pData; { pData = (CStringData*) new BYTE[sizeo... 阅读全文

posted @ 2010-08-12 16:38 pjh123 阅读(441) 评论(0) 推荐(0)

2010.8.9 CEditView的使用(未完成)
摘要:一、当在MFC程序中,一个view上,根据菜单,展现不同的view 的时候。比如Outlook类似程序,根据左边的Pane,右边显示不同的view 。 如果右边要显示的是一个EditView,如何实现呢?疑问:1、加入新建一个类,继承之CEditView,那么需要document配合吗?参考:http://www.skinplusplus.com/bbs/archiver/tid-114896.h... 阅读全文

posted @ 2010-08-09 17:57 pjh123 阅读(2468) 评论(0) 推荐(0)

2010.8.8 关于对话框
摘要:一、关于对话框的OnInitDialog函数作用:OnInitDialog :初始化对话框。是程序运行时的开始状态的设定。DoDataExchange:注册数据监听数据改变。OnPaint:设定窗口大小等的默认状态 分析:OnInitDialog什么时候产生呢?DoModel之后,随之产生。1、CDialog1 dlg;dlg.DoModal();然后调用2、INT_PTR CALLBACK Af... 阅读全文

posted @ 2010-08-08 17:09 pjh123 阅读(300) 评论(0) 推荐(0)

2010.8.6 周末学习的东西
摘要:一、位图bitmap的使用,以及如何调整大小;二、MFC工程中,复制、粘贴功能的实现;三、MFC对话框的消息循环,以及OnOK,OnCancel, OnDestroy, 区别与实现四、UML书一、第一个问题引用:http://hi.baidu.com/tofro/blog/item/14abb582972750b76c811999.html MFC提供了位图处理的基础类CBitmap,可以完成位图... 阅读全文

posted @ 2010-08-06 17:39 pjh123 阅读(179) 评论(0) 推荐(0)

2010.8.5 afxwin.h 与stdafx.h
摘要:引用:http://www.diybl.com/course/3_program/c++/cppsl/200889/135327.html(1)Standard Application Frame Extend没有函数库,只是定义了一些环境参数,使得编译出来的程序能在32位的操作系统环境下运行。Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时... 阅读全文

posted @ 2010-08-05 18:09 pjh123 阅读(231) 评论(0) 推荐(0)

2010.8.4 程序员能力矩阵
摘要:引用:http://www.cnblogs.com/giszhang/archive/2010/03/08/1680561.html能力矩阵矩阵一,计算机科学基础(包括数据结构、算法、系统编程三项): 第二矩阵,软件工程(包括源码控制、自动化编译、自动化测试三项): 矩阵三,编程能力(包括问题分解、系统分解、交流、代码组织、源码树、代码可读性、IDE掌握等): 矩阵四:经验(包括语言能力、平台经验... 阅读全文

posted @ 2010-08-04 16:25 pjh123 阅读(439) 评论(0) 推荐(0)

2010.8.4 续上篇,STL简介
摘要:引用:http://www.cnblogs.com/giszhang/archive/2010/02/02/1661844.htmlSTL中六大组件: 1)容器(Container),是一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器; 2)迭代器(Iterator),提供了访问容器中对象的方法。例如,可以使用一对迭... 阅读全文

posted @ 2010-08-04 16:13 pjh123 阅读(302) 评论(0) 推荐(0)

2010.8.3 C++标准库和STL的关系
摘要:引用自:http://blog.csdn.net/beick/archive/2004/10/05/125318.aspxSTL的历史被誉为STL之父的Alexander Stepanov,出生于苏联莫斯科,早在20世纪70年代后半期,他便已经开始考虑,在保证效率的前提下,将算法从诸多具体应用之中抽象出来的可能性,这便是后来泛型化思想的雏形。为了验证自己的思想,他和纽约州立大学教授Deepak K... 阅读全文

posted @ 2010-08-03 12:48 pjh123 阅读(308) 评论(0) 推荐(0)

2010.8.1 Unicode编程
摘要:简介  如果你编写的程序是针对非英语国家的用户,如中国、日本、东欧和中东地区,那么你一定要熟悉 UNICODE 字符集。尤其是用 Visual C++/MFC 编写针对上述国家和地区的用户的程序时,如果你想让自己的应用程序得到更广泛的用户,那么必须考虑代码 UNICODE 的兼容性,也就是说它既在 ASCII 模式下运行 ,也能在UNICODE 模式下运行。本文将介绍 UNICODE 的一些基本编... 阅读全文

posted @ 2010-08-01 19:49 pjh123 阅读(193) 评论(0) 推荐(0)

2010.8.1 深入探讨MFC消息循环和消息泵
摘要:转载:http://kb.cnblogs.com/a/108301/注意,这篇只讲了消息循环,还有重要的:消息路由,参考其它资料首先,应该清楚MFC的消息循环(::GetMessage,::PeekMessage),消息泵(CWinThread::PumpMessage)和MFC的消息在窗口之间的路由是两件不同的事情。在MFC的应用程序中(应用程序类基于CWinThread继承),必须要有一个消息... 阅读全文

posted @ 2010-08-01 19:47 pjh123 阅读(360) 评论(2) 推荐(0)

2010.7.31 VC对话框的一些东西
摘要:一、关于对话框:1、如果直接在对话框资源上放置控件,谁来为控件分配内存?在模式对话框关闭之后,谁来释放控件资源?注意到,在默认的模式对话框上,确定按钮调用了OnOK()函数,跟踪此函数:调用的是基类的虚函数:void CDialog::OnOK(){if (!UpdateData(TRUE))第一个疑问{TRACE(traceAppMsg, 0, "UpdateData failed during... 阅读全文

posted @ 2010-07-31 15:02 pjh123 阅读(264) 评论(0) 推荐(0)

2010.7.29 模式对话框
摘要:为什么点击ONOK后,对话框上的控件资源会被删除?OnOK做了什么事儿?假如有一个对话框Class CMyDialog我在CMyDialog中,声明了一个m_button,然后在OnInitDlg()中create这个buttton,即m_button.create()然后呢,声明对话框对象,显示对话框,如下:CMyDialog m_dlg; //第一步if(m_dlg.DoModal()==ID... 阅读全文

posted @ 2010-07-29 22:43 pjh123 阅读(122) 评论(0) 推荐(0)

2010.7.29 为什么析构函数设计成虚函数?
摘要:首先必须明白,声明成虚函数,必须是在有继承关系的几个类中,才有意义。当声明了一个基类(CBase),和一个继承类时(CSubDevice::CBase)时,基类有自己的成员需要用析构释放内存,继承类也有自己的成员需要释放内存。如何用一个基类的指针,指向了一个子类的对象,那么当释放基类指针指向的堆内存时,假如这时候析构函数没有使用虚函数,那么程序只会调用基类的析构函数,这时,子类的特有的内存没有释放... 阅读全文

posted @ 2010-07-29 22:33 pjh123 阅读(229) 评论(0) 推荐(0)

2010.7.29 C++学习流程
摘要:大概流程:第一步:C++基础。类的特征,多态、重载、等等基本只是要知道吧。第二步:模板 进而是STL Atla ,然后是泛型;第三步:COM。 COM就是一种远程过程调用,即你请求的代码是在另外一个进程中运行的,通过某种 通信协议来回传递参数和结果。COM提供了一种机制,可以跨进程通信,甚至跨机器通信。 使用到了智能指针、泛型等前面学习的技术 DCOM。 DCOM进了一步,服务者可以在另外一台计... 阅读全文

posted @ 2010-07-29 13:50 pjh123 阅读(446) 评论(2) 推荐(1)

2010.7.27 OnDraw与OnPaint有什么区别
摘要:引用:http://wenku.baidu.com/view/bc9b1c661ed9ad51f01df2ab.htmlOnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能.当视图变得无效... 阅读全文

posted @ 2010-07-27 18:24 pjh123 阅读(228) 评论(0) 推荐(0)