VC++
文章平均质量分 76
Gordennizaicunzai
这个作者很懒,什么都没留下…
展开
-
VC6在win10运行时出现无法单步调试问题的解决办法
VC6绝对是老古董了,但是它的风格界面和操作便利性,是后来的更高版本所不能替代的,尤其是做一些小程序调试的时候,它还是拥有绝对优势。个人觉得用Ctrl+W进行消息映射和添加变量控件的方法,比后续版本显得更方便得多。闲话少说,言归正传!但是在win10环境下运行VC6,无法按F10、F11进行单步调试,会出现:Unhandled exception in ***.exe(OLE32....转载 2019-12-22 11:06:36 · 911 阅读 · 0 评论 -
GetPrivateProfileSection
GetPrivateProfileSectionThe GetPrivateProfileSection function retrieves all of the keys and values for the specified section from an initialization file. This function is provided for compatibility原创 2018-02-04 21:56:21 · 2847 阅读 · 0 评论 -
GetPrivateProfileString
GetPrivateProfileStringThe GetPrivateProfileString function retrieves a string from the specified section in an initialization file. This function is provided for compatibility with 16-bit Windows-b原创 2018-02-08 21:45:24 · 1214 阅读 · 0 评论 -
AfxBeginThread
AfxBeginThreadVisual Studio 2015其他版本 调用此函数以创建新线程。语法 CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc,转载 2017-12-27 00:39:54 · 602 阅读 · 0 评论 -
error LNK2001
在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainLIBCD.lib(wincrt0.obj) : error LNK2001转载 2017-12-27 00:37:21 · 291 阅读 · 0 评论 -
CCriticalSection与CSingleLock
CCriticalSectionAn object of class CCriticalSection represents a “critical section” — a synchronization object that allows one thread at a time to access a resource or section of code. Critical se原创 2017-12-26 22:36:35 · 1798 阅读 · 0 评论 -
VC++6.0多项目联调断点设置方法
VC++6.0支持在一个Workspce里面打开、联调多个project,本人试过5个项目(dll)进行联调,每个工程下面都可以设置断点,但是需要正确的使用配置方法,正确的断点设置方法如下: 1、 Link选项卡设置。 General下勾选Generate debug info、Link incrementally、Generate mapfile,其它不用选。原创 2017-11-27 22:49:27 · 1224 阅读 · 0 评论 -
LPSTR、LPCSTR、LPTSTR和LPCTSTR,LPVOID的意义及区别
ANSI(即MBCS):为多字节字符集,它是不定长表示世界文字的编码方式。ANSI表示英文字母时就和ASCII一样,但表示其他文字时就需要用多字节。2、Unicode:用两个字节表示一个字符的编码方式。比如字符'A'在ASCII下面用一个字节表示,而在Unicode下面用两个字节表示,其中高字节用“0”填充;函数'程'在ASCII下面用两个字节表示,而在Unicod转载 2017-11-27 21:48:31 · 1105 阅读 · 0 评论 -
VC6.0 cannot find the definition (implementation) of this function解决方法
点击VC6.0左侧工作区ClassView窗口中的类中的函数时,出现cannot find the definition (implementation) of this function弹框提示,解决方法是:关闭工程,然后删除工程目录下面的*.opt *.ncb *.plg文件,再打开工程,最后重新编译即可,之前删除的文件会自动再生成。原创 2017-11-22 21:22:20 · 4345 阅读 · 0 评论 -
VC6.0修改工程名字方法
原因就不说了,还用VC的人是幸福的。1、建议备份原来的工程,呵呵。2、删除OLD.ncb、OLD.opt、OLD.APS、OLD.plg、OLD.clw这五个文件,别担心,会自动生成。3、用记事本打开OLD.dsp,将里面的OLD替换成NEW,保存退出,修改文件名OLD.dsp为NEW.dsp。4、用同样的方法修改OLD.rc、OLD.rc2(在res文件夹里面)。4、用记事本原创 2017-11-19 20:19:56 · 1966 阅读 · 1 评论 -
__stdcall,_stdcall,__cdecl,_cdecl,__fastcall,_fastcall区别简介
1. 今天写线程函数时,发现msdn中对ThreadProc的定义有要求:DWORD WINAPI ThreadProc(LPVOID lpParameter); 不解为什么要用WINAPI宏定义,查了后发现下面的定义。于是乎需要区别__stdcall和__cdecl两者的区别; #define CALLBACK __stdcall #define WINAPI __stdca转载 2017-09-17 20:56:36 · 487 阅读 · 0 评论 -
C/C++内存管理详解
内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C转载 2017-08-13 21:49:37 · 314 阅读 · 0 评论 -
MessageBox、AfxMessageBox、::MessageBox三者功能和区别小结
1、CWnd::MessageBox int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK ); Return Value Specifies the outcome of the function. It is 0 if there is not enough memory to cr原创 2015-08-30 17:43:09 · 1436 阅读 · 0 评论 -
CFile
MFC提供了CFile类方便文件的读写,首先要知道,文件的数据读取、数据写入与文件指针的操作都是以字节为单位的,数据的读取和写入都是从文件指针的位置开始的,当打开一个文件的时候,文件指针总是在文件的开头。常规方法如下:CFile file;file.open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError转载 2016-09-24 18:03:54 · 6513 阅读 · 0 评论 -
VC常用数据类型与转换
一.VC常用数据类型列表 TypeDefault SizeDescription 基础类型 全是小写 说明:这些基础数据类型对于MFC还是API都是被支持的booleanunsigned 8 bit ,取值转载 2016-10-16 23:48:02 · 1175 阅读 · 0 评论 -
GetPrivateProfileSectionNames
GetPrivateProfileSectionNamesThe GetPrivateProfileSectionNames function retrieves the names of all sections in an initialization file. This function is provided for compatibility with 16-bit Windows原创 2018-02-05 21:08:31 · 3789 阅读 · 0 评论 -
VC++ GetModuleFileName、_splitpath和_makepath用法
GetModuleFileNameThe GetModuleFileName function retrieves the full path and filename for the executable file containing the specified module.返回当前进程已加载可执行或DLL文件的完整路径名(以'\0'终止),是windows的API函数,使用的时候需要包原创 2018-03-06 21:48:13 · 1089 阅读 · 0 评论 -
sizeof()、size()、strlen()总结
1、sizeof 与strlen的区别 (1)sizeof是运算符,strlen是函数 (2)sizeof操作符的结果类型是size_t(unsigned int),在头文件中的定义为 typedef unsigned int size_t; (3)sizeof可以用类型、函数做参数,strlen只能用char* 做参数,而且必须以’\0’结尾的。 (4)大部分编译程序在编译时就把转载 2018-03-05 20:40:11 · 451 阅读 · 1 评论 -
OD调试4----去除NAG窗口的几种方法
本实验所用程序如下,一个主窗口,两个nag窗口。nag本意为烦人唠叨的意思。在这里指的是不断弹出来窗口,例如注册窗口。这里第一个和第三个为烦人的nag窗口,这里我们要将它去除。接下来就介绍四种方法,为了简单就以第一个窗口为例。加载程序,(F8)运行。到达一个je跳转,下面包含着是第一个对话框的内容。再来看下运行信息提示:分析下,这是一个je跳转。但跳转没有实现,所以就会...转载 2019-06-23 23:58:56 · 866 阅读 · 0 评论 -
OD调试3--获取使用执照
本文所用实验程序如下:这次实验用的很多是关于跳转的。这里给大家分享张图片,是在OD 调试中各种跳转指令。接下里,我们首先分析下这个程序,总体浏览程序,我们可以发现三个对话框,123 分析:请注意标记或者圈起来的地方,MessageBoxA,我们学过MFC的都知道这是一个对话框函数,当程序运行到这里,对话框就会弹出来,上面的信息也会显示在框中。我们...转载 2019-06-23 23:57:56 · 172 阅读 · 0 评论 -
OD调试初步概念——修改窗口标题
调试逆向分为动态分析技术和静态分析技术。动态分析技术指的是使用调试工具加载程序并运行,随着程序运行,调试者可以随时中断目标的指令流程,以便观察相关计算的结果和当前的设备情况。静态分析技术是相对于动态分析而言的。由于在实际分析中,很多场合不方便运行目标(例如病毒程序,设备不兼容,软件的单独某一模块)。那么这个时候静态分析技术就该上场了。OD(OllyDbg)和IDA Pro这两款工...转载 2019-06-23 23:47:37 · 1077 阅读 · 0 评论 -
VC 程序崩溃异常处理集锦
1 Run-Time Check Failure: being used without being defined场景将一个未曾初始化的结构体作为参数传递给一个函数,在运行时出现如上的错误,尽管没有在函数中使用,但是依然需要进行结构体的初始化,重申初始化的重要性2 Run-Time Check Failure Stack around the variable'xxx'...转载 2019-06-23 23:30:55 · 1355 阅读 · 0 评论 -
error LNK2001: unresolved external symbol xxx
VC++6.0如果需要添加外部的c、cpp、h文件,直接将c、cpp、h文件拷贝到工程目录下,然后#include,是不行的,编译时会出现error LNK2001错误。这是因为这些文件不是通过VC IDE自己创建的,工程文件(dsp)里没有这些文件的配置信息。解决办法是在dsp文件里面添加配置信息。# Begin Source FileSOURCE=.\xxx.c# End Sour...原创 2019-01-02 23:40:34 · 2827 阅读 · 0 评论 -
VC++标准化路径PathCanonicalize
外部输入的参数不能直接作为文件路径,防止被恶意攻击,比如构造一个跨目录限制的文件路径../../../etc/passwd或../../boot.ini,或构造一个指向系统关键文件的链接文件symlink("/etc/shadow","tmp/log")。PS "./"表示当前目录,可以不写,"../"表示当前目录的上一级目录,即当前目录的父目录。windows可以用PathCanonicaliz...原创 2018-12-31 22:35:16 · 4701 阅读 · 0 评论 -
CStringArray实现循环数组设计的FIFO
简要设计思路是:首先CStringArray中先设置数组大小(SetSize),相当于申请了一个普通数组,作为存储Item的容器,然后设计一个FIFO Queue,用来当作CStringArray的index获取数组的Item,同时通过比较Queue和Array的大小将Queue的头和尾适当调整指向,实现循环数组存取。#include "afxcoll.h"class FifoCStri...原创 2018-12-24 00:53:39 · 306 阅读 · 0 评论 -
VC++多线程多个参数传递
VC++多线程多个参数传递时,根据LPVOID可以传任意参数地址,所以多参数传递可以将参数变为类、数组、结构体,然后把这些数据类型的地址传递进去。因为传的是地址,所以实现线程函数里、外参数可持续互换。typedef struct _S_Test{ int iNum; char caWords[50]; CString csItem;}S_Test;DWORD WINAPI Th...原创 2018-12-27 23:54:35 · 1311 阅读 · 0 评论 -
VC++多线程单个参数传递
// MultipleThreadParam.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <stdio.h>#include <afx.h>DWORD WINAPI ThreadFun1(LPVOID lpParam){ p...原创 2018-12-27 22:52:35 · 372 阅读 · 0 评论 -
解决VS(Visual Studio)2017安全函数问题(C语言安全函数)
在 VS(Visual Studio)2017下编译C语言程序,如果使用了 scanf()、gets()、strcpy()、strcat() 等与字符串读取或操作有关的函数,有时候VS会报错,提示该函数可能不安全,并且建议替换为带有_s后缀的安全函数,如下图所示: 什么是安全函数(safe function)scanf()、gets()、fgets()、strcpy()、strcat()...转载 2018-12-09 23:14:27 · 962 阅读 · 0 评论 -
secureZeroMemory、ZeroMerory、memset和"={0}"的区别
使用C/C++编程时,常使用ZeroMemory、memset或 “={0}”来对结构体对象进行初始化或清零。然而这三种方式都有各自的特点,使用时需谨慎,否则容易出现严重错误,本人今日解决一个导致宕机的bug,查了几小时,才发现是由同事乱用ZeroMemory所致。于是搜集资料,撰此文以共勉。1、memsetmemset不只限于windows平台,可跨平台使用。void *memset(...转载 2018-12-02 23:15:55 · 1550 阅读 · 0 评论 -
分享一个隐式链接加载任意目录中的DLL方法
因为Windows中,隐式链接的DLL,加载方式由系统控制,DLL只能放在固定的目录中,才能被exe加载。最近做的一个项目中,由于有近100个不同功能的DLL,如果统一存放在exe目录下,不便于管理。 以下分享如何使Windows按照自己的方式加载DLL。直接上代码:CDLoader.h代码#include <vector>//CDLoader.h#pragm...转载 2018-10-03 21:53:41 · 471 阅读 · 0 评论 -
CString与char*、char[]、LPSTR、LPCTSTR、LPCWSTR等的转换
ATL宏介绍: A2BSTR OLE2A T2A W2A A2COLE OLE2BSTR T2BSTR W2BSTR A2CT OLE2CA T2CA W2CA A2CW OLE2CT T2COLE W2COLE A2OLE OLE2CW ...原创 2018-07-08 21:23:31 · 683 阅读 · 0 评论 -
CString.GetBuffer()和两种输出方法
CString::GetBufferLPTSTR GetBuffer( int nMinBufLength );throw( CMemoryException );Return ValueAn LPTSTR pointer to the object’s (null-terminated) character buffer.ParametersnMinBufLength原创 2018-04-30 14:23:42 · 1623 阅读 · 0 评论 -
CStdioFile Class
CStdioFile : CFile : CObjectA CStdioFile object represents a C run-time stream file as opened by the run-time functionfopen. Stream files are buffered and can be opened in either text mode (the de原创 2015-12-06 23:37:08 · 865 阅读 · 0 评论 -
MFC中的文件读写操作
计算机室如何管理自身所存放着的大量的信息的呢?windows的磁盘管理程序为我们提供了一套严密而又高效的信息组织形式--硬盘上的信息是以文件的形式被管理的。面向存储的文件技术什么是文件?计算机中,一篇文章、一幅图片、一个程序等都是以文件的形式存储在磁盘上的,每个文件都有一个文件名。计算机就是对文件按名存取的。文件名的格式如下:主文件名.扩展名。为什么要在程序中使用文件?转载 2015-12-14 20:58:41 · 7486 阅读 · 0 评论 -
CArray Class
CArray Class Members#include <afxtempl.h>template< classTYPE, classARG_TYPE> class CArray : public CObject第一个参数为数组元素的类型,如CArray<int,int>caiNum;即caiNum是int数组;如果是构造数据类型如一个结构体、类,并且当这个数据类型存在指针,需要深拷贝的话,那么CArray将会无法工作。所以,我们必须要为这个构造数据类型,提供一个赋值构造函数。第二个参数为引用类型原创 2016-07-31 23:28:57 · 1063 阅读 · 0 评论 -
VC6.0类消失原因及解决办法
在菜单栏上点文件,点打开,然后找到刚才消失的那个类的头文件,然后再头文件里随便打点东西,关闭头文件之后提示是否保存——点否,然后那个消失的类就出来了。 ////////////////////////////// 有时候在VC++6.0中编程会出现这样一个问题,由于对C...View类的操作后,在窗口左边ClassView框中的C...View类会消失,这 种操作通转载 2015-12-12 23:02:07 · 1779 阅读 · 0 评论 -
MFC背景颜色
1、从InitInstance设置应用程序默认背景和对话框颜色。CWinApp::SetDialogBkColorThis method is called from within the InitInstance method to set the default background and text color for dialog boxes and message box原创 2015-12-12 16:29:06 · 1321 阅读 · 0 评论 -
CPtrList Class
CPtrList : CObjectThe CPtrList class supports lists of void pointers. The member functions of CPtrList are similar to the member functions of classCObList. Because of this similarity, you can原创 2015-12-10 22:07:56 · 596 阅读 · 0 评论 -
CWnd::WindowProc
CWnd::WindowProc是cwnd类的一个虚函数,功能就是处理窗口的消息。 virtual LRESULT WindowProc( UINT message, WPARAMwParam, LPARAM lParam );Return ValueThe return value depends on the message.ParametersmessageSpe原创 2015-10-31 23:49:38 · 1418 阅读 · 0 评论 -
浅析C++中单链表的增、删、改、减
以下是对C++中单链表的增、删、改、减进行了详细的介绍,需要的朋友可以过来参考下首先是是一个简单的例子,单链表的建立和输出。程序1.1复制代码 代码如下:#include#includeusing namespace std;struct Student{ string name; string score; Student *next;//定义转载 2015-12-09 23:33:37 · 720 阅读 · 0 评论