随笔分类 -  C++

C/C++中的常量指针与指针常量(转)
摘要:常量指针常量指针是指向常量的指针,指针指向的内存地址的内容是不可修改的。常量指针定义“const int *p=&a;”告诉编译器,*p是常量,不能将*p作为左值进行操作。但这里的指针p还是一个变量,它的内容存放常量的地址,所以先声明常量指针再初始化是允许的,指针也是允许修改的,例如:int a=0... 阅读全文
posted @ 2015-08-21 11:10 一个人的天空@ 阅读(1969) 评论(1) 推荐(0)
fatal error C1859 意外的预编译头错误,只需重新运行编译器(转)
摘要:微软的建议 要解决此问题,请使用下列方法之一。http://support.microsoft.com/kb/976656/zh-cn方法 1禁用/analyze编译器选项,则它会被启用。方法 2开始清理生成。方法 3重新启动计算机。方法 4禁用创建/使用预编译头的编译器选项。注意这些方法不能保证正... 阅读全文
posted @ 2015-08-20 10:54 一个人的天空@ 阅读(2739) 评论(0) 推荐(0)
fatal error C1083: 无法打开编译器生成的文件:“../../build/vs71/release/lib_json\json_value.asm”: No such file or directory
摘要:修改生成静态库文件的工程的属性:路径为:菜单---项目--属性---配置属性---c/c++---输出文件---汇编程序输出:无列表 阅读全文
posted @ 2015-08-14 11:08 一个人的天空@ 阅读(4108) 评论(0) 推荐(0)
动态创建的 CEdit 被限制长度,增加 ES_AUTOHSCROLL 属性;被无法Tab激活焦点,增加 WS_TABSTOP 属性(转)
摘要:动态创建的 CEdit 被限制长度,增加 ES_AUTOHSCROLL 属性;被无法Tab激活焦点,增加 WS_TABSTOP 属性。CEdit m_editUrl;// ES_AUTOHSCROLL 不受可视范围限制长度;WS_TABSTOP 允许按 Tab 键跳入跳出焦点m_editUrl.Cr... 阅读全文
posted @ 2015-08-12 10:18 一个人的天空@ 阅读(1371) 评论(0) 推荐(0)
WTL中最简单的实现窗口拖动的方法(转)
摘要:目前,很多基于对话框的应用程序中对话框都是不带框架的,也就是说对话框没有标题栏。众所周知,窗口的移动都是通过鼠标拖动窗口的标题栏来实现的,那么现在应用程序中的对话框没有了标题栏,用户如何移动对话框呢?本实例针对这个问题提出解决的办法。一、实现方法 解决无标题栏窗口的拖动问题有两种方案,一种方案是使... 阅读全文
posted @ 2015-08-11 19:29 一个人的天空@ 阅读(1764) 评论(0) 推荐(0)
预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)(转)
摘要:用VC++ 2008 编写C语言程序,编译出现错误:预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)解决方法:建工程时 建立空项目或者在项目设置里关闭预编译头的选项!当 Visual C++ 项目启用了预编译头 (Precompiled header) 功能时,... 阅读全文
posted @ 2015-07-16 11:09 一个人的天空@ 阅读(8406) 评论(0) 推荐(0)
vs2008快捷键
摘要:Ctrl+E,D----格式化全部代码Ctrl+E,F----格式化选中的代码CTRL+SHIFT+B生成解决方案CTRL+F7生成编译CTRL+O打开文件CTRL+SHIFT+O打开项目CTRL+SHIFT+C显示类视图窗口F4显示属性窗口SHIFT+F4显示项目属性窗口CTRL+SHIFT+E显... 阅读全文
posted @ 2015-07-13 10:48 一个人的天空@ 阅读(286) 评论(0) 推荐(0)
VS2008中捕获内存泄露(转)
摘要:内存泄露十分讨厌,捕获内存泄露更加令人厌烦……其实,VS本身就有内存泄露的检测机制。只需做以下操作即可开启。(同时必须在debug模式下运行程序并且以正常流程退出)view plaincopy to clipboard//在入口函数cpp中添加以下定义和头文件#defineCRTDBG_MAP_AL... 阅读全文
posted @ 2015-07-03 11:01 一个人的天空@ 阅读(1745) 评论(0) 推荐(0)
C/C++中volatile关键字详解(转)
摘要:1.为什么用volatile? C/C++ 中的 volatile 关键字和 const 对应,用来修饰变量,通常用于建立语言级别的memory barrier。这是 BS 在 "The C++ Programming Language" 对 volatile 修饰词的说明:A volatile s... 阅读全文
posted @ 2015-06-30 09:54 一个人的天空@ 阅读(326) 评论(0) 推荐(0)
[转]各种互斥量的总结
摘要:研究生阶段一直使用C++,到工作时,才接触到Java。写了这么多年的多线程程序,觉得对于互斥(注意,不是同步哦)的各种锁有必要做个总结。这里我想将Windows,Linux和Java JVM三种环境中使用锁的环境及虽然将Windows,Linux和Java JVM放在一起比较是有些不合适的,但是对基... 阅读全文
posted @ 2015-06-29 13:53 一个人的天空@ 阅读(1789) 评论(1) 推荐(0)
何时调用C++复制构造函数和拷贝构造函数(转)
摘要:1. 何时调用复制构造函数复制构造函数用于将一个对象复制到新创建的对象中。也就是说,它用于初始化过程中,而不是常规的赋值过程中。类的复制构造函数原型通常如下:class_name(const class_name&);它接受一个指向类对象的常量引用作为参数。例如,String类的复制构造函数的原型如... 阅读全文
posted @ 2014-11-18 16:35 一个人的天空@ 阅读(1293) 评论(0) 推荐(0)
windows控制台程序——关于UNICODE字符的总结(转)
摘要:前言:从Windows NT/2000开如,Windows系统已经是一个标准的UNICODE系统,系统内部所有字符串存储及操作均使用UNICODE编码。因此Win32 API都是UNICODE版本的,但为了更好的本地化支持,也提供了MBCS(ANSI)版的Win32 API。UNICODE版Win32 API形式为xxxW,W(Wide)代表宽字符;MBCS(ANSI)版Win32 API形式为xxxA,A即ANSI。xxxA形式的Win32 API在被调用时,会先调用先根据“代码页转换表”执行由ANSI——UNICODE的转换,然后再调用xxxW形式的Win32 API去执行实际操作。即xx 阅读全文
posted @ 2014-01-10 11:30 一个人的天空@ 阅读(1829) 评论(0) 推荐(0)
HeapAlloc 和 GlobalAlloc 以及 VirtualAlloc 三者之间的关系(转)
摘要:VirtualAlloc 一次分配 1PAGE 以上的 RAM. 每次分配都是 PAGE 的整数倍. 你不会想为了分配 1 个 BYTE 的空间而浪费剩下的 4095 字节. OK, 你可以自己写算法, 多分配几 PAGE. 然后每次分配少量数据时就从那几 PAGE 中划分出来. KERNEL32 提供了一个解决办法, 用 HeapAlloc/GlobalAlloc 分配 RAM. 这样, KERNEL32 帮助完成分配动作, 并且尽量在减少用于跟踪空闲区域和已占用区域消耗的数据结构.很久以前也有个产品叫做 WINDOWS. 那时候的 WINDOWS 是 16BIT 的, 地址空间有些紧俏, 阅读全文
posted @ 2013-12-27 15:30 一个人的天空@ 阅读(813) 评论(0) 推荐(0)
HOWTO: Get the command line of a process(转)
摘要:How would you get the command line of a process? Some people have suggested that you use remote thread injection, callGetCommandLine(), then IPC the result back. This might work most of the time on Windows XP, but on Windows Vista it doesn’t work on system and service processes. This is becauseCreat 阅读全文
posted @ 2013-12-09 11:31 一个人的天空@ 阅读(2594) 评论(0) 推荐(0)
[Windows核心编程]32bit程序在64bit操作系统下处理重定向细节[1]
摘要:这段时间,都在做Ring3层的普通32bit程序兼容64bit操作系统的代码修改,在此记录修改和学习心德。编程领域太广,任何人经历有限,本人不是专家,所以我一贯原则是:用到的时候,才去研究,在去记录。只要个人的基础知识扎实,吸收一些新的东西,还是蛮顺利的。1.64bit操作系统的重定向机制以及目的在64bit操作系统中,为了无缝兼容32bit程序的运行,64bit的Windows操作系统采用重定向机制。目的是为了能让32bit程序在64bit的操作系统不仅能操作关键文件文夹和关键的注册表并且又要避免与64bit程序冲突。微软采用重定向机制的原理很简单,说白了就是让关键文件/文件夹或者关键注册表 阅读全文
posted @ 2013-11-21 11:02 一个人的天空@ 阅读(697) 评论(0) 推荐(0)
VC获取屏幕分辨率及大小相关(转)
摘要:vc得到屏幕的当前分辨率方法: 1.Windows API调用 int width = GetSystemMetrics ( SM_CXSCREEN ); int height= GetSystemMetrics ( SM_CYSCREEN ); 如果想动态自适应分辨率的变化,处理WM_DISPLAYCHANGE消息. 2.获得分辨率 BOOL EnumDisplaySettings( LPCTSTR lpszDeviceName, // display device DWORD iModeNum, // graphics mode LPDEVMODE lpDevMode // graphic 阅读全文
posted @ 2013-11-15 15:39 一个人的天空@ 阅读(5339) 评论(0) 推荐(0)
Syslink Control in MFC 9.0(转)
摘要:Visual Studio 2008 (formely code-named ‘Orcas’) has several important updates for VC++ and MFC. Among them the possibility to create syslinkcontrols, command or split buttons and network address controls. In this post I will show how you can work with the syslink control. The control provides a way 阅读全文
posted @ 2013-10-23 16:35 一个人的天空@ 阅读(1738) 评论(0) 推荐(0)
InvalidateRect(转)
摘要:///===================该段是自己总结的一个小结=================================InvalidateRect()函数的作用是设置一个无效区域,并发送一个WM_PAINT消息到消息队列中,不过这个消息在众多的消息之中优先级比较级。在VC++编程中,对无效区域的处理方式是:在OnPaint()中绘图,不管它绘制了什么图形,有一点应该明白,有效区域是绘制不上去图形的,或者是尽管绘制上去了,但也不会显示出来。总之就是在有效区域上绘制的图形不能生效。换一种说法就是:在OnPaint()中绘图,不管它绘制了什么图形,只有设置为无效区域的区域才会显示它所 阅读全文
posted @ 2013-09-10 13:53 一个人的天空@ 阅读(5601) 评论(0) 推荐(0)
InvalidateRect()与Invalidate()的用法(转)
摘要:BOOL InvalidateRect(HWNDhWnd,// 窗口句柄CONST RECT*lpRect,// 矩形区域BOOLbErase//是否擦除背景);InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效。InvalidateRect函数中的参数TRUE表示系统会在你画之前用背景色将所选区域覆盖一次,默认背景色为白色,可以通过设置BRUSH来改变背景色。void Invalidate( BOOL bErase )执行之后调用函数的次序为:...OnPaint()->OnPrepareDC()->OnDraw()所以只是刷新在OnPaint()和 阅读全文
posted @ 2013-09-10 11:25 一个人的天空@ 阅读(2947) 评论(0) 推荐(0)
如何建立内核级钩子控制操作系统实现程序隐身(转)
摘要:我们知道,应用程序总是离不开系统内核所提供的服务,比如它要使用内存的时候,只要跟操作系统申请就行了,而不用自己操心哪里有空闲的内存空间等问题,实际上,这些问题是由操作系统的内核来代劳的。站在黑客的角度讲,如果能够控制内核,实际上就是控制了内核之上的各种应用程序。本文将向您介绍如何建立内核级钩子来控制操作系统向上提供的各种低级功能。有了内核级钩子,我们不但能够控制、监视其他程序并过滤有关数据,还能用其实现Rootkit本身及其它程序的隐形。本文首先回顾系统调用表和内存保护方面的知识,然后讲解如何实现内核钩子,最后对一些重要的内核函数进行了简要的说明。一、系统调用表系统调用表又称系统服务表或者服务 阅读全文
posted @ 2013-06-25 13:45 一个人的天空@ 阅读(1225) 评论(0) 推荐(0)