自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (6)
  • 收藏
  • 关注

转载 高效的两段式循环缓冲区──BipBuffer

Simon Cooke,美国 (原作者)北京理工大学  20981  陈罡(翻译)写在前面的话:    循环缓冲区是一个非常常用的数据存储结构,已经被广泛地用于连续、流数据的存储和通信应用中。对于循环缓冲区,传统的操作方法是开辟一块连续的存储区,不断地写入数据,当写入到存储区的末尾的时候,再从存储区的首部再开始写入数据,由此不断地重复下去构成了循环缓冲区。偶曾经写过很多循环缓冲

2017-11-06 23:09:55 346

转载 MFC如何使控件大小随着对话框大小自动调整

Hi,All,对话框的大小变化后,假若对话框上的控件大小不变化,看起来会比较难看。下面就介绍怎么让对话框上的控件随着对话框的大小的变化自动调整。首先明确的是Windows有一个WM_SIZE消息响应函数,这个函数在对话框大小发生变化的时候调用,所以我们可以记录下原来对话框的大小,还有当前对话框的大小(这个不用自己算,系统已给出),然后根据控件做出相应比例的调整。比如原来对话框大小为

2014-12-01 22:43:32 637

转载 重温C++ primer 之const总结

1.const变量,即常变量(变量值保持不变,不能被修改)a.const变量默认时是定义该变量的文件的局部变量b.非const*指针无法指向const 变量,只有const *指针能指向const 变量。c.一些const 变量定义在头文件中,const变量通过常量表达式自我初始化时.2.A.a.const T *pstr;指向常对象的指针,简单理解成*pstr不变,即指向

2014-03-09 01:21:48 732

转载 Visual Studio 2005-如何添加 需要重载 的虚函数

先在类视图中选中这个类,然后 点击“属性”,会出现这个类对应的 属性窗口,点击 这个属性窗口 中工具栏的 重写 按钮,再在下面找到要 重载 的函数,点其右边的空白区域,会出现一个下拉列表,在列表中选择 添加函数名。

2012-04-26 09:30:59 2496

转载 U盘插入与拔出识别

在很多应用程序中,我们往往希望程序能够自动检测出即插即用型设备的插入和拔出.在windows平台上,当PnP设备插入或柭出时系统会发出WM_DEVICECHANGE消息,应用程序只需截获该消息并作出相应的处理,就可以实现上述功能.下面我们以一个MFC开发环境,写出一个能够识别出U盘插入和拔出的程序例子.1.新建一个基于对话框的MFC程序PnPTest.2.手工在PnPTestDlg类中加入

2012-04-02 16:48:00 2728 2

转载 使用ifstream和getline读取文件内容

#include #include #include using namespace std;//输出空行void OutPutAnEmptyLine(){ cout<<"\n";}//读取方式: 逐词读取, 词之间用空格区分//read data from the file, Word By Word//when used in th

2012-03-08 15:06:28 587

转载 坛子里看的2个笔试题

1. 合并两个排序链表(老问题,用C实现吧)2.100个整数组成的数组,打乱次序,拿掉其中一个数,把它找出来( 运用另外一个数学技巧可以几行代码搞定 )//1.const node *merge_lists(const node *head1, const node *head2){ const node *head; const node *cur;

2012-02-07 17:49:38 540

原创 编写类String的构造函数、析构函数和赋值函数

