C/C++
文章平均质量分 75
桂林哈秋
欢迎多提意见!
展开
-
[C++]用throw跳转控制流程 玩得飞起
源地址:https://twitter.com/HenryKSloan/status/1464652050260758533#include <iostream>int main(){ constexpr struct break_loop1_t {} break_loop1; try { for (int i = 0; i < 10; i++) { constexpr struct break_loop2_t {}原创 2021-12-02 03:22:56 · 479 阅读 · 0 评论 -
CreateCompatibleDC CreateCompatibleBitmap SelectObject详解
文章来自:http://blog.csdn.net/houzh/archive/2008/03/08/2158548.aspx物理HDC 设备底层会拥有显存等资源,但是兼容DC并没有给图像像素提供内存空间,因此兼容DC总是和BITMAP配合使用,这样一来,兼容DC就利用BITMAP的图像像素数据空间给自己提供类似于显存的内存空间.这样有很多好处,以来我们可以在加载图片后,在图片上利用DC的转载 2009-07-23 16:23:00 · 1408 阅读 · 0 评论 -
Multiple Folder Icons
原文:http://www.codeproject.com/useritems/MFI.aspIntroductionThere are two ways to change a folder icon in Windows: Change the icon for a specific folder (right click an choose "Customize转载 2007-05-07 17:46:00 · 676 阅读 · 0 评论 -
vc中常用的几个数据转换方法-int char* float与CString 之间的转换
原文:http://www.busfly.cn/post/96.htmlVC中常用的几个数据转换方法-int char* float与CString 之间的转换1、int CString1) int ->CStringint n = 1;CString str;str.Format("%d",n);2) CString->int CString str = "1";转载 2007-10-11 11:35:00 · 1270 阅读 · 0 评论 -
Visual C 开发工具与调试技巧整理
原文:http://gamedev.csdn.net/page/f530fc44-61e2-414e-ba45-fd869442855d1.如何在Release状态下进行调试Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disable(Debug),Debut in转载 2007-12-06 23:27:00 · 804 阅读 · 0 评论 -
直接调用类成员函数地址
原文:http://www.vckbase.com/document/viewdoc/?id=1818一、成员函数指针的用法 在C++中,成员函数的指针是个比较特殊的东西。对普通的函数指针来说,可以视为一个地址,在需要的时候可以任意转换并直接调用。但对成员函数来说,常规类型转换是通不过编译的,调用的时候也必须采用特殊的语法。C++专门为成员指针准备了三个运算符: "::*"用于指针的声明转载 2008-03-24 12:15:00 · 1408 阅读 · 0 评论 -
谈C++中的端口复用后门的编写
原文:http://hi.baidu.com/biweilun/blog/item/8c13b5197fb9514143a9adad.html端口复用后门很多人认为挺有难度的,要强行将Windows正在使用的开放端口占掉,然后插入我们的后门,一般人都以为必须在ring0下面进行,其实完全没有必要,下面给出一段我研究的代码,去除了几行关键的代码,防止居心不良的人直接拿去编译。加上了注释,将就着看转载 2008-03-29 09:47:00 · 1926 阅读 · 0 评论 -
让所有"暴力删除工具"无语的代码
原文:http://hi.baidu.com/mj0011/blog/item/703ee2de0076745095ee370a.html 挑战一下,看谁的工具能删除它?用下面代码创建:PVOID buf = malloc(200000);WCHAR path [MAX_PATH] ; ZeroMemory(buf , 200000);GetSystemDirectoryW(pat转载 2008-04-06 22:59:00 · 883 阅读 · 0 评论 -
支持UNICODE/UTF8/ANSI之间的转换的类
原文:http://www.ccrun.com/article.asp?i=1023&d=cbj0f7ZUtf8_16.h文件://---------------------------------------------------------------------------#ifndef ZUtf8_16H#define ZUtf8_16H//---------------------转载 2007-07-23 10:05:00 · 1329 阅读 · 0 评论 -
支持在2000和2003下完美进行用户克隆的C源码
原文:http://www.huaidan.org/blog/article.asp?id=1036鬼仔注:在cnfjhh那里看到的,说是2003下也可以完美克隆,不过我在2003下测试了下,并没有成功,禁用后就不可使用了,以前网上流传的2003下的克隆是重启后帐户就会自动变为启用状态。有测试成功的请告知下。文章末尾有编译好的。#include #include #include #inc转载 2007-04-21 15:33:00 · 798 阅读 · 0 评论 -
探索Win32系统之窗口类(Window Classes in Win32)
探索Win32系统之窗口类(Window Classes in Win32)Kyle MarshMicrosoft Developer Network Technology GroupMSDN 摘要 本文主要介绍在本文中 简介 窗口类的风格决定了窗口转载 2007-03-06 17:09:00 · 1176 阅读 · 0 评论 -
Win32程序函数调用时堆栈变化情况分析
在经典的汇编语言教程中,函数调用时堆栈的使用都是着重讲解的问题。如今随着高级语言的越来越完善,单纯使用汇编开发的程序已经不多了。但对函数调用时堆栈动向的了解仍有助于我们明晰程序的执行流程,从而在程序编写和调试的过程中有一个清晰的思路。一.调用约定在Win32中,有关函数的调用主要有两种约定。1._stdcall 以__stdcall方式调用的函数有以下特征: • 参数由右至左转载 2007-02-28 10:24:00 · 695 阅读 · 0 评论 -
系统理解Win32andMFC
Win32 API是微软的操作系统Windows提供给开发人员的编程接口,它决定了我们开发的Windows应用程序的能力。 MFC是微软为开发人员提供的类库,在某种意义上是对Win32 API的封装。本文试图从全局角度对Win32 API和MFC进行理解──给出二者的概念模型。 本文使用UML描述概念模型。Win32 API本不是面向对象的,我用面向对象的观点去转载 2007-02-26 14:24:00 · 600 阅读 · 0 评论 -
VISUAL C++ 调试指南
会使用一个新的编译器的很重要的一步是学会如何使用源代码的调试功能。 Visual C++的调试功能是从早期的调试工具CodeBase发展而成,这个名叫CodeBase调试工具研究成为一种工业标准。C++的错误大体可以分为两类,一类是编译器和连接器可以发现的语法错误,比如拼写错误和参数设置错误;但是在没有语法错误的情况下,也可能会发生让程序无法正确运行的逻辑错误。我们把这种错误叫做BUG。V转载 2007-02-26 14:20:00 · 939 阅读 · 0 评论 -
转贴:内存泄漏检查
介绍简单说明了一下没有工具的情况如何运用VC库中的工具来检查代码的内存泄漏问题正文内存泄漏检测一: 内存泄漏内 存泄漏是编程中常常见到的一个问题. 内存泄漏往往会一种奇怪的方式来表现出来,基本上每个程序都表现出不同的方式. 但是一般最后的结果只有两个,一个 是程序当掉.一个是系统内存不足. 还有一种就是比较介于中间的结果程序不会当,但是系统的反映时间明显降低,需要定时的Reboot才会正常转载 2007-02-23 00:08:00 · 1279 阅读 · 0 评论 -
用内嵌汇编来解决运行时参数不确定的函数的调用问题
问题的描述:1.有一个test.dll库,其中有一些函数,但是我们并不知道其中的函数名和参数表;2.当我们的程序在运行时会得到需要调用的函数名和其参数表,我们用这些信息来调用test.dll中相应的函数。比如在运行时获得了调用 int Add(int i,intj)函数的命令,我们需要首先装载dll文件,然后查找相应的函数是否存在,如果存在则获得函数的入口地址并希望通过函数指针调用该函数。问题产生转载 2007-02-28 10:25:00 · 781 阅读 · 0 评论 -
Windows 关机消息的截获
摘要用户的一个误操作往往会引起Windows系统的退出,正运行中的程序的数据也因此丢失,为了提高我们程序的健壮性,下面我们来说说 Windows 关机消息的截获原理 在Windows关机或注销的时候会给每个进程传送一个WM_QUERYENDSESSION消息,如果中间有的进程不能顺利的结束,这时该信息执行的结果将返回FALSE,这时Windows将不再继续向后面的进程发送WM_QUERYE转载 2007-02-26 13:50:00 · 2421 阅读 · 1 评论 -
献给汇编初学者-函数调用堆栈变化分析
标 题: 献给汇编初学者-函数调用堆栈变化分析作 者: 堕落天才时 间: 2007-01-19,19:20链 接: http://bbs.pediy.com/showthread.php?threadid=38234跟一个朋友谈堆栈的时候 就写下了这段文字,顺便发到这里给需要的看看吧汇编初学者比较头痛的一个问题////////////////////////////////////////////转载 2007-02-28 10:38:00 · 742 阅读 · 0 评论 -
UTF-8与GB2312之间的互换
原文:http://www.xwind.cn/blogview.asp?logID=390相信一定有不少的程序开发人员时常会遇到字符编码的问题,而这个问题也是非常让人头痛的。因为这些都是潜在的错误,要找出这些错误也得要有这方面的开发经验才行。特别是在处理xml文档时 ,该问题的出现就更加的频繁了,有一次用java写服务器端程序,用vc写客户端与之交互。交互的协议都是用xml写的。结果在通讯时老转载 2008-08-05 21:05:00 · 711 阅读 · 0 评论 -
预编译头文件
原文:http://vcer.net/1047209431368.html如果工程很大,头文件很多,而有几个头文件又是经常要用的,那么 1。把这些头文件全部写到一个头文件里面去,比如写到preh.h 2。写一个preh.c,里面只一句话:#include "preh.h" 3。对于preh.c,在project setting里面设置creat precompiled he转载 2008-06-05 15:03:00 · 444 阅读 · 0 评论 -
VC6.0中如何让new操作失败后抛出异常?
原文:http://dev.yesky.com/370/2149370.shtml标准C++规定new一个对象时如果分配内存失败就应抛出一个std::bad_alloc异常,如果不希望抛出异常而仅仅传回一个NULL指针,可以用new的无异常版本:new(nothrow)。 VC6.0在头文件中声明了这两种operator new操作符:void *__cdecl opera转载 2008-10-24 14:57:00 · 616 阅读 · 0 评论 -
掀起C++ 11的神秘面纱
文章来自:http://developer.51cto.com/art/201106/270597.htm C++之父Bjame Stroustrup最近说C++11就像一个新语言,的确,C++11核心已经发生了巨大的变化,它现在支持Lambda表达式,对象类型自动推断,统一的初始化语法,委托构造函数,deleted和defaulted函数声明nullptr,以及最重要的右值引用。转载 2011-06-23 15:13:00 · 808 阅读 · 0 评论 -
如何将CString 转换为LPCSTR?
文章来自:http://topic.csdn.net/t/20060303/21/4591678.html转载 2011-04-05 23:39:00 · 1987 阅读 · 0 评论 -
关于 vs2005 添加类或者变量 出错问题的解决方案
<br />文章来自:<br /> <br />http://www.cppblog.com/jianlinzhang/archive/2009/05/26/85768.html<br /> <br />http://hi.baidu.com/sunbin728/blog/item/9fa86c1d0744e9c3a68669e6.html<br />转载 2011-01-02 13:42:00 · 863 阅读 · 0 评论 -
CreateDC与CreateCompatibleDC建立的HDC有何不同?
文章来自:http://www.programmer-club.com.tw/ShowSameTitleN/vc/14701.html HDC hdcDisp = CreateDC("DISPLAY", NULL, NULL, NULL); HDC hdc = CreateCompatibleDC(hdcDisp); HBITMAP hBitmap = CreateCompat转载 2010-04-13 22:53:00 · 4589 阅读 · 1 评论 -
#pragma data_seg用法总结
Windows在一个Win32程序的地址空间周围筑了一道墙。通常,一个程序的地址空间中的数据是私有的,对别的程序而言是不可见的。但是执行STRPROG的多个执行实体表示了STRLIB在程序的所有执行实体之间共享数据是毫无问题的。当您在一个STRPROG窗口中增加或者删除一个字符串时,这种改变将立即反映在其它的窗口中。 在全部例程之间,STRLIB共享两个变量:一个字符数组和一个整数(转载 2009-12-24 20:24:00 · 1308 阅读 · 0 评论 -
如何让DOC/VIEW框架不创建新文档
文章来自:http://www.cppblog.com/totti1006/archive/2009/04/17/36115.html在文档窗口创建的时候 ,它缺省总是会新建一个新文档 , 那么怎么让它不新建文档呢?就这个问题 , 我对文档视图窗口应用程序启动时的文档创建机制 , 稍稍的浅浅挖了一下 , 做了一个详细的分析 , 希望能够对初学者有所帮助 . 在App文件的InitIns转载 2009-10-08 12:47:00 · 523 阅读 · 0 评论 -
如何激活指定的窗口事件
文章来自:http://www.vckbase.com/bbs/prime/viewprime.asp?id=340我们知道,Windows 9x/2000中SetForegroundWindow函数当用户正在操作其他窗口时是不能强制某个窗口为前景窗口的,而是激活窗口并调用 FlashWindowEx函数来通知用户。但是很多实际情况要求将激活窗口的同时将创建这个窗口的线程置为前景状态。碰到这种转载 2009-08-31 00:11:00 · 1989 阅读 · 0 评论 -
Thunk::在类中封装回调函数
文章来自:http://hi.baidu.com/%D3%A3%C1%E8%D7%BC/blog/item/ead069dd2e2ec3335882dd02.html在类中封装回调函数有几种解决办法: 一种解决方法是用窗口列表,开一个结构数组,窗口类对象创建窗口的时候把窗口HWND和this指针放入数组,全局消息处理函数遍历数组,利用HWND找出this指针转载 2009-08-21 00:14:00 · 989 阅读 · 0 评论 -
数组的动态分配(new)、初始化(memset)和撤销(delete)
文章来自:http://hi.baidu.com/oaiei/blog/item/79edebdc71c18ea9cc1166fe.html数组的动态分配(new)、初始化(memset)和撤销(delete) 一维数组的动态分配,初始化和撤销都好说,几乎每一本C++教材都会做出详细的说明。具体如下: 动态分配(例如分配10个单元的): int *array=new int [转载 2009-08-16 16:26:00 · 2093 阅读 · 1 评论 -
VC2005中编译警告的解决办法
文章来自:http://blog.vckbase.com/hatemath/archive/2007/10/18/30058.htmlVC2005中,使用了很多标准的C函数,比如fopen,strcpy之类的。编译时会出现警告,比如这个: d:/xxxx.c(1893) : warning C4996: “strcpy”被声明为否决的 紧接着IDE有提示说:“This fu转载 2009-08-15 00:48:00 · 606 阅读 · 0 评论 -
[C++] 字符串和流
文章来自:http://onchf.spaces.live.com/blog/cns!C1747339B0D46E11!341.entry第一节、字符串操作 一、char_traits 字符特征类1)意义:包装特定串元素的通用行为界面,以便容器实现时依据特征信息而执行特定行为2)定义了通用类型名 typedef _Elem char_type;typedef int int_t转载 2009-08-16 17:23:00 · 1369 阅读 · 2 评论 -
C++字符串函数详解
文章来自:http://www.cnblogs.com/michael-zhangyu/archive/2009/06/08/1498781.htmlvoid *memset(void *dest, int c, size_t count); 将dest前面count个字符置为字符c. 返回dest的值. void *memmove(void *dest, const void *sr转载 2009-08-16 16:59:00 · 1686 阅读 · 0 评论 -
How to create/display a modal window?
http://www.codeguru.com/forum/showthread.php?t=371942http://stackoverflow.com/questions/734674/creating-a-win32-modal-window-with-createwindowhttp://msdn.microsoft.com/en-us/library/ms645452(VS.85转载 2009-08-02 16:05:00 · 494 阅读 · 0 评论 -
LPTSTR、LPCSTR、LPCTSTR、LPSTR的来源及意义
文章来自:http://blog.csdn.net/yuhuimin111/archive/2009/05/08/4161462.aspxUNICODE:它是用两个字节表示一个字符的方法。比如字符A在ASCII下面是一个字符,可A在UNICODE下面是两个字符,高字符用0填充,而且汉字程在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示转载 2009-07-30 16:41:00 · 1072 阅读 · 2 评论 -
从sprintf谈开
文章来自:http://www.cppblog.com/bidepan2023/archive/2008/07/08/55649.html一、危险指数五星的strcpy()strcpy是众所周知的最危险函数之一,它不判断目标缓冲区是否足够长,而strncpy要好一点,但它从某种意义上讲,却比strcpy还危险方:当目标缓冲区满时,它不在尾部加零,也就是说,程序员也许会以为用了个安全的函转载 2009-05-14 14:16:00 · 1168 阅读 · 0 评论 -
如何发布VC2005/VC2008编译的程序
文章来自:http://www.xuyibo.org/Article/81.htm用VC2005/VC2008编译出来的程序,如果拷贝到没有安装相应VC的机器上,很多时候会运行出错: The application failed to initialize properly (0xc0000135).This application has failed to start becaus转载 2009-07-24 08:55:00 · 1470 阅读 · 0 评论 -
MFC中,Release版出错Debug版不出错的一个最常见原因之深入剖析
也不知道网上有没有类似的文章,小弟斗胆在这里献丑一回; 最近一段时间,许多人发帖子说自己的MFC程序Release版会出错,而Debug版不会出错,记得在两年前我也曾遇到过类似的问题,但是没有进行深入研究,这两天我对这个问题作了一个深入的探讨发现了一个非常容易犯的错误,这也与VC编译器有关(不知道是微软的BUG还是怎么回事),首先我们看一个事例工程: 用VC新建一个转载 2007-02-26 13:56:00 · 1516 阅读 · 0 评论 -
VC调试入门
概述调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。 设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个从AppWizard创建转载 2007-02-26 13:34:00 · 539 阅读 · 0 评论 -
MFC的子类化技术
Windows是一个基于消息的系统,消息在Windows的对象之间进行着传递。子类化和Windows的钩子机制存在于消息系统之中,我们可以利用这些机制来操纵、修改甚至丢弃那些在操作系统或是进程中传递的消息,以求改变系统的一些行为。子类化技术用来截取窗口或控件之间的消息,当然是消息在到达目的窗口之前完成的操作。这些被截获的消息既可以保留也可以修改它们的状态,之后就继续发送到目的地。子类化技术实现了一转载 2007-02-13 16:04:00 · 739 阅读 · 0 评论