- 博客(24)
- 资源 (6)
- 收藏
- 关注
转载 高效的两段式循环缓冲区──BipBuffer
Simon Cooke,美国 (原作者)北京理工大学 20981 陈罡(翻译)写在前面的话: 循环缓冲区是一个非常常用的数据存储结构,已经被广泛地用于连续、流数据的存储和通信应用中。对于循环缓冲区,传统的操作方法是开辟一块连续的存储区,不断地写入数据,当写入到存储区的末尾的时候,再从存储区的首部再开始写入数据,由此不断地重复下去构成了循环缓冲区。偶曾经写过很多循环缓冲
2017-11-06 23:09:55 366
转载 MFC如何使控件大小随着对话框大小自动调整
Hi,All,对话框的大小变化后,假若对话框上的控件大小不变化,看起来会比较难看。下面就介绍怎么让对话框上的控件随着对话框的大小的变化自动调整。首先明确的是Windows有一个WM_SIZE消息响应函数,这个函数在对话框大小发生变化的时候调用,所以我们可以记录下原来对话框的大小,还有当前对话框的大小(这个不用自己算,系统已给出),然后根据控件做出相应比例的调整。比如原来对话框大小为
2014-12-01 22:43:32 648
转载 重温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 738
转载 Visual Studio 2005-如何添加 需要重载 的虚函数
先在类视图中选中这个类,然后 点击“属性”,会出现这个类对应的 属性窗口,点击 这个属性窗口 中工具栏的 重写 按钮,再在下面找到要 重载 的函数,点其右边的空白区域,会出现一个下拉列表,在列表中选择 添加函数名。
2012-04-26 09:30:59 2524
转载 U盘插入与拔出识别
在很多应用程序中,我们往往希望程序能够自动检测出即插即用型设备的插入和拔出.在windows平台上,当PnP设备插入或柭出时系统会发出WM_DEVICECHANGE消息,应用程序只需截获该消息并作出相应的处理,就可以实现上述功能.下面我们以一个MFC开发环境,写出一个能够识别出U盘插入和拔出的程序例子.1.新建一个基于对话框的MFC程序PnPTest.2.手工在PnPTestDlg类中加入
2012-04-02 16:48:00 2740 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 591
转载 坛子里看的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 542
原创 编写类String的构造函数、析构函数和赋值函数
这个在面试或笔试的时候常问到或考到。 已知类String的原型为:class String { public: String(const char *str = NULL);// 普通构造函数 String(const String &other); // 拷贝构造函数 ~ String(void); /
2011-11-17 14:31:38 525
转载 以小见大:从小函数实现看应聘者的编程素质(atoi.strcmp...)
在程序员面试的时候,面试官通常会让你实现一个或几个C语言里的库函数,以此来检查你的编程功底。类似的函数实现有atoi.itoa.atof.strcmp.strcpy.memset.memcpy等等。在平时的编程中,我们可能极少有机会要自己实现这些函数。但是面试官却很喜欢用这些东西考察你。实际上所谓的"考察",永远是个伪命题。面试者其实不是用这个小函数的实现来考察"你行",而大部分寄希望于用这个
2011-11-17 11:58:56 464
转载 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 541
转载 CString工作原理和常见问题分析
关于Cstring 类版权所有©Stevencao@benq.com2003-11-6看了很多人写的程序,包括我自己写的一些代码,发现很大的一部分bug是关于MFC类中的CString的错误用法的.出现这种错误的原因主要是对CString的实现机制不是太了解。CString是对于原来标准c中字符串类型的一种的包装。因为,通过很长时间的编程,我们发现,很多程序的bug多
2011-11-05 12:03:03 392
转载 VC中ListCtrl经验总结
ListCtrl在工作中,常常用到,也常常看到大家发帖问怎么用这个控件,故总结了一下自己的使用经验,以供参考使用。先注明一下,这里,我们用m_listctrl来表示一个CListCtrl的类对象,然后这里我们的ListCtrl都是report形式,至于其他的如什么大图标,
2011-10-18 11:52:42 357
转载 C++异常处理须知
第一部分:1.异常发生时,异常对象会沿函数调用栈的反方向抛出,这个过程常称为栈展开。2.在栈展开过程中,如果异常对象始终都没遇到可行的catch处理块,系统将调用terminate函数强制终止程序。当然如果连try块都没有,系统将直接调用terminate函数。3.在
2011-09-14 14:30:37 461
转载 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 473
转载 很有助于理解指针和指针所指向的内容的代码片段
在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 479
原创 达夫设备(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 1123
转载 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 1462
转载 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 511
转载 如何隐藏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 757
原创 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 1920
转载 学习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 2128
原创 开机回答自己的问题才能使用
<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 738
原创 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 558
原创 修改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 2357
VC使用ZLIB压缩解压多级文件夹
2018-11-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人