C++
bmjhappy
这个作者很懒,什么都没留下…
展开
-
VS下如何调试程序
https://blog.csdn.net/qq_35637562/article/details/79369034程序崩溃的原因分类函数栈溢出 一个变量未初化、未赋值,就读取它的值。 ( 这属于逻辑问题,往往是粗心大意的导致的 ) 函数栈溢出 (1)定义了一个体积太大的局部变量 (2)函数嵌套调用,层次过深(如无穷递归) 数组越界访问 访问数组元素时,下标越界 指针的目标对象不可用 (1)空指针 (2)野指针 指针未赋值 free/delete释放了...原创 2020-10-22 17:03:53 · 1424 阅读 · 0 评论 -
深入了解Debug和Release的区别
原文地址:https://blog.csdn.net/sky___ice/article/details/8993885一:Bin 目录用来存放编译的结果,bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。 obj是object的缩写,用于存放编译过程中生成的中间临时...原创 2020-10-22 16:46:33 · 6547 阅读 · 1 评论 -
VC++内存泄漏的检测与定位
VC++内存泄漏的检测与定位转发原文地址:http://blog.sina.com.cn/s/blog_45eaa01a0102uy4i.html本文大部分内容来自网络,只是做了适当的修改和补充,以便更贴近实际应用。一 对于MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:class CMyApp : public CWinApp{public:BOOL InitApplication(){int* leak = new...原创 2020-08-26 16:44:01 · 468 阅读 · 0 评论 -
C++ map用法总结(整理)
1,map简介map是STL的一个关联容器,它提供一对一的hash。第一个可以称为关键字(key),每个关键字只能在map中出现一次; 第二个可能称为该关键字的值(value);map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map主要用于资料一对一映射(one-to-one)的情況,map內部的实现自建一颗红黑树,这颗树具有对数据自动排序的功能。在map内部所有的数据都是有序的,后边我们会见识到有序的好处。比如一个班级中,每个学生的学号跟他的姓名就存在著一对原创 2020-08-20 13:43:07 · 961 阅读 · 0 评论 -
MFC 使用计时器
转载:http://blog.sina.com.cn/s/blog_7656589b0101g30h.html最简单的开始写,毫秒级时钟。用CWnd::SetTimer设置定时器,然后在窗口上添加WM_TIMER事件,接下来实现OnTimer响应函数就可以了...SetTimer(1,1,NULL); // 第一个是定时器标号,第二个是每隔多长时间运行一次,单位毫秒,第三个本来是定时器处理函数的,这里用NULL的意思是直接使用OnTimer响应函数...void OnTimer( UIN原创 2020-06-22 10:09:42 · 3375 阅读 · 0 评论 -
配置信息写入到.ini文件中的方法
在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入.具体应用如下: 一.将信息写入.INI文件中 1.所用的WINAPI函数原型为: BOOL WritePrivateProfileString( LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName ); 其中各参数的意义 LPCT原创 2020-06-18 15:55:01 · 601 阅读 · 0 评论 -
Cstring中的 Find()、Mid()、Replace() 用法
1、CString::Find在一个较大的字符串中查找字符或子字符串 ,返回此CString对象中与需要的子字符串或字符匹配的第一个字符的从零开始的索引;如果没有找到子字符串或字符则返回-1。int Find( TCHAR ch ) const; int Find( LPCTSTR lpszSub ) const; int Find( TCHAR ch, int nStart ) const; int Find( LPCTSTR pstr, int nStart ) ...原创 2020-05-21 16:35:05 · 9878 阅读 · 0 评论 -
vs工程中哪些文件可以删除
VS使用中,在压缩源代码的时候,会发现工程目录几百M,里面有很多的垃圾文件,可以自己写bat.del *.ncb /f /sdel *.plg /f /sdel *.pch /f /sdel *.idb /f /sdel *.ilk /f /sdel *.pdb /f /sdel *.obj /f /sdel *.exp /f /sdel *.aps /f /sdel *.o...原创 2020-04-27 15:49:42 · 5563 阅读 · 0 评论 -
C++字节转换 (byte转int 互转)(BCD和HEX转换)
2个字节short int 高低位转化:short int y=0x7f21;y = ( (y & 0xff00) >> 8) | ( (y & 0x00ff ) << 8);printf("%#x",y);用short型变量储存,用移位操作和或操作拼接。例:short a = dt_data[1];a <<= 8;a |= d...原创 2020-01-16 14:42:13 · 4472 阅读 · 0 评论 -
编码格式转换
容器复制pApp->m_listdata.assign(m_VecXmlnodes.begin(), m_VecXmlnodes.end()); /*vector<CMainApp::XmlElement >::iterator it; for(it = m_VecXmlnodes.begin();it != m_VecXmlnodes.end();++it) { ...原创 2020-01-16 14:32:15 · 285 阅读 · 0 评论 -
Visual Studio查找中文的正则表达式
经常有这样的需求:项目代码中有一些输出信息是中文写的,不过现在要做国际化,代码""中写的中文都要改成英文。这样就需要将代码中包含中文的字符串都找出来。也就是如同 "写到引号中的中文,Yes,is here"。用什么办法能迅速找出这些包含中文的句子呢?有这样一个正则表达式,很好用。(".*[\u4E00-\u9FA5]+)|([\u4E00-\u9FA5]+.*") ...原创 2019-12-12 09:39:15 · 886 阅读 · 0 评论 -
C++: byte和int的相互转化和LOBYTE+HIBYTE的应用
byte不是一种新类型,在C++中byte被定义的是unsigned char类型;但在C#里面byte被定义的是unsigned int类型//int转bytevoid intToByte(int i,byte *bytes,int size = 4){//byte[] bytes = new byte[4];memset(bytes,0,sizeof(byt...原创 2019-11-05 09:18:15 · 2062 阅读 · 0 评论 -
listctrl 重绘
common control 4.7版本介绍了一个新的特性叫做Custom Draw,这个名字显得模糊不清,让人有点摸不着头脑,而且MSDN里也只给出了一些如风的解释和例子,没有谁告诉你你想知道的,和究竟这个特性有什么好处。Custom draw可以被想象成一个轻量级的,容易使用的重绘方法(重绘方法还有几种,例如Owner Draw等)。这种容易来自于我们只需要处理一个消息(NM_...转载 2018-09-23 10:19:02 · 676 阅读 · 0 评论 -
VS复制代码到word的时候遇到:中文注释之间会有乱码
/*网上搜了搜,找到了三种解决办法。在此陈列一下:1:如果是word2007以上版本,可以在右键选择粘贴方式的时候,选择“只保留文本”。2. 那就是先复制到记事本里,然后再从记事本里复制粘贴到word。3. 每次想复制带有汉字的代码时,复制后,点击Begin,出现Take Out Pessy Code successful 后在黏贴到word中,就不会出现乱码了。 ...转载 2019-02-12 17:12:09 · 3638 阅读 · 0 评论 -
获取combobox文本框的值,并判断其内容是否符合格式
//MFC 获取combobox文本框的值,并判断其内容是否符合格式为**:** 如:30:2"//m_cPressBlow为combobox的绑定控件值//此函数实现获取combobox文本框的值,并判断其内容是否符合格式为**:** 如:30:2"BOOL AnalyzePressBlow( ){ CString sLfet,sRight; CString strChoo...原创 2019-02-12 15:08:50 · 2775 阅读 · 0 评论 -
VC++常见错误原因解析--error LNK2019: 无法解析的外部符号 "public: void __thiscall
出现这个错误,应该首先查看“#include”语句是否包含,或者是否包含正确。符号无法解析意味着编译器知道有这个符号存在,也就是有声明,但在链接时,找不到实现代码,那么就去看看报错的这个函数有没有实现代码。如果它们的确已经有了,还是出现这个错误,就把它们重新编译一下。根据个人遇到这个错误时的记录,原因可以分为一下几种:原因一:只是在.h里面声明了某个方法,没有在cpp里面实现。具体讲,有...转载 2019-01-18 11:21:13 · 1372 阅读 · 0 评论 -
C++多个相互关联的类的声明方法
(一)、假如两个类class A和class B,A聚合(组合)B,B又依赖A,那么该怎么来实现呢?那么可行的方案:将类A的声明放在A.h,并在类A前加上一句class B;(类的一种声明方法),这样就能在类A中定义类B的指针或引用(但不能实例化和使用类B的成员及方法),类B的声明放在B.h,并在类B前加上一句class A;,这样就能在类B中定义类A的指针或引用;具体定义分别放到A.CP...转载 2019-01-04 10:21:16 · 1075 阅读 · 0 评论 -
番茄助手VA_X的安装
安装之前先关闭VS。1。点击setup,进行安装2.。提示安装成功后,搜索VA_X.dll文件(建议用everthing软件来搜索)3.找到一个比较长的系统盘下的路径:如C:\Users\PC\AppData\Local\Microsoft\VisualStudio\10.0\Extensions\Whole Tomato Software\Visual Assist\10.9.2048.0...原创 2018-12-10 17:21:35 · 1587 阅读 · 0 评论 -
listctrl删除多行
1.响应WM_KEYDOWN事件。2.删除一行,item的序号自动调整了。void CDlg::OnKeydownListFile(NMHDR* pNMHDR, LRESULT* pResult) { LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR; // TODO: Add your control notifica...转载 2018-09-23 13:23:27 · 890 阅读 · 0 评论 -
vs2010打开需要安装 service pack1
vs2010安装成功后不能运行,如下图 缺少service pack1微软官方的连接已经没了。。“去网络找资源一定要下载1.4g的那个 才能完成安装 不然其他的都是补丁。。”表示未找到!其后找到VS10SP1-KB2736182.exe是可以在线下载并成功安装。下载链接附上:https://download.csdn.net/download/bmjhappy/1084...原创 2018-12-10 17:10:30 · 8354 阅读 · 0 评论 -
Visual Studio当前不会命中断点,还没有为该文档加载任何符号解决方法
1. 设置调试信息格式为:用于“编辑并继续”的程序数据库(/ZI)操作: 项目->属性->配置属性->C/C++ ->常规 ->调试信息格式2. 设置生成调试信息为:是(/DEBUG)操作: 项目->属性->配置属性->链接器->调试->生成调试信息3. 设置优化为:已禁用(/Od)操作: 项目->属性->...原创 2018-10-25 16:59:43 · 1611 阅读 · 0 评论 -
MFC学习笔记之XML 文件操作类
可扩展标记语言XML(Extend Mark Language)是一种描述数据和数据结构的语言,XML数据可以保存在任何可以存储文本的文档中。HTML用来描述外观,而XML从一开始就被设计为表示原始信息而完全忽略数据呈现方式。XML之所以功能强大,是因为计算机行业已经把XML为数据交换的标准,并提供了相当数量的支持工具。窃认为,XML最激动人心的应用是可以在分布式应用中作为消息传递的封装格式(...转载 2018-10-17 08:33:53 · 1011 阅读 · 0 评论 -
GetBuffer与ReleaseBuffer的用法,CString剖析
转载:http://blog.pfan.cn/xman/43212.htmlGetBuffer()主要作用是将字符串的缓冲区长度锁定,releaseBuffer则是解除锁定,使得CString对象在以后的代码中继续可以实现长度自适应增长的功能。CString ::GetBuffer有两个重载版本:LPTSTR GetBuffer( );LPTSTR GetBuffer(int nM...转载 2018-10-09 16:03:01 · 386 阅读 · 0 评论 -
MFC中关于CString::ReleaseBuffer
先来看一段代码: CString str="abcdefg"; LPTSTR pstr=str.GetBuffer(); strcpy(pstr,"ab"); str.ReleaseBuffer(); 此时调用str.GetLength()获取的值是2,正确无误。 但如果注释掉str.ReleaseBuffer()这一行,str.GetLen...转载 2018-10-09 16:02:25 · 947 阅读 · 0 评论 -
利用GetPrivateProfileString读取配置文件(.ini)
在我们写的程序当中,总有一些配置信息需要保存下来,以便完成程序的功能,最简单的办法就是将这些信息写入INI文件中,程序初始化时再读入配置文件中经常用到ini文件,在VC中其函数分别为:写入.ini文件:bool WritePrivateProfileString(LPCTSTRlpAppName,LPCTSTR lpKeyName,LPCTSTR lpString,LPCTSTRlpFi...转载 2018-10-09 16:01:24 · 766 阅读 · 0 评论 -
C++ 判断文件CFile已经打开
方法一:CFile类的成员变量:m_hFile:表示一个打开文件的操作系统文件句柄。通过对m_hFile与CFile::hFileNull的比较来判断该文件是否已经打开。示例代码:CStringstrFilename=_T("D:\\大学语文.docx"); CFilefile; file.Open(strFilename,CFile::modeRead...转载 2019-05-31 16:29:52 · 3477 阅读 · 0 评论 -
socket 网络编程
INADDR_ANY就是inet_addr("0.0.0.0") 当服务器的监听地址是INADDR_ANY时,那就监听所有的哦。我的网络为:192.168.1.102. 于是就有下面的程序: 服务端:[cpp] view plain copy print?#include #include //转载 2017-03-20 13:11:01 · 307 阅读 · 0 评论 -
使用MFC CImage类绘制PNG图片时遇到的问题
原文链接:http://blog.csdn.net/chenlycly/article/details/9193143为了测试CImage绘制PNG图片的效果,我们用截图软件截得一张360的界面,然后使用PhotoShop等工具在图片的周边加上了透明的区域,然后保存成PNG图片文件。CImage首先从文件中加载,即CImage* m_pImgBk;......m_pImgBk =...转载 2019-09-10 16:41:58 · 485 阅读 · 0 评论 -
MFC 动态调用pNG图
//以下内容全部放在一个按钮事件里就可以动态调用pNG图。现在的问题是在有滚动条的窗体里:拖动滚动条图片就不见了void CXMLTestDlg::OnBnClickedButton3(){ CImage* m_pImgBk; m_pImgBk = new CImage; m_pImgBk->Load( _T("D://1234.png")); if ( m_pImgBk...原创 2019-09-10 16:40:12 · 385 阅读 · 0 评论 -
C++ 隐藏窗口在任务栏的显示
BOOL ShowInTaskbar(HWND hWnd, BOOL bShow){ LPVOID lp = NULL ; CoInitialize(lp);//初始化COM库:没有这两句隐藏不起作用 HRESULT hr; ITaskbarList* pTaskbarList; hr = CoCreateInstance( CLSID_TaskbarL...原创 2019-08-20 15:41:45 · 4128 阅读 · 1 评论 -
获取窗口句柄
获取父窗口句柄HWND hWnddlg = AfxGetMainWnd()->m_hWnd; //主窗口句柄或者HWND hWnddlg = this->m_hWnd; //主窗口句柄获取子窗口句柄如果子窗口是控件,并有控件ID号, 则如下获取其子窗口句柄HWND hwnd=::GetDlgItem(hWnddlg,IDC_BUTTON_SETUPBLOCK); //子窗...原创 2019-08-19 16:50:07 · 2600 阅读 · 0 评论 -
写十六进制文件在txt
//****××××××日期 精确到毫秒 + R/W(读/写)+ 数据//写入格式为2019-06-10 16:00:03:0919 R 00 FF 00 0D 80 01 00 00 08 5A DB 54//***以下为具体实现过程://.CPP#define WRITE_SIZE 1024CMutex g_c...原创 2019-06-11 13:32:56 · 1495 阅读 · 0 评论 -
C语言基础——%X(十六进制)的几种不同输出格式
/*time:2016.6.20function:aim:测试十六进制的不同输出方式,%x,%X,%#x,%#X;*/#include <stdio.h>#include <stdlib.h> int length(char a[]); //因为函数位于main()函数之后,所以当引用这个函数时应该首先进行声明便于之后的引用 int m...转载 2019-06-03 09:51:18 · 17996 阅读 · 0 评论 -
MFC窗体中打开第三方exe程序到指定区域(二)
参考文章:https://blog.csdn.net/bmjhappy/article/details/91844221 https://blog.csdn.net/bmjhappy/article/details/91858791需求:C++加载外部exe程序到窗口指定区域,并随窗口尺寸变化而变化流程如下:1、CreateProcess创建外部EXE进程...原创 2019-06-13 14:45:22 · 1064 阅读 · 0 评论 -
MFC窗体中打开第三方exe程序到指定区域(一)
https://blog.csdn.net/tfygg/article/details/51174801流程如下:1、CreateProcess创建外部EXE进程2、获取指定区域的坐标3、查找进程的主窗口4、将外部程序移到指定区域5、调用ShowWindow显示窗口主程序如下:handle=StartProcess("D:\\program tool\\Secu...转载 2019-06-13 13:30:23 · 2574 阅读 · 0 评论 -
C++ CMapStringToString 的使用
1、定义CMapStringToString g_mapSoundNames;//等价于map<CString, CString> g_mapSoundNames;2、初始化//g_SysSoundNames_Normal[m_index]是数组作为键值KEY,g_SysSoundNames[m_index]数组作为VLAUE值for(int m_index=0; m_i...原创 2019-05-29 10:57:43 · 1631 阅读 · 0 评论 -
C++map的初始化
map的初始化有两种方式:1、直接赋值 map[key]=value;2、用insert添加pair类型的元素#include<map>#include<string>#include<iostream> using namespace::std; int main(){ //直接赋值法 map<string...转载 2019-05-29 10:46:43 · 37139 阅读 · 4 评论 -
map 集合取值,根据key 取value, 根据value 取key
1,根据指定value 取keyString resultKey;String str = "固定value";Map<String,String> map = new HashMap<String,String>();map.put("key","value");//for(Map.Entry<String,String> str : ma...转载 2019-05-29 10:45:28 · 8279 阅读 · 0 评论 -
最简单的基于 DirectShow 的视频播放器
源程序下载链接:https://download.csdn.net/download/bmjhappy/1125066950行代码实现的一个最简单的基于 DirectShow 的视频播放器本文介绍一个最简单的基于 DirectShow 的视频播放器。该播放器对于初学者来说是十分有用的,它包含了使用 DirectShow 播放视频所有必备的函数。直接贴上代码,具体代码的含义都写在注释中了...转载 2019-06-20 16:31:07 · 390 阅读 · 0 评论 -
listctrl内容进行大数据量更新时,避免闪烁
listctrl内容进行大数据量更新时,避免闪烁 m_list.SetRedraw(FALSE); //更新内容 // ... m_list.SetRedraw(TRUE); m_list.Invalidate(); m_list.UpdateWindow(); 需求:先删除数据,再显示新数据解决思路...原创 2018-09-23 12:10:07 · 2191 阅读 · 0 评论