
C/C++
文章平均质量分 81
法哥2012
QQ:2533740151
展开
-
MFC SDI分割视图之间消息传递
MFC SDI分割视图之间消息传递项目背景:创建了MFC SDI 单文档视图,由于项目需要,对视图进行了分割。主要分为三部分,1)主View 左边;--------------标记为视图A2)操作对话框视图,右上;--------------标记为视图B3)属性对话框视图,右下。--------------标记为视图C类型1 View视图A 发送消息给对话框视图C...原创 2019-10-31 22:17:53 · 868 阅读 · 0 评论 -
基于MFC SDI的视图分割实现方案
一、理论知识先简单归纳一下MFC SDI程序架(Frame),视图(View),文档(Doc)之间的关系。创建MFC SDI程序后我们可以看到建立的工程里生成了Doc类、View类和MainFrame类,它们就分别是文档类、视图类和框架窗口类。文档/视图结构是MFC提供的一种不错的设计,它将数据的处理和显示分开来,这样更便于我们对程序的维护和扩展。文档:文档对象用于管理和维护数据,...原创 2019-10-25 23:08:12 · 997 阅读 · 0 评论 -
MFC在Picture控件上绘制ROI
前面介绍了 MFC对话框程序绘制ROI,但是ROI不是绘制在Picture控件上,而是整个窗体,离我们项目中的需求还有一段距离。待继续实现:1.ROI的坐标改为相对Picture控件左上顶点为原点;2.在Picture控件上绘制,移动ROI;3.绘制区域需要保证在Picture控件之内;1.ROI的坐标改为相对Picture控件左上顶点为原点解决办法:1)定义一个CR...原创 2019-10-22 19:19:24 · 2195 阅读 · 1 评论 -
C++读写Excel文件
在处理仪表数据时需要对Excel文件进行读写操作,本文对C++操作Excel的方法做一个小结。环境:1. Visual Studio 20102. 安装office20073. Win7 1、添加OLE/COM支持。首先,应用程序必须添加对OLE/COM的支持,才能导入OLE/COM组件。本文使用的是MFC对话框程序,在创建工程的向导原创 2016-06-16 14:59:48 · 32013 阅读 · 0 评论 -
C++中的对齐方式及sizeof小结
24.union a { int a_int1; double a_double; int a_int2;};typedef struct{ a a1; char y;} b;class c{ double c_double; b b1; a a2;};输出cout答:VC6环境下得出的结果是32原创 2016-07-13 18:30:26 · 2003 阅读 · 0 评论 -
C++内存泄露和检测
本文提供了在C++中检测内存泄漏的一种方法。转载 2016-07-14 19:10:44 · 403 阅读 · 0 评论 -
C/C++内存泄漏及检测
本文从内存泄漏的定义,危害,产生原因以及检测方法等方面详细介绍了内存泄漏相关的知识。原创 2016-07-26 22:49:11 · 413 阅读 · 0 评论 -
C++字符串和字符串结束标志
用一个字符数组可以存放一个字符串中的字符。如 char str[12]={′I′,′ ′,′a′,′m′,′ ′,′h′,′a′,′p′,′p′,′y′};用一维字符数组str来存放一个字符串″I am happy″中的字符。字符串的实际长度(10)与数组长度(12)不相等,在存放上面10个字符之外,系统对字符数组最后两元素自动填补空字符′\0′。为了测定字符串的实际长度,C转载 2016-07-18 19:24:34 · 3149 阅读 · 0 评论 -
C++中ANSI、Unicode、UTF8字符串之间的互转
本文介绍了C++中常用的字符编码之间的互转方法。原创 2016-07-07 18:43:44 · 9891 阅读 · 2 评论 -
C++删除文件夹及其子文件夹中的文件功能实现(Unicode)
C++删除文件夹及子文件夹的功能实现函数原创 2016-03-24 10:35:33 · 6759 阅读 · 1 评论 -
C/C++语言字符串操作总结
字符串操作向来比较难,难就难在函数太多,用起来各种指针错误,所有给大家整理起来了。转载 2016-07-12 18:15:16 · 578 阅读 · 0 评论 -
VS2008版本发布的问题
MFC程序编译的程序在其他没有安装MFC运行库的电脑上是不能够直接运行的,在发布扫雷程序的时候就碰到了这种问题。在网上找了相关的资料介绍,像将所需要的动态链接文件全部拷到目标电脑的system32文件夹下,最后发现太多了,根本行不通。最后花了两天的是时间和好友研究了这个问题,最后终于解决,下面就以我发布的那个扫雷程序介绍一下我在发布扫雷程序中解决这个问题的具体方法,希望可以给解决类似问题的博友们一原创 2014-03-01 23:54:47 · 2141 阅读 · 0 评论 -
扫雷小游戏
先感谢大家的反馈意见,扫雷小游戏的升级版已经完成。至此,扫雷游戏开发也就告一段落了。当前的版本在上一版本的基础上做了如下修改:1. 雷区方格加大了5个像素点;2. 资源图片添加了一套彩色的数字图片显示;3. 真对中级和高级模式难度太大,添加了一个后台操作,在帮助中添加了一条现实雷区地图的菜单,点击显示当前界面所有的地雷的位置;原创 2014-03-02 21:11:00 · 1470 阅读 · 0 评论 -
C++转义字符和关键字总结
转义字符换行符 \n 水平制表符\t纵向制表符 \v退格符 \b回车符 \r 进纸符 \f报警(响铃)符 \a反斜线 \\疑问号 \?单引号 \'双引号 \" 关键字原创 2014-03-04 23:11:14 · 3108 阅读 · 0 评论 -
一种获取图片RGB参数值的简单方法
在编程的时候碰到了一个需要获取背景图片的颜色的参数值的问题。这里介绍一种简单的方法供解决类似问题的朋友们参考!打开Windows自带的画图软件就可以了。操作如下:(1)程序——附件——画图,界面如下:(2)将需要取色的图片贴上去(借助键盘中的PrintScreen键即可),如下图所示:(3)选中左边取色工具:如下示意图所示:(4)用取色工具选原创 2014-03-09 01:09:35 · 13988 阅读 · 0 评论 -
位图文件分析
位图是Windows系统中一种最简单也是最基本的图像格式,了解位图的文件结构有助于对位图进行各种操作。关于位图的存储和显示普通的显示器屏幕是由许许多多点构成的,我们称之为象素。显示时采用扫描的方法:电子枪每次从左到右扫描一行,为每个象素着色,然后从上到下这样扫描若干行,就扫过了一屏。为了防止闪烁,每秒要重复上述过程若干次。例如我们常说的屏幕分辨率为1024*768,刷新频率为80Hz,意思原创 2014-04-01 00:21:27 · 1873 阅读 · 0 评论 -
根据位图数据直接绘图
在处理网格应用传输图像时,接收方收到的将是数据流,如何能够将图像数据显示在窗口中呢?Windows系统提供了StretchDIBits函数,通过它能够根据位图的数据流将图像显示在窗口中。函数原型:int StretchDIBits(HDC hdc, int XDest , int YDest , int nDestWidth, int nDestHeight, int XSrc, int原创 2014-04-03 23:25:31 · 2002 阅读 · 0 评论 -
一种对图象进行局部放大的有效方法
附例:一种对图象进行局部放大的有效方法 在实际工作中,对图象进行局部放大,以便更加清楚、细致的观察图象的某个部位,是经常遇到的问题。在Visual C++6.0中,巧妙、灵活的运用CDC类的StretchBlt()函数以及有效的完成对鼠标的消息映射等,就能实现这一目的;这里所实现的对图象进行局部放大的操作是:(1)移动MOUSE鼠标,放大显示图象的不同部位。(2)左击鼠标放大倍率。转载 2014-04-05 23:18:58 · 2721 阅读 · 0 评论 -
C++类型转换总结
本文总结了一下C++中常见的4种类型转换方法和适用类型。原创 2016-07-09 19:06:01 · 388 阅读 · 0 评论 -
扫雷游戏的实现C++
扫雷游戏是Windows操作系统自带的一个小游戏,几乎每个电脑使用者都接触过它。它同时也是一款比较经典的小游戏,实现它的方法很多,也可以用不同算法和语言实现。近期用了两个周末(各一天)和大半个月的空余时间终于实现了一个比较完整的扫雷程序。现通过C++来呈现这款小游戏的实现方法。 关于扫雷:游戏的规则:在不掀开任何藏有地雷的方块情况下,以最快的速度找出所有的地雷。如果在掀开方块的过程中,不小原创 2014-02-26 21:00:42 · 19998 阅读 · 1 评论 -
获取Windows操作系统版本和位数
(1)获取系统位数32bit 64bitvoid CXXXDlg::GetSysBit(bool& bIs32Bit){ bIs32Bit=true; SYSTEM_INFO si; // Copy the hardware information to the SYSTEM_INFO structure. GetNativeSystemInfo(&si); // Displa原创 2016-08-04 22:46:24 · 5968 阅读 · 0 评论 -
Visual Studio 2010 +OpenCV2.4.10 环境配置
1、下载及安装下载2.4.10版,安装包其实就是一个压缩包,安装过程就是解压到某个文件夹。下载地址:链接:https://pan.baidu.com/s/1oI4EZq3C6Cf8fLixsKUX_A 提取码:skai 安装到 C:\opencv 目录,安装后文件夹如下:我们只需要关注“build”文件夹即可,其他的可以不用管。“build”文件夹编译后的文件,我们可以...原创 2019-09-20 10:54:14 · 793 阅读 · 0 评论 -
通过libcurl实现https访问服务器
libcurl支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。本文通过一个示例Demo介绍通过libcurl实现https访问服...原创 2019-08-26 09:22:40 · 8433 阅读 · 1 评论 -
安捷伦电源6319D实现GPIB通信
设备:PC+安捷伦电源(型号:6319D)+GPIB开发环境:VS2010+MFC+VISA定义电源信息如下,typedef struct PowerUnitTag{ BOOL bOpenEnable; ViSession instrumentHandle; int nGPIBAddress; int nPowerAddress; int nPowerModel; in...原创 2019-05-31 08:58:31 · 3597 阅读 · 0 评论 -
GDI对象泄漏的问题
项目中遇到的一个问题:GUI程序长时间运行时(大于27小时),会出现点击托盘图标无反应,不能正常显示界面调查分析:调试代码,待问题复现后(超过一段时间)几乎必现。在工程的输出信息栏中会周期性的提示 如下信息,XXX.exe 中的 0x750b845d 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0012e004 处的 CResourceException。Warni...原创 2018-09-25 14:06:55 · 2990 阅读 · 0 评论 -
VC实现http发送get和post请求
VC实现http发送get和post请求get请求首先通过前面介绍的抓包工具获取请求的详细内容,然后再通过VC拼接Header,函数如下:bool CXXX::http_get_eng_mode(){ // call000cmget_wan_configs</obj_method> CString strURL=_T("http://")+loginfo.strIPA原创 2017-07-14 18:58:04 · 13060 阅读 · 0 评论 -
MsXml创建和解析XML示例
一.MsXml创建XML文档示例// XmlCreationDemo.cpp#include #include // 引入MSXML解析器#import using namespace MSXML2;class InitializeCom{public: InitializeCom() { CoInitialize(NULL); // Initializes th转载 2017-06-17 13:11:05 · 871 阅读 · 2 评论 -
抓包工具feddler
因项目需要,用到了这个抓包工具。非常方便有用,做一个简单记录。1.清空内容2.发送请求的完整内容3.接收请求的完整数据4.查看具体的请求数据内容5.接收的json格式的数据内容6.接收的xml格式的数据内容抓包工具获取地址:http://download.youkuaiyun.com/detail/shufac/9856738原创 2017-05-31 18:40:48 · 1111 阅读 · 0 评论 -
C++实现预装驱动功能
C++实现预装驱动功能 工作中遇到的一个需求:需要在项目中打包一个硬件设备的驱动安装程序,提供了驱动安装包文件。 微软的WDK有提供API实现这个功能。所以,需要先下载WDK。WDK下载地址:http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=11800WDK中 函数Dr原创 2017-05-03 19:10:32 · 1389 阅读 · 0 评论 -
循环执行shell脚本
/////////////////////////////////////////////////////////////////////////////////////////////////////循环执行shell脚本#$language = "VBScript"#$interface = "1.0"crt.Screen.Synchronous = False Sub Mai原创 2017-04-15 18:20:06 · 3518 阅读 · 0 评论 -
用cmd执行命令方法汇总
用Cmd执行命令方法汇总一、system()--执行shell命令1、包含头文件:#include2、定义intsystem(const char * string);3、参数String:合法的可执行DOS(SHELL)命令4、返回值1)如果 system()在调用/bin/sh 时失败则返回127, 其他失败原因返回-1。2)若参数string 为空指针转载 2017-03-29 18:36:52 · 10088 阅读 · 0 评论 -
C/C++ sizeof与strlen区别
#include using namespace std;void main(){ char *p="teste"; char *t="myname\0"; cout<<"字符指针"<<endl; cout<<sizeof(p)<<endl; cout<<sizeof(*p)<<endl; cout<<sizeof(t)<<endl; cout<<strlen(p)<<en转载 2017-02-25 18:06:37 · 596 阅读 · 0 评论 -
C++Builder及VC的DLL相互调用示例
C++Builder及VC的DLL相互调用示例由于MS和Borland(CodeGear)两家的编辑器实现细节不同,造成了它们生成的DLL不能相互通用,因此给实际带来了很多的麻烦。下面来说一说如何解决这个问题。 VC生成DLL,C++Builder调用1、用extern "C"修饰VC导出的DLL函数。如:extern "C" __declspec(dllexport) int aFu原创 2016-12-21 08:46:38 · 4342 阅读 · 0 评论 -
VC实现高精度定时器
VC实现高精度定时器(精确到1ms)原创 2016-10-29 11:37:13 · 2658 阅读 · 2 评论 -
VC 获取函数执行时间GetTicketCount()
VC 获取函数执行时间GetTicketCount() GetTickCount是函数。GetTickCount返回(retrieve)从操作系统启动所经过(elapsed)的毫秒数,它的返回值是DWORD。示例示例代码如下:BOOL CLogFileHelper::IsBootingCompleted(){ int time,starttime=GetTickCount();原创 2016-10-27 09:40:53 · 3663 阅读 · 0 评论 -
error LNK2005: _sprintf 已经在 MSVCRTD.lib(MSVCR90D.dll) 中定义
VS2010 引用json库文件时,json解析失败的一种解决办法转载 2016-11-18 19:07:29 · 3176 阅读 · 0 评论 -
MFC中利用ADO对数据库进行简单操作的实例
目标:实现对数据库中的数据进行简单地操作,包括增、删、改、查。第一步,创建一个基于对话框的应用程序,命名为TestAdo第二步,按照图1的界面布局添加控件原创 2014-04-16 22:37:16 · 9530 阅读 · 3 评论 -
c++类实例在内存中所占字节数分析
c++是一种面向对象的编程语言,它向下保持了对c的兼容,同时也允许程序员能够自由的操控内存,虽然会带来一些问题,但这不是我们要探讨的问题,略过不表。类是对某种对象的定义,包含变量和方法,也可以理解为现实生活中一类具有共同特征的事务的抽象,他是面向对象语言的基础。所以类是不占有内存的,可是如果类生成实例那么将会在内存中分配一块内存来存储这个类。 类的实例在内存中是如何分配内存的,有什原创 2014-07-17 23:41:16 · 3165 阅读 · 0 评论 -
C++将HBITMAP保存为bmp图片
BOOL CBMP2ArrayMultiplyDlg::SaveBitmapToFile(HBITMAP hBitmap, CString szfilename){ HDC hDC; //当前分辨率下每象素所占字节数 int iBits; //位图中每象素所占字节数 WORD wBi原创 2015-11-23 17:02:39 · 11977 阅读 · 2 评论 -
C语言产生满足正态分布的随机数
C语言中可以通过rand函数生成满足均匀分布的随机数,但是生成满足正太分布的随机数就没有那么简单了,下面对常用的几种方法进行总结并用C++编程实现。方法一:由均匀分布的随机数来产生 一个简单可行的并且容易编程的方法是:求12个在(0,1)上均匀分布的和,然后减6(12的一半)。这种方法可以用在很多应用中,这12个数的和是Irwin-Hall分布;选择一个方差12。但此推导的结转载 2015-11-19 09:36:54 · 2477 阅读 · 0 评论