C++
东西北
机器视觉
展开
-
GDI+ 句柄存图,bmp | jpeg | gif | tiff | png
GDI+ 句柄存图//将Bitmap保存为图片BOOL SaveBitmapToFile(Bitmap *bmp,LPTSTR lpPath){ CLSID pngClsid; TCHAR wsTemp[MAX_PATH],wsExt[MAX_PATH]; _tsplitpath_s(lpPath,wsTemp,wsTemp,wsTemp,wsTemp); if (NULL原创 2016-10-31 14:25:43 · 767 阅读 · 0 评论 -
VC如何获取对话框中控件的坐标
VC如何获取对话框中控件的坐标GetWindowRect是取得窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。 GetClientRect取得窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小,而不能得到相对屏幕的位置,它的top和left都为0,right和botton是宽和高,因转载 2013-08-21 14:02:53 · 1074 阅读 · 0 评论 -
CSpinButtonCtrl控件 控制小数,指定步长,指定类型数据
1、添加文本框&spin控件,Ctrl+D设置tab顺序,使文本框后面紧接着是spin控件2、设置spin控件属性a、styles-auto buddyb、styles-alignment-right 其它属性均按默认配置3、初始化中为spin控件设置范围,随便设个范围即可((CSpinButtonCtrl*)GetDlgItem(IDC_SPIN1))->SetRange(0原创 2013-08-21 09:23:15 · 3550 阅读 · 0 评论 -
VC消息学习总结
摘要:项目中要用到编程,由于不是计算机专业的很多从头学起,最近查了一些有关消息的内容,总结一下。主要有:消息的定义,消息的分类,消息的发送和消息的处理。1 消息的定义 消息系统对于一个win32程序来说十分重要,它是一个程序运行的动力源泉。一个消息,是系统定义的一个32位的值,他唯一的定义了一个事件,向Windows发出一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变转载 2013-08-20 13:23:54 · 562 阅读 · 0 评论 -
如何获取消息来源的控件ID
1、 获取消息来源的控件IDconst MSG* pMsg = GetCurrentMessage(); // 得到你当前正在处理的消息的MSG结构 UINT nID = LOWORD(pMsg->wParam); // 消息wParam参数的低16位为发送消息的控件ID2、 获取当前焦点的控件IDCWnd* pWnd = Ge原创 2013-08-20 11:20:42 · 1204 阅读 · 0 评论 -
CSemaphore/CMutex/CCriticalSection/CEvent之间区别
CSemaphore/CMutex/CCriticalSection/CEvent之间区别临界区:临界区是一种最简单的同步对象,它只可以在同一进程内部使用。它的作用是保证只有一个线程可以申请到该对象。 互斥量与临界区的作用非常相似,但互斥量是可以命名的,也就是说它可以跨越进程使用。所以创建互斥量需要的资源更多,所以如果只为了在进程内部是用的话使用临界区会带来速度上转载 2013-08-01 17:55:33 · 903 阅读 · 0 评论 -
C++ win32 Sleep()头文件 #include <windows.h>
C++ win32 Sleep()头文件 #include原创 2013-07-26 10:05:33 · 8519 阅读 · 0 评论 -
MFC SDI修改标题
重载如下函数,即可。去掉“-”void OnUpdateFrameTitle(BOOL NaDa);void CMainFrame::OnUpdateFrameTitle(BOOL NaDa){SetWindowText("我的标题");}原创 2013-07-31 13:28:51 · 808 阅读 · 0 评论 -
QString CString char转换
QString CString char转换qstring is unicode. utf16 in qt4.QString fromAscii ( const char * str, int size = -1 )QString fromLatin1 ( const char * str, int size = -1 )QString fromLocal8Bit (转载 2013-07-31 09:49:37 · 1257 阅读 · 0 评论 -
std::vector
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。为了可以使用vector,必须在你的头文件中包含下面的代码:#include vector属于std命名域的,因此需要通过命名限转载 2013-04-27 09:35:08 · 715 阅读 · 0 评论 -
C++ TEXT CFont MulDiv
TEXT无TEXT(“”)的在编译时 编译成ASCII码,加上_T()或TEXT()变成UNICODE CFont( ); 构造一个CFont对象。此对象在使用之前应该先使用CreateFont、CreateFontIndirect、CreatePointFont或CreatePointFontIndirect初始化。初始化函数BOOL CreateFont(int nHeight,i转载 2013-02-18 10:56:14 · 995 阅读 · 0 评论 -
MFC 打印和预览的功能 .
MFC 本身提供了很好的框架。 // XXX绘制void XXX::OnDraw(CDC* pDC){ XXX* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return;} // XXX打印BOOL XXX::OnPreparePrinting(CPrintInf转载 2013-01-29 16:43:31 · 1713 阅读 · 0 评论 -
打印
http://study.qqcf.com/web/196/22129.htmVC++中所见即所得打印的简易实现 在VC++6.0中用应用程序向导(AppWizard)生成的单文档或多文档程序提供了对打印功能的实现,但遗憾的是如果对自动生成的框架程序不做任何改进,打印出来的文档或图形和屏幕上的显示相比就会特别小。为什么会这样呢? 本文对这种现象的原因和MFC的打印机制进行了深转载 2013-01-29 16:37:59 · 647 阅读 · 0 评论 -
mouse_event实现鼠标事件
右击固定位置 获取控件位置GetDlgItem(IDC_SHOW_RESULT)->GetWindowRect(&rt); int dx = (rt.left+20);int dy = (rt.top+20);dx = 10 * 65535 / Screen.PrimaryScreen.Bounds.Width;dy = 10 * 65535 / Screen.PrimaryScree原创 2013-08-21 16:07:39 · 6618 阅读 · 0 评论 -
dll传递stl注意
转自:http://www.cnblogs.com/lidabo/archive/2013/09/04/3300327.htmlSTL跨平台调用会出现很多异常,你可以试试.STL使用模板生成,当我们使用模板的时候,每一个EXE,和DLL都在编译器产生了自己的代码,导致模板所使用的静态成员不同步,所以出现数据传递的各种问题,下面是详细解释。原因转载 2013-09-11 14:04:50 · 4641 阅读 · 0 评论 -
获取远程控制相关信息和设置
1、获取本机信息用户名和Ip地址bool getHostInfo(){ CString strInfo,strTemp; WORD wVersionRequested = MAKEWORD(1, 1); WSADATA wsaData; // 初始化 Windows sockets API. if(WSAStartup(wVersionRequested, &wsaData))原创 2013-12-25 13:49:30 · 761 阅读 · 0 评论 -
32位程序在64位系统下隐藏托盘图标
网上有很多代码,多是在32位系统下正常,64位系统则无法隐藏系统图标,分析发现原因如下。原因:64位系统下Explorer.exe是64位的,访问其进程时结构体数据与32位系统有所差异,导致读取数据错误。解决:按64位系统内结构读取数据赋值,结构如下:#define SYSTEM64#ifdef SYSTEM64#define TBBUTTONEX _TBBUTTON64原创 2016-10-25 18:38:27 · 1106 阅读 · 0 评论 -
图像预处理SSE加速,90度旋转和垂直镜像
图像预处理操作的90度整倍数旋转、镜像,都可由以下两个基本操作组合得出,测试比单点操作速度提升约3-5倍。//镜像-1*16单字节矩阵 void MirrorMatrix(__m128i *pSrc_tmp ,__m128i *pDst_tmp , __m128i sort){ _mm_storeu_si128(pDst_tmp, _mm_shuffle_epi8(_mm_loadu_s原创 2016-09-20 14:07:52 · 2131 阅读 · 1 评论 -
ParseCommandLine解析路径中包含空格时中断,开机启动项中路径包含空格中断
将MFC写的EXE通过注册表的方式添加到打开方式中,双击打开时获取文件路径,做相应操作。发现用如下方式获取路径时,若路径中包含空格时中断。CCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);OutputDebugString(cmdInfo.m_strFileName);分析原因发现是在修改注册表绑定EXE路径时原创 2016-05-12 16:15:49 · 2021 阅读 · 0 评论 -
VS 平台部分常用设置
设置VS编译或部署时遇到错误提示是否继续运行 转载▼问题描述:默认情况下,vs2010按F5进行编译,如果编译时发现有错误,vs会提示是否继续运行。某次手贱不小心点了继续运行且不再提示,结果现在就算编译出错也不提示,而是直接运行就的无错误版本,给开发造成很大不便。问题解决,设置方法如下:Tools->Options->Projects and Solutio转载 2016-04-25 10:36:57 · 559 阅读 · 0 评论 -
MFC单例运行三种方式
要使应用程序只允许同时运行一个实例,可以这样做:在XXXApp::InitInstance() 函数里面开头部位添加代码。代码方案1:(直接查找该程序窗口是否已经存在)CWnd *pWndPrev, *pWndChild;if(pWndPrev=CWnd::FindWindow("#32770","DMTOOL") ) //见说明1{ if(pW转载 2014-07-10 14:26:04 · 4997 阅读 · 1 评论 -
VS2010中Parallel并行-MARK
http://tech.it168.com/a2010/0318/862/000000862631.shtml转载 2014-07-02 09:01:51 · 602 阅读 · 0 评论 -
在头文件中使用static定义变量意味着什么
[C/C++]在头文件中使用static定义变量意味着什么看到有一位同学在头文件中这么写:12static const wchar_t* g_str1 = …static const wchar_t* g_str2 = …这种定义变量的方式我从来没有见过,而且它还能顺利通过编译,于是转载 2014-05-15 11:19:36 · 707 阅读 · 0 评论 -
C++ 堆栈空间不足,溢出
C++运行时错误:定义了个很大的数组,编译通过,执行崩溃报错,内存错误,无具体错误信息。做如下修改后正常。Link->Category(Output)->Reserve:0x800000 详见下图原创 2014-03-04 14:26:44 · 1901 阅读 · 0 评论 -
C语言注意事项
fgetc与fputc函数fgetc函数从指定的文件中读一个字节fputc函数向指定的文件写一个字节转载 2014-02-11 16:46:36 · 950 阅读 · 0 评论 -
Windows 中不规则窗体的编程实现
Windows 中不规则窗体的编程实现一、序言 在绝大多数的Windows应用程序中,其窗体都是使用的正规正矩的矩形窗体,例如我们常用的,“记事本”,“扫雷”,等等。矩形窗体,具有编程实现简单,风格简洁的优点,所以在普通文档应用程序和 简单小游戏中使用足矣。但在某些娱乐游戏程序中使用就略显呆板些了,这时若用不规则窗体替代原先 的矩形窗体,将会使这类程序更添情趣。典型的例子有w转载 2014-01-15 14:14:53 · 610 阅读 · 0 评论 -
改变窗体风格
// Change a window's styleAFX_STATIC BOOL AFXAPI _AfxModifyStyle(HWND hWnd, int nStyleOffset, DWORD dwRemove, DWORD dwAdd, UINT nFlags){ ASSERT(hWnd != NULL); DWORD dwStyle = ::GetWindowLong(hWnd原创 2014-01-16 10:13:53 · 1243 阅读 · 0 评论 -
编译时间过长注意事项
1、修改头文件后会导致较多的重编译工作;2、能放在*.Cpp中的include文件,尽量不要放在*.h中3、避免头文件重复包含。下文转自http://blog.csdn.net/ugg/article/details/1489765对于一个中型或者以上项目,编译时间本来就不短,如果在编码过程中,一些问题不注意,将使编译时间更长,下面介绍几点需要注意的地方。 关于《C转载 2013-12-27 09:41:12 · 970 阅读 · 0 评论 -
TRACE
TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能;该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调试也在RELEASE的时候减少代码量。使用非常简单,格式如下: TRACE("DDDDDDDDDDD"); TRACE("wewe%d",333); 同样还存在TRACE0,TRACE1,TRACE2。。。分别对应0,1转载 2013-01-28 14:12:27 · 416 阅读 · 0 评论 -
PreTranslateMessage 与 WindowProc 的关系
PreTranslateMessage 与 WindowProc 的关系http://topic.csdn.net/u/20070828/17/a4283e65-6176-4673-8559-5e822667b4d3.html1:MFC中PreTranslateMessage是GetMessage(...)函数的下一级操作,即GetMessage(...)从消息队列中获取消息后转载 2012-12-17 15:43:02 · 3826 阅读 · 0 评论 -
图像的矩
图像的矩一幅图像的矩,是通过一定的公式计算出来的。明白这个公式背后的原理,对于初学者来说,有一定的困难。这里,对图像的矩进行讲解。------------------------------若转载本文,请注明出自:www.opencvchina.com----------------------------------(1)数学公式在纯数学理论上,关于某一个点的第n阶矩,定转载 2012-12-24 18:06:48 · 13490 阅读 · 2 评论 -
CDC类详细说明
CDC类定义的是设备上下文对象的类。CDC对象提供处理显示器或打印机等设备上下文的成员函数,以及处理与窗口客户区对应的显示上下文的成员。通过CDC对象的成员函数进行所有的绘图。类对设备上下文操作提供了成员函数,处理绘图工具。安全型图形设备接口(GDI)对象收集,以及处理颜色和调色板。它还为获取和设置绘图属性、映射,处理视点、窗口扩展、转换坐标,处理区域、剪贴、绘制直线及绘制简单椭圆转载 2012-03-31 15:03:15 · 2069 阅读 · 0 评论 -
MFC CDC::GetPath
CDC::GetPathint GetPath( LPPOINT lpPoints, LPBYTE lpTypes, int nCount ) const;返回值If the nCount parameter is nonzero, the number of points enumerated. If nCount is 0, the total number of po转载 2012-03-31 13:54:53 · 1865 阅读 · 0 评论 -
MFC 多文档
1.获取当前文档指针//获取主框架指针CMainFrame* pMainFrm = (CMainFrame*)AfxGetMainWnd();//从主框架指针获取子框架指针CMDIChildWnd *pChild = (CMDIChildWnd *) pMainFrm ->GetActiveFrame();//通过子框架指针获取当前视图指针CVwView *pView =原创 2012-03-08 20:02:53 · 514 阅读 · 0 评论 -
MFC中,从app文件调用doc文件中成员
调用Doc中成员只需获取其指针即可。1.单文档 CMainFrame * pmf=(CMainFrame*)AfxGetMainWnd(); m_pDoc=(Doc*)pmf->GetActiveDocument(); 2、多文档 根据CWinApp和文档模板,寻找文档 //在CWinAPP类中保存有一个文档模板列表,可以如此查找原创 2012-03-08 16:48:28 · 722 阅读 · 0 评论 -
VC++ MFC单文档转多文档的步骤方法
子框架ChildFrm的增加与修改:1、首先在在Headers files和source files中分别添加文件,设其名字为ChileFrm.h及ChildFrm.cpp,并将自己在外部新建的多文档工程中的ChildFrm的.h及.cpp文件中的代码复制过去,注意:将.cpp中的app文件头文件改为自己的工程名.h;主框架MainFrm的修改:2、在主框架MainFrm的.h中的DE转载 2012-03-08 09:47:42 · 3890 阅读 · 0 评论 -
负数取余
1. 先令 r = a % b,然后如果 r < 0 再进行修正:r = a % b;if (r < 0) r += b; 2. 直接使用语句:r = (a%b+b)%b;这样就保证了 r >= 0,缺点是要执行两次取余运算,效率会打点折扣。转载 2012-02-28 13:58:11 · 2106 阅读 · 0 评论 -
C++ 创建类库
在自己创建的dll中包含类1.按下述网址的方法创建dll文件http://blog.csdn.net/z397164725/article/details/72857212.添加类 并在类名称前加上导出 __declspec(dllexport),否则在应用dll中无法实例化该类,也无法调用该类中的方法。如下:class __declspec(dllexport) CTes原创 2012-02-23 14:18:56 · 1075 阅读 · 0 评论 -
使用RICHEDIT
在mfc中使用工具栏里的RichEdit 控件时,应该在程序初始话时加入AfxInitRichEdit() 【在BOOL C***App::InitInstance()中加入,下文6中】否则的话 程序会起不来.也没有任何错误信息.这个函数 是加载 RICHED32.DLL的.1.设置edit只读属性 方法一: m_edit1.SetR转载 2012-02-21 18:00:20 · 547 阅读 · 0 评论 -
单文档分割窗口
重载BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) {if (!m_NanSplitterWnd.CreateStatic(this, 1, 2)) return false;if (!m_NanSplitterWnd.CreateView(0, 0, RUNTIME_原创 2012-05-14 12:38:41 · 494 阅读 · 0 评论