VC
zhubo_1117
这个作者很懒,什么都没留下…
展开
-
文件的本质,以及在VC中读写文本文件盒二进制文件的注意事项
文件是在计算机内存中以二进制表示的数据在外部存储介质上的另一种存放形式。文件通常分为二进制文件和文本文件。二进制文件是包含在ASCⅡ及扩展ASCⅡ字符中编写的数据或程序指令的文件,一般是可执行程序、图形、图像、声音等文件。文本文件(也称为ASCⅡ文件):它的每一个字节存放的是可表示为一个字符的ASCⅡ代码的文件,它是以“行”为基本结构的一种信息组织和存储方式的文件,可用任何文字处理程序阅读的简单文转载 2013-10-09 19:34:46 · 2193 阅读 · 0 评论 -
拷贝构造函数(C++)
http://baike.baidu.com/view/1266959.htm?fr=aladdin调用拷贝构造函数的情形在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):1) 一个对象作为函数参数,以值传递的方式传入函数体;2) 一个对象作为函数返回值,以值传递的方式从函数返回;3) 一个对象用于给另外一个对象进行初始化(常称为赋值转载 2014-07-02 11:04:48 · 477 阅读 · 0 评论 -
C语言的代码内存布局
由以下3个部分组成:1)BSS 段 BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。未初始化数据段只在运行的初始化阶段才会产生,因此它的大小不会影响目标文件的大小。 bss段包含未初始化的全局变量和static变量。2)da转载 2014-06-13 09:52:43 · 632 阅读 · 0 评论 -
map容器对象插入数据的4种方式
#include #include #include #include using namespace std;int main(){ map Employee; //通过键值赋值 Employee[123] = "Mayuefei"; //通过成员函数ins转载 2014-06-13 09:31:24 · 1261 阅读 · 0 评论 -
SendMessage在不同线程之间调用与本线程调用的区别
If the specified window was created by the calling thread, the window procedure is called immediately as a subroutine. If the specified window was created by a different thread, the system switches转载 2014-06-13 09:28:28 · 1459 阅读 · 0 评论 -
STL中关于_Predicate变量的传参注意事项
在使用类似find_if函数时的最后一个参数时,转载 2014-06-13 11:13:26 · 1428 阅读 · 0 评论 -
AfxGetMain()和AfxGetApp()->m_pMainFrame的区别
在多线程程序中AfxGetApp()->m_pMainWnd 应用程序主线程的句柄,在一个多线程应用程序中是唯一的AfxGetMainWnd() 调用线程的句柄,暨当前语句所在线程的句柄,不唯一。转载 2014-07-25 11:36:56 · 1823 阅读 · 0 评论 -
C++中析构函数为什么是虚函数
1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 下面转自网络:源地址 http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html a.第一段代码 #includeusing namespace std;class ClxB转载 2014-07-30 15:33:46 · 561 阅读 · 0 评论 -
5分钟搞定内存字节对齐
写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧. /******************************分割线如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢?体系结构的对齐和不对齐转载 2014-09-03 10:17:47 · 417 阅读 · 0 评论 -
C++ 得到成员变量的偏移值
#include #define GET(A,m) (int)(&((A*)0)->m); using namespace std; struct A{ int a;//4 char b[3];//4 int d;//4 int c; }; int main(int argc, char *argv[]) { //--------转载 2014-09-03 09:45:36 · 801 阅读 · 0 评论 -
CComboBox控件中数据的获取问题
一般情况下,可以用GetWindowText获取ComboBox的值,但在ComboBox的值发生改变的时候,GetWindowText的值是改变前的值,而改变之后的值要用GetLBText来获取。而具体在哪个事件中处理,则不是主要问题,一般都可以。下面是在CBN_SELCHANGE中的处理:CString s;CComboBox *pComb = (CComboBox *)GetDl转载 2014-07-01 11:23:03 · 2418 阅读 · 0 评论 -
C联合
联合体union 当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。在C Programming Language 一书中对于联合体是这么描述的: 1)联合体是一个结构; 2)它的所有成员相对于基地址的偏移量都为0; 3)此结构空间要大到足够容纳最"宽"的成员; 4)其对齐方式要适合其中转载 2014-03-12 20:21:15 · 522 阅读 · 0 评论 -
C++ Static变量
C++中Static作用和使用方法2008-10-31 12:201、什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。2、为什么要引入static? 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这转载 2014-03-12 20:00:49 · 595 阅读 · 0 评论 -
什么是lib库
LIB有两种,一种是静态库,比如C-Runtime库,这种LIB中有函数的实现代码,一般用在静态连编上,它是将LIB中的代码加入目标模块(EXE或者DLL)文件中,所以链接好了之后,LIB文件就没有用了。一种LIB是和DLL配合使用的,里面没有代码,代码在DLL中,这种LIB是用在静态调用DLL上的,所以起的作用也是链接中用,链接完成了,LIB也没用了。至于动态调用DLL的话,根本用不上LIB文件原创 2013-10-09 19:36:52 · 1700 阅读 · 0 评论 -
MFC 如何修改窗口的标题CFrameWnd
来自:http://www.360doc.com/content/12/0105/15/2660674_177456393.shtmlhttp://www.cnblogs.com/Romi/archive/2012/02/14/2351799.html一.修改标题标题分为前后两部分,前面一部分默认是文档名,后面一部分默认是工程名,比如我新建一个叫做UITEST的工程,那转载 2013-09-24 21:38:25 · 2495 阅读 · 0 评论 -
什么是钩子程序
钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函转载 2013-10-24 20:44:04 · 1455 阅读 · 0 评论 -
dll方法调用引发的CrtIsValidHeapPointer错误
文章一 从CrtIsValidHeapPointer的实现代码处我们可以得知,这个函数不仅检查了空指针的情况,更重要的是检查了指针地址的有效性。我遇到的问题: 释放内存时,弹出assert,报错的函数就是上面提到的这个:CrtIsValidHeapPointer。可是为什么会报错呢?CrtIsValidHeapPointer的注释上说明了情况:如果要释放的内存地址不转载 2013-11-19 14:14:38 · 897 阅读 · 0 评论 -
串口通信
串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数转载 2013-11-14 11:32:48 · 1026 阅读 · 0 评论 -
图像灰度值的概念
http://sheying.xout.cn/rmzs/70116.html 图像灰度值的概念是什么?灰度也可以认为是亮度,简单说就是色彩的深浅程度。 实际上在我们的日常生活中,通过三原色色彩深浅的组合,可以组成各种不同的颜色。产品能够展现的灰度数量越多,也就意味着这款产品的色彩表现力更加丰富,能够实现更强的色彩层次。例如三原色16级灰度,能显示的转载 2013-12-10 09:41:01 · 7382 阅读 · 0 评论 -
图像增强算法研究综述
http://wenku.baidu.com/link?url=XsHtp5zq2cvu9NkDfMKQ9cVriWlMfQBudlD2EC901aZfSG8ctri7B-obdiDlRH0CCrJJgKLp32-nbRxkZGnAzn452e-9gx_Sgk6fKZeNVM_转载 2013-12-10 19:57:48 · 2091 阅读 · 0 评论 -
图像通道
在图像处理中有一个很重要的概念叫图像通道,在RGB色彩模式下就是指那单独的红色、绿色、蓝色部分。也就是说,一幅完整的图像,是由红色绿色蓝色三个通道组成的。他们共同作用产生了完整的图像。 一幅完整的图像,红色绿色蓝色三个通道缺一不可。即使图像中看起来没有蓝色,只能说蓝色光的亮度均为0,但不能说没有蓝色通道存在。 “存在、亮度为零”和“不存在”是两个不同的概念。转载 2013-12-17 14:19:44 · 579 阅读 · 0 评论 -
解除svn版本控制
步骤1.去除目录下的所有.svn文件夹;两种方式:方法1:搜索目录下所有.svn文件,删除;方法2:复制下列文字到txt中,然后把扩展名改为reg,放到需要去除.svn的目录中,双击运行注册表即可。Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell转载 2014-09-30 16:57:52 · 796 阅读 · 0 评论 -
VC++中GDI对象的释放问题
http://bbs.csdn.net/topics/290080408 VC++中GDI对象的释放问题原创 2013-08-02 11:19:53 · 1422 阅读 · 0 评论 -
[转载]MFC截屏之一:C++截取整个屏幕,并生成图片(基于MFC)
一步:建立Windows 32控制台控制程序第二部:设置工程的属性如下:MFC的使用 --> 在共享 DLL 中使用 MFCstdafx.h#pragma once#define WIN32_LEAN_AND_MEAN // 从 Windows 头中排除极少使用的资料#include ScreenCapture.cpp转载 2016-01-29 16:15:00 · 5186 阅读 · 2 评论 -
DLL注入技术
一、DLL注入技术的用途DLL注入技术的用途是很广泛的,这主要体现在:1、假如你要操纵的对象涉及的数据不在进程内;2、你想对目标进程中的函数进行拦截(甚至API函数,嘿嘿,由此编写个拦截timeGettime的过程,变速齿轮不就出来了么?改天我试试),比如对它所属窗口进行子类化。3、你想编写一些函数用于增强或增加目标进程功能,比如可以给目标进程的某个窗口插入个消息循转载 2016-04-06 10:55:31 · 2286 阅读 · 0 评论 -
windows消息和消息队列详解
windows消息和消息队列 与基于MS - DOS的应用程序不同,Windows的应用程序是事件(消息)驱动的。它们不会显式地调用函数(如C运行时库调用)来获取输入,而是等待windows向它们传递输入。 windows系统把应用程序的输入事件传递给各个窗口,每个窗口有一个函数,称为窗口消息处理函数。窗口消息处理函数处理各种用户输入,处理完成后再将控制权交还给系统。窗口消息处理函数一转载 2016-03-27 16:11:09 · 3565 阅读 · 0 评论 -
windows消息机制(MFC)
windows消息机制(MFC)消息分类与消息队列Windows中,消息使用统一的结构体(MSG)来存放信息,其中message表明消息的具体的类型,而wParam,lParam是其最灵活的两个变量,为不同的消息类型时,存放数据的含义也不一样。time表示产生消息的时间,pt表示产生消息时鼠标的位置。按照类型,Windows将消息分为:(0) 消息ID范转载 2016-03-27 16:19:02 · 1301 阅读 · 1 评论 -
define宏定义中的#,##,@#及\符号
一、#名称:字符串化操作符其作:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串。使用条件:只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前举例:#define example1(instr) #instrstring str=example1(abc); 将会展成:string str="abc";注意:对空格的处理转载 2016-04-28 18:17:39 · 5099 阅读 · 0 评论 -
QQ密码输入框(防键盘钩子)原理分析
1.网上看到的一些防星号查看器的代码大多是在后台维护一个字符串(真实的密码),界面则不显示真实的密码,这样做,维护那个字符串很费事,就因为我之前那样做过,我才在看到WM_GETTEXT后想要重做一个2.防键盘钩子,在做上面的功能是,突然想到,如果自己模拟发一些乱七八糟的按键消息,然后自己区分哪些是垃圾哪些是用户真正的按键,那钩子就到不取密码了,所以又加了这个功能.后来自己做了一个钩子看了一下效转载 2016-04-20 11:51:28 · 6976 阅读 · 0 评论 -
钩子(hook)编程
钩子(hook)编程 一、钩子介绍 1.1钩子的实现机制钩子英文名叫Hook,是一种截获windows系统中某应用程序或者所有进程的消息的一种技术。下图是windows应用程序传递消息的过程:如在键盘中按下一键,操作系统将收到键按下消息,把消息放入消息队列,然后消息队列对消息进行派发,发给相应的应用程序,经过应用程序处理后发给操作系统,操作系统再调用相应的应转载 2016-04-20 12:29:06 · 7932 阅读 · 0 评论 -
【转载】WIN32 应用程序内嵌IE浏览器(注意非MFC)
直接上代码: 后面附带注释 (代码是我从网上搜下来的,然后经过我的机器调试,并且编译通过的)本文用到了COM组件的相关知识,ATL的相关知识#include CComModule _Module;#include #include #pragma comment(lib,"atl")#pragma comment(lib,"User32.lib")L转载 2016-10-14 16:39:01 · 3031 阅读 · 0 评论 -
Windows中进程的内存结构
基础知识:堆栈是一种简单的数据结构,是一种只允许在其一端进行插入或删除的线性表。允许插入或删除操作的一端称为栈顶,另一端称为栈底,对堆栈的插入和删除操作被称为入栈和出栈。有一组CPU指令可以实现对进程的内存实现堆栈访问。其中,POP指令实现出栈操作,PUSH指令实现入栈操作。CPU的ESP寄存器存放当前线程的栈顶指针,EBP寄存器中保存当前线程的栈底指针。CPU的EIP寄存器存放下一个CPU指令存转载 2016-01-11 14:27:01 · 2227 阅读 · 0 评论 -
c函数itoa和atoi实现
1、itoa函数实现[cpp] view plaincopy#include void itoa(int i, char *string) { int power=0,j=0; j=i; for( power=1;j>10;j/=10)转载 2016-01-11 12:28:38 · 436 阅读 · 0 评论 -
精确获取时间(QueryPerformanceCounter)
LARGE_INTEGER tima,timb; QueryPerformanceCounter(&tima);在 Windows Server 2003 和 WindowsXP 中使用 QueryPerformanceCounter 函数的程序可能执行不当QueryPerformanceCounter 來精確計算執行時間QueryPerformanceCounter 來精转载 2016-01-28 10:58:54 · 3188 阅读 · 0 评论 -
MFC如何将View(视图)内容保存为图片
我们在单文档应用程序中,经常需要将View中的内容保存为各种格式的图片文件,以便打印。乍一看,可能不知道从哪里下手,其实主要就是用到Bitmap的save方法,如:HDC hmemDC = ::CreateCompatibleDC( hdc ); HBITMAP hBmp = ::CreateCompatibleBitmap( hdc, destRect.Width(),dest转载 2014-11-18 16:32:12 · 4670 阅读 · 1 评论 -
Socket API,CAsyncSocket,CSocket内幕及其用法
Socket有同步阻塞方式和异步非阻塞方式两种使用,事实上同步和异步在我们编程的生涯中可能遇到了很多,而Socket也没什么特别。虽然同步好用,不费劲,但不能满足一些应用场合,其效率也很低。 也许初涉编程的人不能理解“同步(或阻塞)”和“异步(或非阻塞)”,其实简单两句话就能讲清楚,同步和异步往往都是针对一个函数来说的,“同步”就是函数直到其要执行的功能全部完成时才返回,而“异步”则是,转载 2014-11-18 17:10:06 · 615 阅读 · 0 评论 -
vs2008远程调试
在网上找了好多资料才把这个调试环境搭好,下面总结一下:先说明两个概念:1. 目标机:远程需要调试的机子,也就是被调试程序exe所在的机子,该机子可以安装VS2008或者不安装vs20082. 调试机:安装VS2008的机子,就是存放代码下断点调试的机子,该机子必须安装vs2008 下面介绍具体设置步骤:目标机:1.转载 2015-01-27 22:15:14 · 567 阅读 · 0 评论 -
关于动态创建菜单后,如何获取选择的菜单项
在动态创建菜单后,如果想知道用户是选择的哪一个菜单项retId = TrackPopupMenu( hMenu , TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD , pt.x , pt.y , 0 , this -> m_hWnd , NULL ); // start the menu如果选中了: TPM_RETURNCMD这个属转载 2014-12-18 16:44:43 · 1553 阅读 · 0 评论 -
保存CBitmap图片到硬盘的方法
来自:http://blog.sina.com.cn/s/blog_6ee382440100moeu.htmlvoid WriteBmp(CBitmap *PBitmap){ BITMAPINFO *m_pBMI; BYTE *m_pDIBData; BITMAPFILEHEADER bfh; BITMAPINF转载 2014-12-18 16:18:09 · 730 阅读 · 0 评论 -
vs2008如何新建自己工程的环境变量(局部)和 Windows系统(全局). .
在vs2008的Project->Property设置里经常会看到类似$(IntDir)、$(OutDir)、$(ProjectName) 的预定义宏。以vc2008为例,有时候我们在引用别的库时需要在项目设置里添加额外的头文件和库文件路径,我们不想每个路径都用一大堆的“../.. /include”或绝对路径表示,因为不但繁琐而且万一路径改变每处都要修改,不方便维护,我们希望能自定义类是$(my转载 2015-02-03 17:02:16 · 521 阅读 · 0 评论