
MFC/STL/Boost
文章平均质量分 87
ajioy
如果是天才,可以选择特立独行。然而我不是,独行行不通。所以讨教高手,与之切磋技术。虚心请教,不做井底之蛙。
展开
-
SQL Server2005 sa登录错误及应对方案
解决方案'用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联 问题一、忘记了登录Microsoft SQL Server 2005 的sa的登录密码解决方法:先用windows身份验证的方式登录进去,然后在‘安全性’-‘登录’-右键单击‘sa’-‘属性’,修改密码(sa的密码不能太简单,最好要有数字,字母,下划线字符组成,且长度最好大于10个字符);点击确定就可以转载 2011-11-18 12:16:19 · 1221 阅读 · 1 评论 -
通过小练习掌握MFC知识点之起步篇-父子窗口间传值、ListCtrl隔行变色、双缓冲技术解决控件闪烁、自定义消息等
2013.4.12 再次修改 2013.4.11 修改 注:修改内容见文章结尾处本次练习会学到的知识点:1、ListCtrl控件:设置ListCtrl网格,内容项隔行变色,插入一行数据,删除数据,选中整行,双缓冲技术解决闪烁问题等。。2、模态对话框及非模态对话框的使用3、父子窗口间传值如果对话框是模态的,那么弹出后该程序的其它窗口就呈不可用的状态,原来的原创 2013-04-10 11:39:18 · 6708 阅读 · 3 评论 -
boost和STLport在vs2010环境下的编译
对于C++库,至今我了解的有标准模板库STL(Standard Template Libarary)和准标准库Boost,后者是在图书馆翻阅C++书籍时注意到的。后来在阅读C++经典著作《C++ Primer 4th Ed》和《Effective C++》时也留意到boost的存在。随着时间的推移,潜移默化中感觉到boost库的重要性,因为它是真正意义上的根据C++的设计原则来工作的,除了效率高以原创 2012-02-29 10:06:21 · 4230 阅读 · 7 评论 -
progress_timer和progress_display
progress_timer.cpp #include #include #include #include using namespace boost;using namespace std;templateclass new_progress_timer:public progress_timer{public: new_progress_timer(s原创 2012-02-29 15:55:00 · 1563 阅读 · 0 评论 -
了解boost库最为简单的timer组件
timer类非常小,全部实现加上注释才72行。非常有必要深入了解一下。下面的源码基本与timer.hpp一致,不过自己多此一举地加了一个析构函数。事实上没有资源需要销毁,只是为了承接progress_timer组件的学习。使用建议:timer类接口简单,轻巧好用,适合于大部分的程序计时任务。不过就精度而言,它不适用于高精度时间测量任务。难以做到跨平台。也不适合大跨度时间段的测量,可提供的最原创 2012-03-09 20:14:02 · 908 阅读 · 0 评论 -
通过progress_timer组件扩展计时精度
//通过progress_timer扩展计时精度//原则上程序库的代码不能被用户修改,不过我们可以通过模板技术仿造progress_timer编写一个新类//new_progress_timer以实现任意精度的输出#include #include #include //静态断言,控制精度范围在0~10以内using namespace boost;using nam原创 2012-03-12 20:08:31 · 1134 阅读 · 0 评论 -
date_time组件简单涉及
#include #define BOOST_DATE_TIME_SOURCE#include using namespace std;using namespace boost::gregorian;int main(){ date d1(2012,12,21);//直接构造 date d2(2012,Jan,1); date d3; //无效日期 date原创 2012-03-12 21:24:06 · 890 阅读 · 0 评论 -
智能指针scoped_ptr组件的使用
scoped_ptr是一个行为很类似标准库中的auto_ptr智能指针,它包装了new操作符在椎上分配的动态对象,能够保证动态创建的对象在任何时候都能够被正确的删除。但是scoped_ptr的所有权更加严格,不允许转让,对其赋值和拷贝都是不合法行为,因而显得更轻巧和快捷。scoped_ptr重载了operator*()和operator->()解引用操作符*和箭头操作符->,因此可以把sc原创 2012-03-14 15:36:47 · 4533 阅读 · 0 评论 -
指向数组的智能指针scoped_array组件的使用
scoped_array与scoped_ptr基本是一对孪生兄弟,它包装了new[]操作符(而不是new)在堆上分配的动态数组,为动态数组提供了一个代理(Proxy),保存正确地释放内存。它弥补了标准库中没有指向数组的智能指针的遗憾。类摘要:template class shared_array{private: // Borland 5.5.1 specific w原创 2012-03-14 16:35:35 · 10782 阅读 · 0 评论 -
智能指针shared_ptr组件的使用
shared_ptr是boost.smart_ptr库中最具价值、最有份量的组成部分。它与scoped_ptr一样包装了new操作符在堆上分配动态对象,但它实现的是引用计数(reference-count)型智能指针,可以被自由地拷贝和赋值,在任意的地方共享它。当引用计数值为0,也即没有代码使用它时它会自动删除被分配资源的对象。shared_ptr可以安全地放到标准容器中,并弥补了auto_p原创 2012-03-16 14:13:11 · 5412 阅读 · 1 评论 -
STL中的两个算法for_each与transform
区别的话这里不多讲,自己百度咯.for_each(begin,end,function);先看一个简单易理解的小例子 #include #include #include using namespace std;void print(int elem){ cout << elem << ' ';}int main(){ vector coll原创 2012-10-24 15:43:27 · 2363 阅读 · 0 评论 -
STL顺序容器之deque双端队列
deque同vector一样也是顺序容器。它内部拥有更复杂的数据结构,从deque队列的两端插入和删除元素都非常快,在容器中间插入或删除则需要付出的代价非常高。deque的绝大部分操作与vector一致,如支持各种构造方式,push_back,insert,size,resize,empty,capacity等各种vector所支持的操作。并支持push_front(),pop_front()原创 2012-03-27 09:17:28 · 2542 阅读 · 0 评论 -
[内存管理]智能指针与内存池的总结
总结:内存管理是C++程序开发中永恒的话题,因为没有垃圾回收机制,小心谨慎地管理内存等系统资源是每一个C++开发人员都必须面对面的问题。boost.smart_ptr库提供了数种新型智能指针,弥补了std::auto_ptr的不足,可以有效地消除new和delete的显示使用,减少甚至杜绝代码资源泄漏。scoped_ptr是smart_ptr库中最容易学习和使用的一个,它的行为与aut原创 2012-03-21 18:16:53 · 3470 阅读 · 0 评论 -
[内存管理]内存池pool库
pool库概述如果之前学过操作系统的内存管理机制和内存分配算法等知识,那么就了解“内存池”的概念。简单地说,内存池预先分配了一块大的内存空间,然后就可以在其中使用某种算法实现高效快速的自定制内存分配。boost.pool库基于简单分配存储思想实现了一个快速、紧凑的内存池库,不仅能够管理大量的对象,而且还可以被用作STL的内存分配器。它近似于一个小型的垃圾回收机制,在需要大量地分配/释放原创 2012-03-21 17:04:19 · 4311 阅读 · 0 评论 -
[内存管理]智能指针之shared_array
shared_array类似shared_ptr,它包装了new[]操作符在堆上分配的动态数组,同样使用引用计数机制为动态数组提供了一个代理,可以在程序的生命同期里长期存在,直到没有任何引用后才释放内存。类摘要:template class shared_array{public: explicit shared_array(T *p = 0); template原创 2012-03-21 10:59:53 · 15747 阅读 · 0 评论 -
[内存管理]智能指针shared_ptr与工厂函数相结合
shared_ptr很好地消除了显式的delete调用,如果掌握了它的用法,那么可以说,以后delete将会彻底消失在你的编程词典中。但这还不够,因为shared_ptr的构造还需要new调用,这导致了代码中的某种不对称性。虽然shared_ptr 对于new表达式的支持相当优秀,但过多的显式new操作符也是个问题,这种情况下就可以用工厂模式来解决。shared_ptr在头文件中提供了一个原创 2012-03-17 12:53:37 · 5059 阅读 · 1 评论 -
STL顺序容器之vector类型
顺序容器:将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。顺序容器的元素排列与元素值无关,而是由元素添加到容器里的次序决定。标准库中定义了三种顺序容器类型:vector、list和deque(double-ended queue,双端队列),它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价。容器只定义了少量操作,大多数额外操作都是原创 2012-03-16 23:15:53 · 2958 阅读 · 1 评论 -
VS2010编写自定义宏
这里所说的宏可不是指#define PI 3.14159之类的,而是按下Alt + 1,Alt + 2之类的键盘组合之后可以方便地插入一大串自定义的内容,如:/******************************************************************** 函数名称:* 功 能:* 参 数:* 返 回 值:void* 创 建 人:A原创 2013-01-08 22:38:51 · 11502 阅读 · 11 评论 -
拆分窗口类CSplitterWnd在对话框中的应用及拆分子窗口间的通信
当你在GOOGLE或者百度键入"如何在对话框中使用CSplitterWnd“时,搜索出来的帖子大多千篇一律,鲜有真正是基于对话框的CSplitterWnd应用,大多是基于单文档框架的说明。至于具有参考价值的一篇博文,请参见Codeguru。本文将告诉你如何在对话框中使用CSplitterWnd将主窗口拆分成两个子窗口,并且只与视图类有关,不涉及文档类。重载OnSize(), 使得窗口的大小可随原创 2013-06-19 10:58:34 · 4442 阅读 · 1 评论 -
VS2008中MFC界面编程Caption中文全是乱码的解决办法
在预览状态下可能看到中文,但是编译运行后对话框中的中文全是问号。即使你用的VS中文版,即使你也用了Unicode编码,即使有条件编译#ifdef _WIN32LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED#pragma code_page(936)#endif //_WIN32 但是问题依旧对不对?有的同志通过Set原创 2011-10-16 12:41:22 · 11695 阅读 · 21 评论 -
VC2008减小对话框程序大小的方法 .
前两天装了个VS2008的SP1补丁,发现一个Release版本静态链接的空的对话框程序就有1.65M,这也太大了吧,然后看了下和VS2005里的不同之处,原来CxxxApp类从CWinAppEx类继承,并非先前的CWinApp类,改回去试试,重新编译,大小变为372K,哈哈原来就是这个地方。有以下3处需要修改BEGIN_MESSAGE_MAP(CxxxApp, CWinAppEx)转载 2011-10-15 12:31:47 · 1393 阅读 · 0 评论 -
认识Windows API和MFC
Windows API: Windows 这个多作业系统除了协调应用程序的执行、分配内存、管理资源…之外, 它同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务就是一个函数),可以帮应用程式达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序(Application), 所以便称之为 Application Programming Interface,转载 2011-09-15 23:41:13 · 3978 阅读 · 0 评论 -
VC编程命名规则---[ 匈牙利命名法]
Windows及VC编程命名规则 匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述。其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。目前在Windows程序开发和MFC程序开发中常用的命名规则是匈牙利命名法。下面就是HN命名法的一般规则。 属性部分 全局变量 g_ cons转载 2011-09-15 16:53:35 · 1440 阅读 · 0 评论 -
VC++实现交换网络的QQ号嗅探
当我们在一个交换网络里面,不知道别人的QQ号码是个很痛苦的事情,假如一个PLMM在上网,你却不知道她得QQ也没有勇气去问,是个很可惜的事情,至于我们搞编程的,可以通过交换机的数据交换,嗅探出QQ号,因为QQ数据里面唯独QQ号码不加密。#include "stdafx.h"#include "pcap.h"#include #include "Iphlpapi.h"#incl转载 2012-03-13 12:04:49 · 1096 阅读 · 0 评论 -
[进程间通信]利用油槽来实现进程间的通信
油槽是1:基于广播通信设计出来的2:它采用无连接的不可靠的数据传输3:是一种单向的通信方式4:油槽的服务器进程读取数据,客户端进程写入数据5:消息的长度在424字节以下(大约210个汉字) 实现步骤:1:建立一个MFC AppWizard,名为MailslotSrv的单文档程序,添加一个菜单项,名为“接收数据”,IDM_MAILSLOT_RECE,在view内下为该原创 2012-03-16 15:24:23 · 2397 阅读 · 0 评论 -
互斥量与临界区的区别
上个星期去绿盟科技面试C++开发实习生,期中被问到互斥量与临界区的区别,当时睁着我水汪汪的大眼睛不知如何是好。我没有准备好,孙鑫的MFC视频也没看通透。所以答不出来。毕竟是去练一下胆量和走一下流程。现筛选一些有用的信息整合起来,以防以后用到。嘿嘿,我无耻地将其设为自己的原创。 不管是辅助线程还是用户接口线程,原创 2012-05-31 17:39:33 · 16565 阅读 · 1 评论 -
MFC文件类CStdioFile读写中文文件的注意事项
CStdioFile类是从MFC文件类CFile中继生而来的,可以一行一行地读写文件,非常方便。常用ReadString()和WriteString()两个方法。下面是一个用例:程序弹出一个“打开”对话框,用户选择一个TXT文档,程序逐行读入文档内容,并作字符串分割处理。void C****Dlg::ReadFile(){ CFileDialog dlg(TRUE,_T("(*TX原创 2013-04-11 10:10:39 · 4215 阅读 · 0 评论 -
VS2010为新添加的对话框添加OnInitDialog()方法,即重写OnInitDialog()
有时候需要为新添加的对话框添加OnInitDialog()方法为对话框执行一些初始化工作,但是你却找不到在哪里添加是吗?对话框属性面板里只有“控件事件”与“消息”两种,找不到重写的地方对吗?那就到对话框绑定的类的头文件中,将鼠标移至成员声明部分,单击F4按钮,再看属性栏,消息图标旁边会出现一个小图标,那就是重写图标了。原创 2013-04-11 16:22:47 · 3405 阅读 · 0 评论 -
MFC实现程序开机自启动
很多监控软件要求软件能够在系统重新启动后不用用户去点击图标启动项目,而是直接能够启动运行,方法是写注册表Software//Microsoft//Windows//CurrentVersion//Run 。参考程序可以见下:(查找程序目录的执行文件,存在则进行添加注册表操作)//实用代码一int C***Dlg::CreateRun(void){//添加以下代码转载 2013-04-12 11:38:00 · 3465 阅读 · 0 评论 -
vs2010中的Resource View和Class View都为空的有效解决办法
近期在学习windows socket编程,决定在熟练到一定程度后研究下飞鸽传书(IPMSG)。下午打开了IPMSG大致看了一下源码,毫无头绪。技术细节全然不知。这倒没什么,刚起步也没有多大要求。从页面布局开始下手吧,突然发现用VS2010打开后只能查阅和编辑Solution Explorer上的文件,而Resource View 和Class View全部是空白一片,双击***.rc2资源文原创 2012-05-08 22:49:53 · 8213 阅读 · 18 评论 -
通过小练习掌握MFC知识点之起步篇-MFC与数据库的交互
数据库tangentDemo中的表employee1. 编程实现增加、删除、修改employee中的数据,并把结果显示在list中2. 编程实现查询出Title为sales,TitleofCourtesy为MS的所有职员的FirstName, LastName,Title,TitleofCourtesy并把结果显示到list中AD原创 2013-04-16 10:14:29 · 2027 阅读 · 0 评论 -
通过小练习掌握MFC知识点之起步篇--ComboBox的使用,DLL方式读取文件信息到CListCtrl控件中
考核文件和数据结构的运用。1:创建以下文本文件。直接复制到一个txt文档中即可.//地区 单位 专业 姓名北京 建设部设计院建筑 张三北京 建设部设计院建筑 张符北京 建设部设计院建筑 张高北京 建设部设计院电气 东方北京 建设部设计院结构 丰富北京 建设部设计院结构 表达北京 华北设计院 建筑 分方法北京 华北设计院 结构 达到原创 2013-04-10 17:21:01 · 2487 阅读 · 1 评论 -
关于窗口自绘及控件自绘
收集的例程下载地址对话框标题栏自绘的改进及自绘对话框http://download.youkuaiyun.com/detail/chenlycly/2671921http://bbs.youkuaiyun.com/topics/350266739http://blog.youkuaiyun.com/chenlycly/article/details/5864367htt原创 2013-04-22 08:58:07 · 1970 阅读 · 0 评论 -
MFC只能运行一个实例
介绍两种:第一种是最为方便同时强烈建议的方式(据说容易被破解):在C****.cpp APP实现文件中BOOL C***App::InitInstance()下输入代码HANDLE hMutex = ::CreateMutex(NULL,TRUE,m_pszExeName);//最后一个变量可以自己更改名称 if (NULL != hMutex) { if(GetLast原创 2013-05-04 22:53:29 · 1654 阅读 · 0 评论 -
MFC分割字符串
一切尽在代码中,各位自己看吧。还是非常好懂的。//分割字符串void Split(CString strSource,CStringArray& strDest){ strDest.RemoveAll(); TCHAR seps[] = _T(" "); TCHAR *token,*next_token; token = _tcstok_s( (LPTSTR)(LPCTSTR原创 2013-04-10 08:56:34 · 4686 阅读 · 1 评论 -
[内存管理]智能指针的好帮手weak_ptr
weak_ptr是为配合shared_ptr而引入的一种智能指针,它更像是shared_ptr的一个助手,而不是智能指针,因为它不具有普通指针的行为,没有重载operator*和operator->,它的最大作用在于协助shared_ptr,像旁观者那样观测资源的使用情况。 类摘要:template class weak_ptr{ public: weak_ptr()原创 2012-03-21 12:16:46 · 11150 阅读 · 3 评论