这个在面试或笔试的时候常问到或考到。 已知类String的原型为:class String { public: String(const char *str = NULL);// 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void); /

2011-11-17 14:31:38 519

转载 以小见大:从小函数实现看应聘者的编程素质(atoi.strcmp...)

在程序员面试的时候,面试官通常会让你实现一个或几个C语言里的库函数,以此来检查你的编程功底。类似的函数实现有atoi.itoa.atof.strcmp.strcpy.memset.memcpy等等。在平时的编程中,我们可能极少有机会要自己实现这些函数。但是面试官却很喜欢用这些东西考察你。实际上所谓的"考察",永远是个伪命题。面试者其实不是用这个小函数的实现来考察"你行",而大部分寄希望于用这个

2011-11-17 11:58:56 458

转载 GetBuffer与ReleaseBuffer的用法,CString剖析

转载: http://blog.pfan.cn/xman/43212.htmlGetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能。CString ::GetBuffer有两个重载版本:LPTSTR GetBuffer( );LPTSTR GetBuffer(int

2011-11-05 12:59:00 536

转载 CString工作原理和常见问题分析

关于Cstring 类版权所有©[email protected]看了很多人写的程序,包括我自己写的一些代码,发现很大的一部分bug是关于MFC类中的CString的错误用法的.出现这种错误的原因主要是对CString的实现机制不是太了解。CString是对于原来标准c中字符串类型的一种的包装。因为,通过很长时间的编程,我们发现,很多程序的bug多

2011-11-05 12:03:03 386

转载 VC中ListCtrl经验总结

ListCtrl在工作中,常常用到,也常常看到大家发帖问怎么用这个控件,故总结了一下自己的使用经验,以供参考使用。先注明一下,这里,我们用m_listctrl来表示一个CListCtrl的类对象,然后这里我们的ListCtrl都是report形式,至于其他的如什么大图标,

2011-10-18 11:52:42 355

转载 C++异常处理须知

第一部分:1.异常发生时,异常对象会沿函数调用栈的反方向抛出,这个过程常称为栈展开。2.在栈展开过程中,如果异常对象始终都没遇到可行的catch处理块,系统将调用terminate函数强制终止程序。当然如果连try块都没有,系统将直接调用terminate函数。3.在

2011-09-14 14:30:37 457

转载 VC中CString,int,string,char*之间的转换

1 CString,int,string,char*之间的转换 string 转 CString     :CString.format("%s", string.c_str()); char 转 CString :    CString.format("%s", cha

2011-09-02 16:26:11 469

转载 很有助于理解指针和指针所指向的内容的代码片段

在CU上到很有意思的一道题,回帖,备忘与此。 struct  S{   int    i;   int    *p; }; int main(void) {     struct S  s;     int *p = &s.i;     p[0] = 4;     p[1] =

2011-07-16 15:50:51 470

原创 达夫设备(Duff's Device)的详细说明

前几天在网上看见了一段代码,叫做“Duff's Device”,后经验证它曾出现在Bjarne的TC++PL里面:  void send( int * to, int * from, int count)          //    Duff设施,有帮助的注释被有意删去了   {          int n = (count + 7 ) / 8 ;          switch (count % 8 ) {          case 0 :    do { * to ++ = * from ++ ;

2011-05-24 09:41:00 1116

转载 strcmp为什么要用unsigned char

<br />字符串比较函数,这个函数也比较常用:<br />view plaincopy to clipboardprint?<br />int strcmp(const char* str1,const char* str2){   <br />    assert(str1!=NULL&&str2!=NULL);   <br />    while(*str1&&*str2&&*str1==*str2){   <br />        str1++;   <br />        str2++;  

2011-05-18 10:57:00 1454

转载 CListCtrl 排序

<br />BOOL SortItems( PFNLVCOMPARE pfnCompare, DWORD dwData );pfnCompare:指定的是一个回调函数的入口地址,这个函数在列表中的连续的节点要进行比较的时候调用,比如说列表中有三个元素,I1,I2,I3, 现在要对这个三个元素排序,那么I1 跟 I2比较时会调用这个函数,I2 跟 I3比较时也会调用(当然,第二次的I2可能已经跟I1互换了). 该函数必须声明为static类型,或者一个非类成员函数.<br /><br /><br />dwDa

2011-05-04 16:08:00 509

转载 如何隐藏win32 console application的console窗口

<br />大家都知道,当编写一个win32 console application时,当运行此类程序的时候默认情况下会有一个类似dos窗口的console窗口,但是有的时候我们只想在程序中运行一段功能代码,不希望显示这个console窗口,让代码执行完毕之后程序自动退出.下面就介绍一下,如何隐藏win32 console application的console窗口 <br />因为此种方法是通过设置编译器的链接开关来实现,所以让我们来看一下编译<br />器的链接开关选项(也就是linker选项).<br

2011-04-19 14:50:00 756

原创 HOOK MessageBox

<br />有时我们需要弹出的MessageBox倒数自动关闭的功能。例如:<br />现在说说具体怎么做。<br />1.HHOOK hook;int closetime;HWND MSGhandle,TXThandle;VOID CALLBACK TimerProc( HWND hWnd, // handle of CWnd that called SetTimer UINT nMsg, // WM_TIMER UINT nI

2011-04-07 11:50:00 1911

转载 学习RING3 内存清零结束进程

<br />内存清零法 杀进程 原理分析 :<br />1.先打开CSRSS.EXE系统进程,获得其句柄,几乎系统所有的HANDLE结构体中,里面的ProcessId都是指向csrss.exe的,利用它的PID来进行遍历进程实现过滤。<br /><br />2.分配好一块内存空间Buffer,用来存储SystemHandleInformation系统句柄信息<br /><br />3.通过ZwQuerySystemInformation函数来查询系统句柄信息并保存在Buffer中,为 ZwQuerySyst

2011-03-31 17:47:00 2115

原创 开机回答自己的问题才能使用

<br />开机回答自己的问题才能使用电脑,可以用过自己写DLL来替换微软的“MsGina.dll”。在NT/2000中交互式的登录是通过winlogon调用GINA.DLL来实现的。微软给出了借口,所有我们能自己编写GINA.DLL。<br />GINA DLL要输出下列函数(winlogon会调用):<br /><br />(表一)GINA 函数一览表<br /><br />函数    描述<br />WlxActivateUserShell   激活用户外壳程序<br />WlxDisplayLock

2011-03-29 17:03:00 731

原创 UpdateData()

<br />UpdateData,顾名思义,是用来刷新数据的。<br />  UpdateData(TRUE) -- 刷新控件的值到对应的变量<br />  UpdateData(FALSE) -- 拷贝变量值到控件显示例如,窗口中用 DDX_Text(pDX, IDC_EDIT1, m_usercode); 将IDC_EDIT1编辑框控件与m_usercode变量做了关联,如果修改m_usercode之后要想对应控件显示更改,则需要调用UpdateData(FALSE);反之在IDC_EDIT1的oned

2011-03-29 16:11:00 555

原创 修改MFC Dialog 的 class name

刚开始看《WINDOWS核心编程5》,看到 HWND hwnd = FindWindow(TEXT("#32770"), TEXT("Error Show"))。知道是在找窗口名"Error Show",但不知"#32770"从何而来。查找才知道,这是一个MFC自动为基于对话框的程序产生的默认窗口类 ,所有的基于MFC所产生的对话框程序都使用这一个默认类名。即是说,在使用一个基于对话框的程序时,无论多少个对话框产生,它们的类名都会是 "#32770(Dialog)"。解决办法:假定 class name是"

2011-03-03 13:28:00 2347

设计模式之禅(第2版)-带目录

设计模式之禅(第2版)-带目录.

2019-03-06

VC使用ZLIB压缩解压多级文件夹

这个代码MFC工程应用是自己写的,文件夹压缩与解压LIB主要是根据:csdn论坛的itloverwm 的资源使用ZLIB库压缩解压源码(支持多级文件夹压缩和解压),地址是:http://download.csdn.net/detail/itloverwm/3928457 上的资源改进后封装而成,修改了其中一个bug,他在解有压缩的3级以上的目录的zip文件时,解压之后文件夹目录不对中途会退出,3级以内正常。改进后经测试CAD安装文件解压6级目录正常使用。另外在函数内部增加了多级目录自动创建,可避免主目录不存在时无法一次解压成功。还增加了单个文件和内存中字符串压缩解压功能,一起补充到工程中,相对来说比较完整了,应用也很简单,包含头文件和LIB后直接可以调用函数了,LIB嵌入比DLL要方便的多。 这里特别感谢itloverwm和yangyou2009,我在其中学习了很多东西。 文件夹压缩后里面的文件时间属性会提前8个小时,这个还没来的及研究,不过文件MD5是一样的,不影响实际使用。

2018-11-16

Boost程序库完全开发指南:深入C++_准_标准库 第3版 中文.part2

Boost程序库完全开发指南:深入C++_准_标准库 第3版 中文.part2

2017-10-24

Boost程序库完全开发指南:深入C++_准_标准库 第3版 中文.part1

Boost程序库完全开发指南:深入C++_准_标准库 第3版 中文.part1

2017-10-24

利用MFC实现串口通信

MFC做的串口通信例子,多线程接收。可以发送16进制

2017-06-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除