C++/VC
蝈蝈Tjguo
这个作者很懒,什么都没留下…
展开
-
VS 调试时打开cmd窗口
cmd原创 2022-12-30 17:24:45 · 1373 阅读 · 0 评论 -
MFC 中使用QT开发界面
mfc中使用QT转载 2022-12-22 14:11:44 · 1610 阅读 · 0 评论 -
MFC中调用QT类库
MFC中调用QT类库。转载 2022-12-22 11:16:05 · 687 阅读 · 0 评论 -
【转】C++类设计和实现的十大最佳实践
C++类设计相关转载 2022-10-11 16:39:12 · 249 阅读 · 0 评论 -
十进制转十六进制
输入一个十进制整数,将其转换成十六进制数输出,并提取每一字节所表示的十六进制数值逐一输出。测试数据如下:分析:从控制台输入一个十进制整数,将其转换成十六进制数输出,接着提取其4个字节。用到按位与运算符“&”、右移位运算符“>>”。ps:“0x”是十六进制数的前缀。位(bit):度量数据的最小单位,表示一位二进制信息;字节(byte):由八位二进制数字组成(1 byte = 8 bit)。1个字节表示2位十六进制数。新建一个Visual C 控制台程序#inclu.原创 2021-12-14 18:16:22 · 2459 阅读 · 0 评论 -
蓝牙 传输 socket
1、有一个蓝牙设备,是一个蓝牙模块,非手机或者其他主机。使用SPP协议。2、使用主机连接这个蓝牙设备,主机是win10系统。在系统中的蓝牙设置中,对这个设备的蓝牙连接,会出现两个虚拟端口。如下图,设备DX2003,会有COM3,COM4两个端口。如果进行数据传输,只能使用COM4端口。3、开始的时候,使用串口控制来实现对蓝牙设备的数据传输,这种方式比较简单。就是先遍历串口设备,然后选择一个COM口,打开,就可以进行数据传输了。但是有一些缺点,无法通过程序端获取到是哪个端口可用,也无法获取到类似于原创 2021-11-30 09:40:35 · 2590 阅读 · 0 评论 -
MFC 从一个工程中拷贝对话框到另一个工程中
从工程A中将对话框资源拷贝到工程B中。1、打开工程B,选择 项目 ->添加现有项,然后选择工程A的rc文件。2、导入rc文件后,会在工程B的资源视图中看到自己的资源和工程A的资源。此时可以将需要拷贝的对话框复制,粘贴。3、选中工程A的资源,然后选择 项目 -> 从项目中排除,即可。...原创 2021-11-18 11:47:56 · 1850 阅读 · 0 评论 -
双目立体像对中的核线影像
双目立体像对,就是两个相机通过在不同位置和姿态拍摄同一物体表面,获取被测物体的三维坐标。完成测量之前,需要标定相机内外参数。标定后,当需要对立体像对进行匹配时,需要先将现有拍摄图像转为核线图像,这样,左图像中的一个点所对应在右图像中的同名点,一定在右图像中的同一行内。这样就可以将匹配计算,从二维搜索转化为一维搜索。核线影像的制作需要进行以下步骤:1、立体像对的坐标系要在其中一个相机的像空间坐标系上。假设为左图像。这样左图像的像点坐标转化为立体像对坐标系下时,平移和旋转量都是0。右图像的.原创 2021-05-20 17:39:55 · 1271 阅读 · 0 评论 -
坐标系变换中的矩阵表示
标准坐标系变换的公式为:x,y,z为初始坐标,XYZ为变换后坐标。a1,a2,a3,b1,b2,b3,c1,c2,c3为旋转矩阵RT1,T2,T3为平移量T将旋转矩阵和平移量放在一起,组成4*4矩阵为这样将坐标系的变换就可以转换为矩阵的计算。比如,变换关系为: R1*R2 = R3即经过R2 变换后,再经过R1变换,得到的结果和直接经过R3变换的值是相同的。这样就有了这样的转换关系。如果已知其中两种变换关系,就可以计算第三个变换关系。如:注意4*4的矩阵并不是正交原创 2021-04-29 15:19:34 · 5437 阅读 · 0 评论 -
vs 2008 win32程序使用大内存 (>2GB)设置
今天用vc 2008调用matlab相机标定工具箱stereo rectify的DLL,程序运行到一半就挂。 试了N次都是这样。 没办法,写了一个matlab测试程序,测试没问题。 后面想到有没有可能是内存不够,原来在32位机上碰到过这个问题,校正小图可以,换大图(500W像素)就内存不够了。 但现在用的是64位机啊,4GB内存,怎么会不够用呢。 后面再想,32位机只能使用2 GB以内的内转载 2015-11-09 17:10:53 · 3375 阅读 · 0 评论 -
内存的申请与释放
释放内存?那要看你怎么申请的了 new->delete;malloc->free;GlobalAlloc->GlobalFree;VirtualAlloc(Ex)->VirtualFree(Ex)…… c++的用法: new delete ansi c的用法:malloc calloc free WIN32的用法:GlobalAlloc GlobalFree HeapAlloc HeapFr转载 2015-11-06 15:43:40 · 2711 阅读 · 0 评论 -
ListCtrl虚拟列表---加载大数据
一、什么是虚拟列表控件虚拟列表控件是指带有LVS_OWNERDATA风格的列表控件。。二、为什么使用虚拟列表控件我们知道,通常使用列表控件CListCtrl,需要调用InsertItem把要显示的数据插入列表中,之后我们就不必关心数据在哪里了,这是因为控件自己开辟了内存空间来保存这些数据。现在假设我们要显示一个数据库,里面的信息量很大,有几十万条记录。通常有两种方法解决这个问题:1是仅仅在ListC转载 2015-09-28 11:25:57 · 4975 阅读 · 0 评论 -
OpenMP critical Lock() atomic 3种锁的比较
OpenMP critical Lock() atomic 3种锁的比较//critical //临界区在同一时间只能有一个线程执行它,其它线程要执行临界区则需要排队来执行它 //&//Lock() & Unlock() //&atomic //上面三者的耗时比比例大约系:7:3.5:1,原子操作最快,不过限制较前两者多…int main(){ int i,nVar=0,转载 2015-08-03 14:51:48 · 5078 阅读 · 0 评论 -
新系统环境下读写注册表
当前的主流系统以及不再是winXP系统,大部分都已经是win7,win8,而且都是64位的。之前一直用来读写注册表的函数 GetProfileString WriteProfileString,现在已经不像之前用的那么方便了,有些限制了。 如果只是读写INI文件,当然是自定义路径,直线使用原来的函数还是可以的。我也一直这么用的,没看到有什么问题。但是今天遇到读写注册表的事情时,发现原创 2015-05-14 17:10:11 · 1202 阅读 · 0 评论 -
在PreTranslateMessage中调用t总是出错的原因分析
在一个窗口类里面实现了PreTranslateMessage函数,响应一个快捷键D,然后在里面实现了一个函数,这个函数里面需要弹出一个对话框显示结果。但是一旦调用DoModal(),程序就会挂掉。找寻好久都无果。换做非模态对话框,没有问题,但是实现颇为麻烦。最后找到一篇文章,大概描述了原因,虽然没有看明白:在PreTranslateMessage(MSG* pMsg)中调用DoMo原创 2015-04-28 10:39:52 · 2427 阅读 · 0 评论 -
MFC中使用CFileDialog可以批量选择文件的方法
//同时打开N个文件void COpenNFileDlg::OnButton1(){ CString pathName,fileName,fileTitle; char* filters = _T("PCM文件(*.pcm)|*.pcm"); //创建一个可以选择多个文件的CFileDialog CFileDialog fileDlg(true,NU转载 2015-03-04 15:33:23 · 3445 阅读 · 0 评论 -
使用OpenMP进行多线程处理时,如何退出多线程
在进行多线程编程时,OpenMP是个非常有效的工具,它能最大化的将你的并行处理发挥到极致。当然有如此便利的方面,自然也会有相应的限制条件。但是一旦熟悉使用,注意它的那几个原则,也不会有什么问题。 在最近的工作中,遇到了一种情况,内容如下:在多线程循环中进行并行处理数据,但是当其中一个线程中的一组数据满足于一个特定的条件时,需要将所有线程挂起,并且弹出提示框,并根据用户在提示框中的选原创 2015-02-05 14:13:02 · 6347 阅读 · 0 评论 -
使用MFC的CFile文件类和CArchive串行化类进行二进制文件读写操作
一 编程案例介绍 本案例基于控制台工程,创建专门的演示类CDemo,实现二进制文件的读写串行化操作,具体代码如下:1 CDemo类定义:class CDemo {public: void CreateFile(); CDemo(); virtual ~CDemo(); void Serialize(CArchive &ar);转载 2014-12-24 16:52:59 · 2014 阅读 · 0 评论 -
CListctrl 获取指定列表的图标序号
CListctrl获取选中行的列数he指定行,或者指定列的原创 2014-11-12 13:28:41 · 1983 阅读 · 0 评论 -
在视图区进行操作时,如何避免闪烁!
对于一个简单的MFC程序,打开显示图像。并且还在视图区进行原创 2014-11-07 15:57:28 · 792 阅读 · 0 评论 -
判断浮点数值的无穷大和无效值
typedef unsigned long ul;bool isINF( float f ){ul x = *(ul*)&f;return 0==(x&0x7ffffful) && 0x7f800000ul==(x&0x7f800000ul);}bool isNaN( float f ){ul x = *(ul*)&f;return 0!=(x&0x7ffffful) && 0x原创 2014-09-25 15:27:55 · 3010 阅读 · 0 评论 -
对话框显示图像的简单方法
1、获取图像的内存数据 2、调用BufferToHBITMAP()函数,将图像数据转为HBITMAP 3、在OnDraw里面,利用双缓冲,贴图像数据详细说明: 1、利用FILE来打开图像文件,利用下面函数获取文件大小。再用fread,将图像文件读取到内存中。long Getlength( FILE *fp ){ long cur_pos; long len; //取得当原创 2015-09-21 17:02:45 · 1553 阅读 · 0 评论 -
CListCtrl虚拟列表技术
创建列表列m_LstCtr.InsertColumn(0, L"列1", LVCFMT_CENTER, 40);m_LstCtr.InsertColumn(1, L"列2", LVCFMT_CENTER, 80);m_LstCtr.InsertColumn(2, L"列3", LVCFMT_CENTER, 0); //列宽为零, 标识隐藏该列m_LstCtr.InsertColumn(3,转载 2015-09-24 10:23:42 · 2151 阅读 · 0 评论 -
CListCtrl大数据显示
CListCtrl是个很方便的东西,但是当数据大到一个程度(比如说10万条数据),显示速度就会非常的慢。解决办法就是用虚拟列表。CListCtrl显示数据的原理是将需显示的所有数据拷贝在它内部的一块空间里,然后显示出来。一但数据量过大,拷贝的时间就会延长,显示速度当然也就非常慢了。而虚拟列表则不需要将显示数据拷贝到内部空间,它的做法是当需要显示某个数据时,才将数据拷入内部空间。看上去好像和普通CLi转载 2015-09-24 09:40:31 · 2694 阅读 · 0 评论 -
g_signal_connect 与 g_signal_connect_swapped
在 2.0 版,信号系统已从 GTK 移到 GLib,因此在函数和类型的说明中有前缀 "g_" 而不是 "gtk_"。我们不打算介绍 GLib 2.0 信号系统相对 GTK 1.2 信号系统扩展的细节。在我们详细分析helloworld程序之前,我们会讨论信号和回调函数。GTK 是一个事件驱动的工具包,意味着它会等在 gtk_main() 那里,直到下一个事件发生,才把控制权传给适当的函数...转载 2019-05-07 16:02:00 · 1190 阅读 · 3 评论 -
PostMessage传递 CString 类型的字符串
当使用自定义消息时,可以使用下面的方法,进行传递。CString* aaa = new CString("dir");::PostMessage(GetParent()-> m_hWnd, WM_USER+1007, 0, (LPARAM) aaa );// 记得接下来不要调用 delete aaa!!!case WM_USER+1007:{CString *bb...原创 2018-11-22 14:34:45 · 4639 阅读 · 0 评论 -
VC编程中,判断野指针
先查看网络摘抄的一段文字,如下: 验证指针是否可读/写。在函数的入口处,经常需要验证指针所指向的内容区域是否可读/写。 通常采用assert(p!= NULL)的检测形式。 但是,指针的值不为空并不代表指针指向了合法可读/写内存。Win32 API提供了函数IsBadReadPtr、IsBadWritePtr、IsBadStringPtr、IsBadCodePtr用来检测指针指向的内存区域是否可读原创 2017-04-25 16:41:06 · 4383 阅读 · 1 评论 -
CInternetFile怎么获取文件大小?!
CInternetFile 服务器端文件大小转载 2016-09-12 12:09:17 · 1395 阅读 · 0 评论 -
QT开发笔记
1.显示中文#include main函数中加 QTextCodec *texcCode; texcCode=QTextCodec::codecForName("GB18030"); QTextCodec::setCodecForCStrings(texcCode); QTextCodec::setCodecForTr(texcCode); QTextCod转载 2016-08-31 11:09:11 · 525 阅读 · 0 评论 -
directshow视频旋转90度
想做一个transform filter完成视频数据的旋转,参考了SDK sample里的EZRGB24那个例子,现在对视频数据修改没问题了。现在的问题是:在transform filter 中如何改变数据类型呢(因为视频旋转90度要互换长宽),要保证下游滤波器长宽也是互换的。 1、其实很简单,在你的transfilter的outpin中设置输出格式,把长宽换掉就可以了。主要涉及g转载 2016-08-29 11:21:01 · 2420 阅读 · 0 评论 -
读取其他进程的数据
假设需要读取的进程为Exe可执行程序A1、根据A的实际打开程序名:A.exe,来找到这个程序的窗口句柄(和进程句柄不同)typedef struct tagWNDINFO{ DWORD dwProcessId; HWND hWnd;} WNDINFO, *LPWNDINFO;BOOL CALLBACK MyEnumProc(HWND hWnd,LPARAM lParam)//枚举原创 2016-08-18 15:04:40 · 3186 阅读 · 0 评论 -
向量积(叉积)及其计算
昨晚想起叉积,竟然没印象了,在网上看了一下,转载出来~ 向量积(叉积)及其计算向量积 a x b = (^n) * |a| * |b| * sin, 其中^n是同时垂直于a/b且符合右手定则的单位向量。 若已知向量a = (ax, ay, az), b = (bx, by, bz);则 a x b = (ay * bz - by * az,转载 2016-06-24 16:46:15 · 22242 阅读 · 0 评论 -
WinExec 函数
从程序里面,调用另一个程序。或者系统自带程序,例子如下:CString strcmd = "Explorer /e, " + strDeCodePath; WinExec(strcmd,SW_SHOW);原创 2016-06-24 09:26:16 · 4247 阅读 · 0 评论 -
控制 C++生成随机数的范围
C++的随机数函数为rand(), 可以获得一个非负整数的随机数。要让随机数限定在一个范围,可以采用模除加加法的方式。要产生随机数r, 其范围为 mrand()%(n-m+1)+m其原理为,对于任意数,0于是0+m即m原创 2016-05-19 11:56:57 · 6656 阅读 · 1 评论 -
DirectShow控制USB摄像头
在使用DirectShow控制USB摄像头的技术方面,需要做几件准备工作:1、安装DirectShow SDK ,这个比较繁琐,具体可以网上搜索。2、配置开发工具的路径,如VS2008的相关包含的路径设置3、网上有示例代码,我的资源也上传了一个示例代码。主要对代码中可能遇到的问题进行总结:一般实现功能,包含两个,一个是实时预览,一个是控制拍摄一张图像。问题就是,这两个功能单原创 2016-04-19 09:37:28 · 4553 阅读 · 0 评论 -
VC下双屏显示的实现
主机上另外再连接一个监视器,这样主机就可以检测到两个显示器,设置显示器属性,将屏幕扩展到第二屏(采用扩展模式)。在VC编程时,可以检测到第二屏的信息(甚至多屏),比如屏的个数,各个屏的分辨率,各个屏的句柄,获得了这些信息后,就可以在第二屏上操作了,比如 画图之类。 在编程中要用到相关的结构体和函数,这些都已经包装好,在multimom.h头文件中,该头文件VC自带有。在要用的的转载 2016-01-14 16:11:08 · 5870 阅读 · 1 评论 -
关于CListCtrl排序问题
由于项目需要,在做到一个功能时,需要一个对话框上面的CListCtrl根据用户点击的列表不同,而实现排序功能。查阅了很多资料,总结如下:1、使用VC++编程,微软在内部对CListCtrl已经有一部分的辅助排序实现代码,自己需要添加简单的函数即可实现。2、自己需要添加的部分: (1)响应点集标题栏事件函数,并在这个函数里面添加一些简单的实现代码 void CB原创 2013-12-18 13:39:36 · 1120 阅读 · 0 评论 -
大型工程在新建文档时,莫名导致程序挂掉的原因
在编写大型工程代码时,有时候在调试时,新建工程以后,突然程序挂掉。跟踪代码,根本不是修改的代码原因导致。而且之前都好好的,是突然出现问题。一时找不到问题源头,甚是苦恼。最后在无意中发现,原来工程中使用了第三方的一个三维显示控件,而之前安装了另一个软件,导致这个控件出现冲突,在创建APP时,会关联这个控件,然后此时就弹出了挂掉程序的提示。原创 2013-11-04 14:29:24 · 879 阅读 · 0 评论 -
VS编译器快捷键大全
VS2010版快捷键Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 生成编译 CTRL + O 打开文件 CTRL + SHIFT + O打开项目 CTRL + SHIFT + C显示类视图窗口 F4 显示属性窗口 SHIF转载 2013-08-15 10:06:45 · 19459 阅读 · 0 评论 -
获取一些常用路径
使用API函数SHGetSpecialFolderLocation。shlobj.h里有SHGetSpecialFolderLocation的原型声明。这个函数可以帮我们找到Windows的桌面目录、启动目录、我的文档目录等。 SHGetSpecialFolder需要三个参数。 第一个参数是HWND,它指定了 "所有者窗口 ":在调用这个函数时可能出现的对话框或消息框。转载 2011-11-23 15:34:03 · 620 阅读 · 0 评论