C/C++
dongfs-821
如有侵权 诚挚歉意 告知删除
展开
-
mfc的CTreeCtrl控件实现windows的资源管理器
BOOL Cwp8MtpTestDlg::OnInitDialog() { CDialog::OnInitDialog(); //设置目录树样式 DWORD dwStyle = GetWindowLong(m_pcTreeCtrl.m_hWnd,GWL_STYLE); dwStyle |= TVS_HASBUTTONS|TVS_HASLINES|TVS_LINES...转载 2018-03-24 17:28:32 · 1302 阅读 · 0 评论 -
MFC实现编辑框对回车键的响应
首先把文本编辑框属性里的want return选上。然后可以通过重载虚函数PreTranslateMessage()对所关心的消息进行解析:[cpp] view plain copyBOOL CTestView::PreTranslateMessage(MSG* pMsg) { if (WM_KEYFIRST <= pMsg-> message &&...转载 2018-03-24 13:56:57 · 6395 阅读 · 2 评论 -
vs c++配置opencv(1)
1.vc++配置opencv2.简单常用的图片处理函数3.图像修复函数 环境:vs2013opencv2.4.13 准备工作:1.安装opencv。opencv各版本间存在API差异,opencv提供相应版本的vc文件,在其安装目录 ..opencv\build\x86 目录下,个人觉得引用与当前使用vs版本最接近的目录文件就可以。opencv安装目录下的引用lib及bin文件 提供x86和x64...翻译 2018-03-06 16:07:50 · 5282 阅读 · 0 评论 -
VC 使用应用程序打开另一个应用程序,本应用程序锁定
打开别的应用程序,死循环判断某个文件是否存在,不存在在一直处于休眠状态,以达到锁定效果。void CMy1233Dlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码"E:\\QQ.EXE",SW_SHOW ::WinExec((LPCSTR)_T("D:\\Program Files (x86)\\EditPlus 3\\EditPlus.exe")...原创 2018-03-18 11:57:35 · 872 阅读 · 0 评论 -
c++ 判断文件或文件夹是否存在
在Windows应用项目中,几乎总会需要用到一些文件系统相关的函数,如:判断文件是否存在,判断文件夹是否为空,删除文件夹及其所有子项,计算文件夹的大小,等等。不知为何,Windows并未提供直接的API来完成这些操作,于是,代码江湖上开始创立起各种流派,一片刀光剑影。。。大道流:GetFileAttributes大道至简,大道就在你眼前!对于一般的应用来说,GetFileAttributes可以说...转载 2018-03-18 11:54:35 · 2647 阅读 · 1 评论 -
拆分字符串 C++
一、 split()方法用于将一个字符串分割成字符串数组。 语法:stringObject.split(separator,howmany)12参数介绍:separator:必需。字符串或正则表达式,从该参数指定的地方分割stringObject。 howmany 可选,该参数指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多余这个参数指定的数组。如果没有设转载 2018-01-27 20:38:37 · 9642 阅读 · 5 评论 -
资源MFC DLL的制作[在DLL中封装MFC对话框]
1. 首先在MFC DLL 的文件中函数中添加 PIMSHQERON001100.DLLBOOL CPIMSHQERON001100App::InitInstance(){AFX_MANAGE_STATE(AfxGetStaticModuleState());COleObjectFactory::RegisterAll();CWinApp::InitInstance();转载 2018-01-27 17:08:24 · 565 阅读 · 0 评论 -
数组指针和指针数组
1、数组指针(指向数组的指针)(1)数组在内存中的表示创建一个数组就是在内存里面开辟一块连续的空间,比如int a[4];就是在内存里面开辟了一个大小为4*sizeof(int)字节的内存空间。二维数组是特殊的一维数组。先来看一段代码:[cpp] view plain copy"font-size:16px;">void ma转载 2018-01-06 17:45:54 · 188 阅读 · 0 评论 -
指针函数与函数指针
1.指针函数先看下面的函数声明,注意,此函数有返回值,返回值为int *,即返回值是指针类型的。[cpp] view plain copyint *f(int a, int b); 上面的函数声明又可以写成如下形式:int* f(int a, int b);让指针标志 * 与int紧贴在一起,而与函数名f转载 2018-01-06 17:40:30 · 175 阅读 · 0 评论 -
VS 调试断点命中
在使用VS开发时,有时断点会无法进入,特别是在一个项目中引用另一个类库项目时。如下图。我在一个项目中引用了自定义的控件MyControl类库,但在使用时发现,有些地方还需要调整,比如这里我需要增加一个GUID作为特殊标识,并输出以供测试。但是当我将这段代码加入进去后,按F5运行程序时,这段代码的断点没有如预期的进入。注:无法进入的断点是空心的,可以进入的断点是实心的。转载 2017-12-13 18:59:54 · 524 阅读 · 0 评论 -
判断文件路径是否存在 不存在创建
方法一:CFileFind m_FileFind;CString m_sFilePath = "D://Program Files//Adobe//Adobe Flash CS3";if(!m_FileFind.FindFile(m_sFilePath)) //路径不存在则创建该路径{ CreateDirectory(m_sFilePath,NULL);} 方法二: CString ...转载 2018-04-09 13:52:08 · 1723 阅读 · 0 评论 -
判断某个进程是否存在
#include <Tlhelp32.h>BOOL IsExistProcess(CONST CHAR* szProcessName) { PROCESSENTRY32 processEntry32; HANDLE toolHelp32Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); ...转载 2018-04-09 13:56:19 · 1333 阅读 · 0 评论 -
COM 套间
http://www.vckbase.com/index.php/wv/1315简序大学毕业前的最后一学期,在一家公司实习,当时的工作需要用到一些操作系统提供的组件。那时候只知道COM这个名词,并不知道到底是怎么回事,只知道上网 到处找别人的源码解决自己的问题;那段日子到现在回忆起来都是灰色的,每天呆坐在电脑前,一个网站一个网站的查找自己需要的源码。但并不清楚自己到底在做 什么;那时候对自...转载 2018-08-13 09:08:55 · 275 阅读 · 0 评论 -
翻译:理解COM套间(第一部分)
编写拙作《关于COM组件线程模型的实验》的过程中,发现自己无法合理解释特定情况下程序的运行情况。为更深入理解COM的线程模型,合理解释程序运行情况,找了一些资料看。发现一篇英文文章不错,特地翻译出来。关于对STA中对象的回调处理、其他套间中的线程对MTA中的对象的调用是通过RPC线程池里的线程进行的,以及不应该在自由线程和双线程模型的组件中使用线程局部存储这三点,是我在这篇文章中首次看到的,也是这...转载 2018-08-13 09:06:34 · 272 阅读 · 0 评论 -
C++串口编程
原文链接:http://blog.sina.com.cn/s/blog_afb1793101016mq2.html 1. 本例子使用了比较规范的软件设计方法,类的设计具有比较好的可扩展性和移植性、代码的注释采用doxgen支持的javaDoc风格。2. 为了能方便初学者更快地了解和入门,几乎每一行代码都加上了详细的注释,对于注释中如果依然有不清楚的概念,相信你通过百度和google一定能...转载 2018-08-06 14:52:43 · 572 阅读 · 0 评论 -
c++非常有用的解析协议用的一个辅助类
ByteStream.h #pragma once #include "Define.h" class ByteStream { public: ByteStream(uint32_t reserveSize); ~ByteStream(); void writeUInt32(uint32_t ...转载 2018-07-25 14:46:13 · 966 阅读 · 0 评论 -
多线程实时数据采集MFC VISUAL C++ /C++
美国国家仪器公司为用户提供了许多高性能、高速度、高分辨率的数据采集卡,而与之接口的软件大多采用 Labview,Labview是一种图形化编程软件,你只需拖动控件到容器,使用起来确实比较方便。但用户无法知 道底层的东西,这样针对具体的应用,还要自己去理解封装得很深的函数或程序,费时、费力。因此,c++/MFC还是一种 比较好的选择。如何在MFC中实现实时数据采集呢? 首...转载 2018-07-25 09:46:34 · 3429 阅读 · 0 评论 -
vc 菜单
菜单 菜单项属性说明:ID 标识菜单的唯一常量。Caption 菜单项标题,“&" 后面的字符为快捷键,在菜单项后的字符将加下划线。Separator 水平线,其它属性无效。Pop_up 有子菜单Grayed 无效,标题以灰色显示Inactive 无效,标题正常显示Checked 在标题前加一个对钩break 为None时,使它和它的兄弟们一...转载 2018-07-24 14:38:03 · 330 阅读 · 0 评论 -
String类实现
class String{ friend ostream& operator<< (ostream&,String&); public: String(const char* str=NULL); //...........(char) String(const String &...转载 2018-07-24 14:11:31 · 165 阅读 · 0 评论 -
Windows网络体系结构总结
在介绍Windows网络体系架构之前,我首先介绍一下Windows中的两个重要编程规范——TDI,NDIS.,然后再介绍网络体系的架构。TDI,Transport Driver Interface,传输驱动程序接口。/Windows/System32/Drivers/Tdi.sys在实现网络API驱动程序时,由于牵涉到很多不同协议,会用到不同协议驱动提供的接口,使得开发的工作复杂化。所以Mic...转载 2018-07-24 10:11:57 · 1875 阅读 · 1 评论 -
使用内存映射文件
#include "stdafx.h"// 使用内存映射文件int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE hinstExePrev, LPSTR pszCmdLine, int nCmdShow){ BYTE bSomeByte, *pbFile; // 创建或打开文件内核对象 // 1标示要创建或者打开的文件的名...原创 2018-07-17 15:43:07 · 180 阅读 · 0 评论 -
error LNK2019: 无法解析的外部符号 _main,该符号在函数___tmainCRTStartup 中被引用
本人遇到的情况是用了_tmain这个宏定义,而未为其包含<tchar.h>头文件。其实,可以直接用main,就可以不用包含<tchar.h>头文件了。 解决办法: http://blog.163.com/anby1314125@126/blog/static/2887540420093953543843/ 本来程序是没有链接错误的。在vc2005下,单步...转载 2018-07-17 15:13:56 · 46601 阅读 · 3 评论 -
STDMETHOD详解
1、概述STDMETHOD,定义了一个返回HRESULT类型的虚方法2、简介#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method 其中,STDMETHODCALLTYPE定义了参数传递的方法类型,如下: #ifdef _WIN32 // Win32 doesn't support __export #define...转载 2018-07-10 09:44:00 · 766 阅读 · 0 评论 -
MFC CString 转换成CHAR数组
由于结构体中用到联合体(联合体需要确定分配内存分配大小)或其它因素,需要用char数组来保存字符串,但是在MFC中一般都是用CString来存放字条串。关于它们之间的转换,在VS2008中有时会出现异常情况。在MSDN是这样写的: CString orig("Hello, World!");// Convert to a char* const size_t newsize = 100...转载 2018-05-02 16:38:27 · 15128 阅读 · 3 评论 -
Python实例浅谈之三Python与C/C++相互调用
一、问题 Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结。二、Python调用C/C++1、Python调用C动态链接库 Python调用C库比较简单,不经过任何封装打包成so,再使用python的ctypes调用即可。(1)C语言文件:pycall.c/***gcc -o libpycall.so -shared -fPIC pyca...转载 2018-04-16 16:58:54 · 634 阅读 · 0 评论 -
Python调用C/C++动态链接库
Python调用C/C++动态链接库的需求在自动化测试过程中,难免会遇到语言混合使用的情况,这不,我们也遇到了。初步决定采用Robot Framework作为自动化测试框架后,其支持Java和Python,而Python作为主流的语言,怎么能放弃使用它的机会^_^。 然而产品采用是古老90年代开发的C/S结构,因为古老,当时也没有考虑到对产品的测试进行自动化,Client端并没有预留CLI(Com...转载 2018-04-16 12:05:55 · 297 阅读 · 0 评论 -
#pragma once与#ifndef两种防止头文件二次编译的区别
#ifndef这种是最早期使用的方法,是基于语言的宏定义名字不能冲突的前提下的。这种方法不仅能保证同一个头文件不会被包含两次,也可以保证内容完全相同的两个文件也只能被包含一次。但是他优缺点,就是你的#ifndef 后面跟的宏名字和你程序中的其他宏名字发生了”撞车“,那么会出现以下两种后果第一种:file1头文件中有一个宏//file1.h#define BOOK_H /转载 2017-12-13 12:11:19 · 183 阅读 · 0 评论 -
将数字转为中文金额的大写方式(C++版)
/** * 程序目的: * 从命令行接收一个数,并将其转化为中文金额的大写方式(C++版) * 例如 123.45 --> 壹佰贰拾叁元肆角伍分 * @author LovinChan * * 前一段时间做了个 Java 版的。突然有天心血来潮做个 C++ 版本的,实现的功能 * 跟 Java 版本的没什么区别,不过由于我对 C++ 的了解还不是很转载 2017-07-25 17:26:14 · 7157 阅读 · 2 评论 -
C 指针的理解
想想自己曾经学习C语言时,初次见到指针、地址,只能死记硬背,经过一段时间的软磨硬泡,终于有所收获,在此记录自己对C语言中地址、指针的理解。 推荐对C语言有一定理解的程序员阅读。 学习过C语言的程序员们,一定都知道“指针就是地址”的经典描述,到底如何理解指针就是地址。1. 内存长成啥样? 物理内存条由连续排列芯片组构成,在计算机中内存模型也被抽象为一组连续的存储空间,转载 2016-12-08 11:18:56 · 215 阅读 · 1 评论 -
C++ 析构 对象生成方式
一、 析构1 对于全局对象,程序一开始其构造函数就先被执行, 比程序进入点更早,程序即将结束前气息购函数被执行。2 对于局部对象,当对象诞生是,其构造函数被执行,当程序流程将离开改程序的存活范围时,其析构函数被执行3 对于静态static对象,当对象诞生时,其构造函数被执行,当程序结束时其析构函数才被执行,但比全局对象的析构函数早一步被执行。4 对于以NEW方式产生出来的局部对象,原创 2016-12-08 11:10:38 · 272 阅读 · 0 评论 -
C++ 继承 多态 虚函数 抽象
一、 继承1 如果你以一个“基类指针”指向“派生类对象”,那么经由该指针你只能调用基类所定义的函数2 如果你以一个“派生类指针”指向一个“基类指针” 你必须先做明显的转型操作。3 如果基类和派生类都定义了相同名称的成员函数, 那么通过对象指针调用成员函数是,到底调用到那一个函数,必须视该指针的原始类型而定。二、虚函数1 解决多态2 将接口和实现分开3 基类和子类有许多翻译 2016-12-08 10:39:16 · 242 阅读 · 0 评论 -
C++ 高版本打开低版本无法解析。。printf
vs2015打开VS2010的工程时,无法解析的外部符号 __imp___vsnprintf在vs2015工程选项,链接器附加依赖项里面添加legacy_stdio_definitions.lib即可。出现这个问题的原因是vs2015默认编译时将许多标准库采用内联方式处理,因而没有可以链接的标准库文件,所以要专门添加标准库文件来链接标准库中的函数。转载 2016-12-06 16:37:58 · 763 阅读 · 0 评论 -
C++ 创建ACCESS数据库的两种方式
一、 使用msadox.dll创建,不可引用#include HRESULT hr = S_OK; // 创建.MDB文件 命名为test //Set ActiveConnection of Catalog to this string CString strcnn(_T("Provider=Microsoft.JET.OLEDB.4.0;Data source = C:\\t原创 2016-12-08 14:58:45 · 7154 阅读 · 1 评论 -
VC 虚拟打印
虚拟打印机,ADOBE PDF// 打印PDF文件通过虚拟打印机BOOL CADDINSGYD00FEFE::PrintCappFile2Pdf(IOb_ObjectPtr objSource){ _variant_t varTemp; // 临时对象 CString strFileName; long nFileID; CString strFileID; CString原创 2016-11-15 11:02:36 · 1438 阅读 · 0 评论 -
VC 启动服务
#include else { SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT)); // 选择重试后重启hasp加密锁服务,并暂停10s 后登录 // 打开服务管理对象 SC_HANDLE hSC = ::OpenSCManager( NULL, NULL, GENERIC_EXECUTE); i原创 2016-11-17 09:58:20 · 623 阅读 · 0 评论 -
VC 调用JAVA
JAVA 程序public class workHome { public static String sayHello( String str ) { System.out.print( str + "\n" ); String strTocpp = "Hello ! 我是来自 Java 的 String !"; return strTocpp; }}原创 2016-11-10 11:43:27 · 1184 阅读 · 0 评论 -
VC http post 文件到服务器
首先引入 #include "afxinet.h"其次准备好HTTP POST服务器 STDMETHODIMP CPostPDFToA4::t5PostPDFToA4(BSTR strFileName, BSTR strFileFullPath, BSTR* pstrMsg){ AFX_MANAGE_STATE(AfxGetStaticModuleState()); // TODO原创 2016-11-07 17:16:23 · 2439 阅读 · 0 评论 -
判断字符串是否含有中文 C++
BOOL Search(CString str) // 这个是你传进来的,要检测的字符串{ for(int i=0; i { WCHAR h = str.GetAt(i); if( (h122) || h>0xfef7 || (h>90 && h57 && h return翻译 2016-04-08 16:06:29 · 3203 阅读 · 0 评论 -
正则表达式
用正则表达式限制只能输入中文: 1.用正则表达式限制只能输入全角字符: 2.用正则表达式限制只能输入数字:3.用正则表达式限制只能输入数字和英文:4.计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)String.prototype.len=function(){returnthis.replace([^\x00-\xff]/g,"aa").length;翻译 2016-04-08 15:46:06 · 1290 阅读 · 0 评论 -
VC 获取系统时间
1.使用CTime类CString str;//获取系统时间CTime tm;tm=CTime:: GetCurrentTime_r();str=tm.Format("现在时间是%Y年%m月%d日 %X");MessageBox(str,NULL,MB_OK);2: 得到系统时间日期(使用GetLocalT转载 2016-04-08 15:48:35 · 304 阅读 · 0 评论