![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
VC++技巧
I_Have_123456
这个作者很懒,什么都没留下…
展开
-
Vs2010编译错误集
1、error C4430: missing type specifier - int assumed. Note: C++ does not support default-int在项目属性->Configration Properties->C/C++->Command Line页面的Additional Options中加入/wd44302、error MSB3073: Th原创 2013-04-28 13:32:06 · 14481 阅读 · 1 评论 -
TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR 之间的联系与区别
TCHAR, WCHAR, LPSTR, LPWSTR, LPCTSTR 之间的联系与区别 许多C++程序员在面对那些像TCHAR,LPCTSTR等奇怪的标示符时,很疑惑。这里,我将简要地介绍一些他们的来龙去脉。 一般来说,一个字符可以使1到2个字节。我们称1字节字符为ANSI,被用于英文字母的表示;称2字节字符为Unicode,可以用来表转载 2013-05-13 15:25:12 · 1197 阅读 · 0 评论 -
C++ 字符类型总结&CString ,BSTR ,LPCTSTR之间关系和区别
1.区别wchar_t,char,WCHAR ANSI:即 char,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数。 UNICODE:wchar_t是Unicode字符的数据类型,它实际定义在里: typedef unsigned short wchar_t; 另外,在头文件中有这样的定义:typedef wcha转载 2013-05-13 15:39:47 · 983 阅读 · 0 评论 -
LPCTSTR,LPWSTR, PTSTR, LPTSTR,wchar_t区别
L表示long指针,这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用,没有实际意义。即win32中,long,near,far指针与普通指针没有区别,LP与P是等效的。P表示这是一个指针。T表示_T宏,这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNIC转载 2013-05-13 15:27:17 · 3754 阅读 · 0 评论 -
reinterpret_cast
转:http://www.cnblogs.com/ider/archive/2011/07/30/cpp_cast_operator_part3.htmlreinterpret_cast运算符是用来处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位。,它通常为操作数的位模式提供较低层的重新解释。所以可以看出reinterpret_cast转载 2013-05-23 16:41:18 · 744 阅读 · 0 评论 -
CWnd和HWND的区别
CWnd与Hwnd的区别 CWnd是窗体类,而hWnd是窗体句柄,是个整型数.HWND是SDK定义的类型,是一个无确切意义的32-bit值,在调用API时用于指代窗体。 Wnd*是一个有确切意义的指针,指向一个MFC窗体类CWnd的实例。因为MFC对SDK做了封装,大部分调用都可以用CWnd*作为参数,所以很容易混淆。从一个CWnd*获取句柄的方法是pwnd->GetSaf转载 2013-05-23 15:33:15 · 715 阅读 · 0 评论 -
VC中CList用法
VC中CList用法初学mfc者,往往对CList等mfc的Collect类的使用感到迷惑,在使用中经常会遇到许多问题,导致对vc中的Collect类的使用产生了惧怕。以下,就个人经历而言,告诉大家如何使用CList。CList是一个双向链表类。1、头文件名不可少Clist类定义在Afxtempl.h 头文件中,因此在使用该类时,需要加这个头文件名。2、理解CList的声明和构原创 2013-05-23 10:55:19 · 703 阅读 · 0 评论 -
vc++ errors及解决方法
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) :error C2146: syntax error : missing ';' before identifier 'PVOID64' 这个主要是版本visual studio 和DXSDK不配套,我用visual stu转载 2011-12-21 17:28:21 · 2977 阅读 · 0 评论 -
listctrl使用技巧
1、设置表头颜色继承CHeaderCtrl类,类名为CSkinHeaderCtrl,重绘表头重载DrawItem方法,事例代码如下:ASSERT(lpDrawItemStruct-> CtlType == ODT_HEADER); HDITEM hdi; TCHAR lpBuffer[256]; hd转载 2013-05-23 15:49:57 · 897 阅读 · 0 评论 -
UnicodeToMultiByte,ConvertBSTRToString,std::string,CString的区别
1.CString->string CString str1 = "test"; std::string str2 = str1.GetBuffer(0);2.string->CString std::string str02 = "asdf"; CString str01 = str02.c_str(); 3原创 2013-05-14 10:50:36 · 1138 阅读 · 0 评论 -
错误“内存不足”解决办法
当win7切换用户时,运行后台软件出现提示对话框“内存不足”,这是由于有些数据写入了注册表的HKEY_CURRENT_USER下面,切换用户后找不到相应的键值,如果把键值写入HKEY_CLASSES_ROOT下面就可以找到了。转载 2013-06-03 14:05:28 · 1156 阅读 · 0 评论 -
#param once
关于#pragma once(转)2009-08-14 10:55 在所有的预处理指令中,#pragma指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个 编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个 编译器都是不同的。其格式一般为:#p转载 2014-06-24 14:36:57 · 6450 阅读 · 0 评论 -
使用键盘编程的一些快捷键
CTRL + SHIFT + -> 选中一行数据用alt+tab键,先按alt键不放,再按tab键换.切换任务栏WIN + D 显示桌面原创 2014-05-14 10:38:59 · 1226 阅读 · 0 评论 -
查看9000端口是否被占用
查看9000端口是否被占用进入CMD,输入netstat -ano就可以很清楚的看到本地9000口占用程序的PID,然后再去任务管理器里查找到PID所对应的进程(如果任务管理器没有PID,点击查看-->选择列,勾选PID)原创 2014-05-14 10:36:18 · 13091 阅读 · 0 评论 -
#pragma详细解释
#pragma详细解释 #Pragma是预处理指令,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#Pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #Pragma Para其中Para 为参数,下面来看一些常用的转载 2014-05-14 10:35:28 · 825 阅读 · 0 评论 -
vs2005无法设置断点
将工具->选项->调试->要求源文件和原始版本完全匹配,打勾选项去掉。原创 2014-03-11 12:50:07 · 563 阅读 · 0 评论 -
_cplusplus的使用
Code:#ifdef __cplusplusextern "C" { #endif ... #ifdef __cplusplus} #endif 解释:1c++中定义了__cplusplus,C语言中没有该定义。即:识别是c代码还是c++代码。如下段代码:#include int main(int argc,char *argv[]转载 2014-02-20 11:40:38 · 1034 阅读 · 0 评论 -
vc调出打印框
增加头文件#include 在初始化处调用AllocConsole();打印的时候调用_cprintf("%d\r\n",value);原创 2014-02-20 11:35:43 · 693 阅读 · 0 评论 -
CreateMutex和CreateEvent
HANDLE hMutex; hMutex = ::CreateMutex(NULL, FALSE, NULL); ::WaitForSingleObject(hMutex, INFINITE); // 1 ::WaitForSingleObject(hMutex, INFINITE); // 2好多初学者都认为,设置为FALSE就是没有获得获得信号。。 其转载 2014-02-25 11:03:28 · 4040 阅读 · 0 评论 -
VC系统消息总结
1、消息: WM_ACTIVATE参数: fActive = LOWORD(wParam); // activation flag fMinimized = (BOOL)HIWORD(wParam); // minimized flag hwndPrevious= (HWND)lParam; // window handlefActive 参数主要定义了该窗口发生了什原创 2013-05-17 15:40:57 · 2437 阅读 · 0 评论 -
最大化时子对话框上的控件无反应的解决办法
CRecr(int l,int t,int r,int b);MoveWindow(int x,int y,int nWidth,int nHeight,BOOL bRepaint = 1);int left,top,right,bottom,nwidth,nheight;如果直接用MoveWindow,应该这样的:pList->MoveWindow(left,top,nw原创 2013-05-22 14:37:16 · 594 阅读 · 0 评论 -
MFC中自定义类访问主对话框控件
在使用mfc的时候经常遇到自定义类访问主对话框控件的问题,例如自定义类中的方法要输出一段字符串到主对话框的EDIT控件、控制对话框的进度条等。 要在自定义的类中访问主对话框空间,须获得主对话的指针。主对话框的对象在app类的InitInstance()方法中声明。查看app类的cpp文件,在InitInstance()方法中有如下语句: CAppDlg dlg; m_p转载 2012-04-06 11:03:01 · 1374 阅读 · 0 评论 -
保存和使用其他类的句柄
保存: char windowname[256]; HWND m_hdlg_Configuration; sprintf(windowname,"%s","Configuration");SetWindowText(windowname);//设置窗口标题名CWnd* pWnd;pWnd=FindWindow(NULL,wind原创 2011-12-10 17:07:57 · 364 阅读 · 0 评论 -
消除编译警告!!!
如果有编译警告影响了编译纠错,在stdafx.h中加入 #pragma warning(disable:4101)其中4101是警告的代码但是警告是程序bug的开始,警告要注意!!!转载 2011-12-10 16:50:47 · 652 阅读 · 0 评论 -
VC++动态链接库编程之MFC扩展DLL
前文我们对非MFC DLL和MFC规则DLL进行了介绍,现在开始详细分析DLL的最后一种类型――MFC扩展DLL。6.1概论MFC扩展DLL与MFC规则DLL的相同点在于在两种DLL的内部都可以使用MFC类库,其不同点在于MFC扩展DLL与应用程序的接口可以是MFC的。MFC扩展DLL的含义在于它是MFC的扩展,其主要功能是实现从现有MFC库类中派生出可重用的类。MFC扩展DLL使用MFC转载 2011-12-21 14:46:19 · 840 阅读 · 0 评论 -
UpdateData(TRUE)和UpdateData(FALSE)的区别
UpdateData(TRUE)和UpdateData(FALSE)的区别 当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE)。1、UpdateData(true);转载 2011-11-17 09:51:56 · 403 阅读 · 0 评论 -
strcpy/strncpy/strcpy_s比较
strcpy/strncpy/strcpy_s比较分类: C++ 技术2011-01-15 16:20 1158人阅读 评论(0) 收藏 举报 strcpy()是依据源串的/0作为结束判断的,不检查copy先的Buffer的Size,如果目标空间不够,就有BufferOverflow问题。请务必使用按照strncpy_s()、strcpy_s()、strncpy()等不同环转载 2011-12-10 16:46:47 · 7009 阅读 · 1 评论 -
CString与各种格式之间的转换
您好我每次一忘就看这个~:1.string 转 CString CString.format(”%s”, string.c_str());2.char 转 CString CString.format(”%s”, char*);3.char to string string s(char *);4.string 转 char *转载 2011-11-17 09:53:42 · 850 阅读 · 0 评论 -
Visual Studio中的debug和release版本的区别
Visual Studio中的debug和release版本的区别Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。Debug 和Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /F转载 2011-11-20 20:50:47 · 832 阅读 · 0 评论 -
按行读取文件
FILE *stream; char line[255];int j=0;if((stream=fopen("a.txt","r"))!=NULL){ while(!feof(stream)){ char *ch=fgets(line,1024,stream);//读一行char chtemp = ch[0];j++;if (j == 5){原创 2011-12-10 17:01:05 · 334 阅读 · 0 评论 -
#include " "与#include <> 的区别
#include " " 应该是先在用户指定目录下查找,不一定是当前目录 #include 从系统默认搜索路径,应该算是环境变量设置的路径原创 2011-12-21 17:24:28 · 820 阅读 · 1 评论 -
error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)[转]
error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)[转]error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面) 来源:http://houjixin.blog.163.com/blog/static/356284102009112395049370/ DirectShow 2009-12-23 09:50:49 阅读311转载 2011-12-21 17:06:46 · 32189 阅读 · 5 评论 -
const char to LPCTSTR不能转化问题
const char to LPCTSTR不能转化问题 Visual C++ 2008里cannot convert parameter 1 from 'const char [13]' to 'LPCTSTR'造成不能运行的原因主要是2005和2008中增加了一些参数类型的安全性检查,所以通常在6.0没有问题的LPCTSTR与 const char之间的转换到了这里就玩不转。最痛快的办转载 2012-01-04 10:34:36 · 482 阅读 · 0 评论 -
Debug 和 Release 编译方式的本质区别
Debug 和 Release 编译方式的本质区别一 Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正秘密,转载 2012-01-16 09:33:44 · 503 阅读 · 0 评论 -
CString、TCHAR*、char*转换
CString、TCHAR*、char*转换char*、TCHAR*转换CString CString str(****) 下面详细写一下其它转换 ////////////////////////////// /* ********************************************************************转载 2012-01-16 09:40:55 · 362 阅读 · 0 评论 -
VC常用数据类型使用转换详解
VC常用数据类型使用转换详解 CString ,BSTR ,LPCTSTR之间关系和区别CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指针。CString 是一个完全独立的类,动态的TCHAR数组,封装了 + 等操作符和字符串操作方法。typedef OL转载 2012-01-16 09:40:14 · 348 阅读 · 0 评论 -
dumpbin.exe
解决VS2010自带的C/C++编译器CL找不到mspdb100.dll的问题电脑上装了VS2010,在Microsoft Visual Studio 10.0\VC\bin中找到cl.exe文件。于是,在命令行中进入这个目录,运行cl,却出现错误提示:cl.exe - System Error---------------------------The p转载 2012-01-13 10:48:40 · 575 阅读 · 0 评论 -
MFC中CALLBACK函数 和WINAPI函数的区别
凡是由你设计却由windows系统呼叫的函数,统称为callback函数。某些API函数要求以callback作为你参数之一。如SetTimer,LineDDA,EnumObjects。 回调函数是由开发者按照一定的原形进行定义的函数(每个回调函数都必须遵循这个原则来设计) 例如: ----------------------------------------转载 2011-12-28 10:40:35 · 9056 阅读 · 0 评论 -
MTD和MDd导致的问题
MTD指的是使用的运行时库为静态库LIBCRTD.LIB,MDD则使用动态库MSVCRTD.DLL运行时库作为链接版本; 静态库LIBCRTD.LIB在引用它的工程里自定义了该静态库需要创建的全局变量;动态库MSVCRTD.DLL已经在DLL模块内部定义了全局变量; 对MALLOC和FREE函数的调用问题: 工程A(EXE或LIB或DLL)使用MTD, A引用模块B.转载 2011-12-27 17:37:14 · 1009 阅读 · 0 评论 -
vc++ warnings及其解决方法
1、warning C4129: 's' : unrecognized character escape sequence 是转义字符,应该是文件路径里面的"\",全都需要换成"\\"才能正常用的。2、warning LNK4204: “…\Debug\vc80.pdb”缺少引用模块的调试信息 如果生成的是 debug 模式的可执行文件但链接的却是 release 库,或者原创 2011-12-23 16:04:51 · 4802 阅读 · 0 评论