自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 资源 (6)
  • 收藏
  • 关注

原创 ON_COMMAND&ON_MESSAGE&ON_NOTIFY

ON_COMMAND是菜单和工具栏项处理消息的宏 ON_MESSAGE是处理自定义消息的宏 ON_NOTIFY 是控件向其父窗口发送消息处理的宏 对这几个消息的理解要先了解一下Window消息的背景。 在Windows3.1里,控件会将mouse, keybord等等的消息通知它的父窗口,使用的消息就只有WM_COMMAND, 事件种类和控件ID被包含在wP...

2020-05-08 17:36:13 171

转载 C++编程——多线程

一、几个重要函数1、WaitForSingleObject()2、CreateThread/_beginthreadex3、CreateEvent4、SetEvent二、概念1、线程、进程说到多线程编程,那么就不得不提并行和并发,多线程是实现并发(并行)的一种手段。并行是指两个或多个独立的操作同时进行。注意这里是同时进行,区别于并发,在一个时间段内执行多个操作。在单核时代,多个线程是并发的,在一个...

2020-05-08 17:33:21 945

原创 MFC中关于基于对话框的应用程序的WM_COMMAND消息的流动路径

网上面很多关于WM_COMMAND消息在基于文档视图模型的APP中的流动方向的讲解,但是我在项目中做的都是基于对话框的APP,所以这里就只介绍WM_COMMAND在对话框中的流动方向。如果对话框里有个按钮,鼠标在按钮上点击后所发生的事情如下:1.鼠标在按钮上点击一下。2.系统产生WM_LBUTTONDOWN消息和WM_LBUTTONUP消息。说明:如果这两个消息都在在按钮上触发的(即使在按钮上按下...

2020-05-08 17:30:38 158

原创 WM_COMMAND与消息的传递

MFC将消息分为三大类:①命令消息WM_COMMAND:凡是由CCmdTarget派生的类,均可接收该消息。②标准消息WM_xxx:凡是由CWnd派生的类,均可接收该消息。③控件通知消息WM_NOTIFY/WM_COMMAND:由控件产生,为的是向其父窗口发送通知。Windows9x及以上控件传送的是WM_NOTIFY,而老版本控件为了兼容,依然传送WM_COMMAND。注...

2020-05-08 17:29:30 202

原创 C++ std::copy用法

如果要把一个序列(sequence)拷贝到一个容器(container)中去,通常用std::copy算法,代码如下:std::copy(start, end, std::back_inserter(container));这里,start和end是输入序列(假设有N各元素)的迭代器(iterator),container是一个容器,该容器的接口包含函数push_back。假设container...

2020-05-08 17:29:10 316

原创 c++线程中的几种锁

这个是在中兴面试中被面试问到的一个题“你知道线程中的自旋锁么?”,我当时一脸懵逼,不知道。回来后整理下,在这里对线程中的锁进行一个学习。线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,锁的功能越强大,性能就会越低。1、互斥锁互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。也就是说是为了避免多个线程在某一时刻同时操作一个共享资源。例如线程池中的有多个空闲线程和一个任务...

2020-05-08 17:28:06 105

原创 打印耗时信息

【方法之一】CTime ctimestart = ::GetCurrentTime();//add by yuan.wang20171107/****要测试的耗时代码*******/CTime ctimeend = ::GetCurrentTime();CTimeSpan span = ctimeend - ctimestart;int sss = span.GetTotalSeconds();/...

2020-05-08 17:25:34 303

原创 耗时计算

【方法之一】CTime ctimestart = ::GetCurrentTime();//add by yuan.wang20171107/****要测试的耗时代码*******/CTime ctimeend = ::GetCurrentTime();CTimeSpan span = ctimeend - ctimestart;int sss = span.GetTotalSeconds...

2020-05-08 17:23:59 563

原创 windows消息分类

众所周知Windows基于事件驱动机制的操作系统,消息对于操作系统来说就像鱼与水的关系。Windows的消息分类有很多种类,今天我们只谈一种比较有用的Windows消息分类,可分为三类,分别是标准消息、命令消息和通告消息。(一)标准消息所有的以WM_开头的消息都是标准消息,除了WM_COMMAND消息除外,所有从CWnd派生的类都可以接收标准消息,包括CWnd本...

2020-05-08 17:23:46 204

原创 windows消息的机制分析理解

Windows 消息机制浅析1.Windows 的历史中国人喜欢以史为鉴,而事实也确实是,如果你能知道一件事情的来龙去脉,往往可以更容易地理解事物为什么会表现为当前这样的现状。所以,我的介绍性开场白通常会以一段历史开始。不过,我不会以精确到年月日的那种方式详细讲述,而是选取几个对我们的编程生涯有重要影响的关键点。Windows 是真正的图形化界面操作系统的普及者,无论任何人,争夺什么...

2020-05-08 17:23:24 158

原创 windows消息机制分析

消息分类与消息队列Windows中,消息使用统一的结构体(MSG)来存放信息,其中message表明消息的具体的类型,而wParam,lParam是其最灵活的两个变量,为不同的消息类型时,存放数据的含义也不一样。time表示产生消息的时间,pt表示产生消息时鼠标的位置。按照类型,Windows将消息分为:(0) 消息ID范围系统定义消息ID范围:[0x0000, 0x03ff]用户自定义的消息ID...

2020-05-08 17:21:03 108

原创 GetWindowLong VS SetWindowLong

今天在看一个代码里头写了GetWindowLong (hwnd, 0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第2个参数为0是指什么,MD,很恼火,最近终于在一个国外网站找到,我在这篇文章贴了,网站是http://www.codeguru.com/forum/archive/index.php/t-243778.html先收集所有关于此函数的使用方法以及程序代码希望后来的人看到我的...

2020-05-08 17:18:28 114

原创 OPC的数据访问方法分别有同步访问、异步访问和订阅式

OPC的数据访问方法分别有同步访问、异步访问和订阅式数据采集方式三种。1 同步数据访问方式OPC服务器把按照OPC应用程序的要求得到的数据访问结果作为方法的参数返回给OPC应用程序,OPC应用程序在结果被返回之前必须处于等待状态。同步访问特点为:读取指定OPC标签对应的过程数据时,应用程序一直要等到读取完为止;写入指定OPC标签对应的过程数据时,应用程序一直等待写入完成为止。当客户数据较少而且同服...

2020-05-08 17:17:50 398

转载 OPC——(同步读取和异步读取)

注:1、博主地址为https://blog.csdn.net/u014801367/article/details/433092312、博主的opc系列文章和我们软件IOServer通过opc方式采集数据机制完全一样,可作为学习参考用笔者博客里曾经转载过一篇关于OPC同步读取、异步读取和OPC订阅的区别的博客,其中讲的比较详细,笔者就不再过多的赘述这些内容,总之,同步读取是客户端在发出读取请求...

2020-05-08 17:17:31 1656

原创 OPC采集程序流程

2020-05-08 17:16:55 328

原创 修改资源或版本信息导致 error RC2135 链接错误

修改文件的版本信息后会出现“error RC2135 链接错误”,提示找不到xxx.tlb文件。\KRDBTagSelect.rc(139) : error RC2135 : file not found: KRDBTagSelect.tlb利用文件比较器,打开rc文件的代码后发现,.rc文件和之前的文件文件名不匹配。解决方式:下次如果通过资源管理器更改版本号等资源信息时,如果出现类似问题,最好的...

2020-05-08 17:15:43 352

原创 创建添加对话框的Activex

1.ActiveX的基本概念ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。这个容器包括WEB网页,应用程序窗体等。。。 ActiveX控件的后缀名是OCX或者DLL。一般是以OCX和动态库共存的形式打包成cab或者exe的文件放在服务器上,客户端下载后运行安装cab或exe解压成OCX和动态库共存...

2020-05-08 17:14:56 163

原创 关闭一个进程的方法

//begin add by yan.wang,task[],2018/3/30DWORD CMainFrame::GetProcessIDFromName( const wchar_t *InputProcessName ){ DWORD aProcesses[ 1024 ]; DWORD cbNeeded; DWORD cProcesses; unsigned int i; HA...

2020-05-08 17:12:57 138

原创 程序闪退出现的原因

1.空指针:对象没有初始化就使用了;2.空函数:有事件源但没有对应的事件对象;3死循环:没有合理的循环控制流;4.内存泄露:同一个对象不停地开辟,而且没有释放;5.内存溢出:程序所消耗的内存大于硬件提供的内存;6.网络:异步加载时提前调用了数据(现象是在弱网时,根源是空指针);7.界面UI:像拍照没有附加于ControlView;8.主线程:需要主线程执行的,放于子线程里执行了。比如:网络电话--...

2020-05-08 17:12:29 509

原创 如何使用windbg抓取程序的方法

windbg是在windows平台下,强大的用户态和内核态调试工具。相比较于Visual Studio,它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,但是其调试功能,却比VS更为强大。它的另外一个用途是可以用来分析dump数据。下面分享一下如何使用windbg。  步骤一:设置WinDbg抓取环境。(将该工具设置为默认的崩溃截取工具,一旦产生崩溃,自动跳出该工具)  WinDbg...

2020-05-08 17:12:14 400

原创 远程调试

准备工作:1、 标机安装远程调试工具2、 调试机和目标机在同一网段(同一局域网)3、目标机配置:(1)选择对应版本的远程工具(根据调试的代码是x64位还是win32位)(2)设置远程工具第一种:直接F5运行调试机设置:第二种:Attach...

2020-05-08 17:11:46 106

原创 release调试配置

2020-05-08 17:11:18 596

原创 树形结构添加删除节点

1.树形控件的通知消息树形控件的通知消息有很多,TVN_SELCHANGING和TVN_SELCHANGED:在用户改变了对树节点的选择时,控件会发送这两个消息。消息会附带一个指向NMTREEVIEW结构的指针,程序可从该结构中获得必要的信息。两个消息都会在该结构的itemOld成员中包含原来的选择项信息,在itemNew成员中包含新选择项的信息,在action成员中表明是用户的什么行为触发了该...

2020-05-08 17:10:53 399

原创 MFC中UpdateData函数的使用解释

解释之一当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用 UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了什么,就应该在访问变量前调用UpdateData(TRUE)。用处:主要控制ddx_data把控件中的值和变量进行交换比如你有个编辑框,输入了一些值,你的程序怎么得到呢;必须先调用...

2020-05-08 17:09:19 401

原创 c++类的构造函数两种初始化成员方式的区别

类的构造函数在初始化成员时,有以下两种方式:方式一:CSomeClass::CSomeClass(){ x=0; y=1;}方式二:CSomeClass::CSomeClass() : x(0), y(1){}方式一我们可以称为赋值初始化,通过在函数体内进行赋值初始化。方式二我们称为列表初始化,在冒号后使用初始化列表进行初始化。这两种方式的主要区别在于:对于在函数体中初始化...

2020-05-08 17:08:57 161

原创 MFC控件使用-CTabCtrl

使用过属性表和属性页控件的人,使用感觉方便的同时,又感觉困惑。能不能改变属性页标签的位置,比如放在窗体的左侧,能不能制作出漂亮的界面。这些问题完全可以由CTabCtrl解决。 网上详细讲解这个控件文章很少,大多讲的比较基础。最近做一个项目要用到,因此就好好学习了,写了来供交流。引用请注明出处:1、CTabCtrl控件概观CTabCtrl类是MFC类CWnd类的子类。类的层次结构如图1所示。C...

2020-05-08 17:08:04 303

原创 MFC编程中CTime各种格式转换

MFC编程中CTime各种格式转换(一)获得当前日期和时间,并可以转化为 CStringCTime tm=CTime::GetCurrentTime();CString str=tm.Format("%Y-%m-%d");或者SYSTEMTIME systemTime;::GetLocalTime(&systemTime);CTime cTimeNow(systemTime);// 还有一...

2020-05-08 17:07:31 315

原创 C++线程同步方式——互斥对象锁和临界区锁性能比较

在Win32平台上进行多线程编程,常会用到锁。下边用C++实现了互斥对象(Mutex)锁和临界区(CRITICAL_SECTION)锁,以加深理解和今后方便使用。代码已在VS2005环境下编译测试通过。Lock.h[cpp]view plaincopy#ifndef_Lock_H#define_Lock_H#include<windows.h>//...

2020-05-08 17:07:08 330

原创 C++多线程——生产者与消费者模型

条件变量的提出首先要涉及一个概念,就是生产者消费者模型:生产者消费者,是在多线程同步的一个问题,两个固定大小缓冲区的线程,在实际运行是会发生问题,生产者是生成数据放入缓冲区,重复过程,消费者在缓冲区取走数据。生产者消费者的模型提出了三种关系,两种角色,一个场所三种关系:- 生产者之间的互斥关系- 消费者之间的竞互斥关系- 生产者和消费者之间互斥和同步关系(同一时刻只能有一个,要么在生产,要么...

2020-05-08 17:06:01 231

原创 C++多线程——线程同步

为什么要进行线程同步?  在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解。正常情况下对这种处理结果的了解应当在其处理任务完成后进行。  如果不采取适当的措施,其他线程往往会在线程处理任务结束前就去访问处理结果,这就很有可能得到有关处理结果的错误了解。例如,多个线程同时访问同一个全局变量,如果都是...

2020-05-08 17:05:21 322

原创 C++线程同步(互斥&协同)

参考博客:http://www.cnblogs.com/kennyMc/archive/2012/12/15/2818887.html 互斥量进行线程同步,与关键段和事件的区别参考博客:http://www.cnblogs.com/xilentz/archive/2012/11/13/2767317.html 四种进程或线程同步互斥的控制方法线程同步解决多线程并发问题;几种内核对象...

2020-05-08 17:04:06 195

原创 线程同步问题总结与比较

一、代码实例分析【举例之一】转自:https://blog.csdn.net/s_lisheng/article/details/74278765/********************************** 线程同步举例之一**********************************/// #include<windows.h>// #include&lt...

2020-05-08 17:03:37 129

原创 批量注册与反注册ocx控件

一、批量注册@echo off :: BatchGotAdmin :------------------------------------- REM --> Check for permissions >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\conf...

2020-05-08 17:01:21 360

原创 CString 与std::wstring 相互转化

1、CString转std::wstringCString filename;(1)std::wstring str = filename.GetString();//没试过(2)std::wstring (filename);2、std::wstring转CStringstd::wstring filename;CString str( filename.c_str() ...

2020-05-08 17:01:02 866

原创 MFC CDateTimeCtrl 控件转CString

1、CTime 转 CStringCTime date; CTime time; m_DateCtrl.SetFormat(_T("yyyy/MM/dd ")); m_TimeCtrl.SetFormat(_T("hh:mm:sstt")); m_DateCtrl.GetTime(date); m_TimeCtrl.GetTime(time); CStrin...

2020-05-08 17:00:48 227

原创 vs2010更换主题教程

------------------------------------------------------------------------------------------------------------------------------------------- 工欲善其事,必先利其器!作为宇宙最强IDE,Visual Studio的每个版本的相较之前的版本都有相对人...

2020-05-08 17:00:05 2526

原创 MFC控件跟随对话框自适应大小

对话框的大小变化后,假若对话框上的控件大小不变化,看起来会比较难看。下面就介绍怎么让对话框上的控件随着对话框的大小的变化自动调整。首先明确的是Windows有一个WM_SIZE消息响应函数,这个函数在对话框大小发生变化的时候调用,所以我们可以记录下原来对话框的大小,还有当前对话框的大小(这个不用自己算,系统已给出),然后根据控件做出相应比例的调整。比如原来对话框大小为a,现在为...

2020-05-08 16:59:20 795 1

原创 编译时出现,不允许使用抽象类型的对象,错误的原因

1、如果你的抽象类的派生类有任何一个纯虚函数没有实现,那么不管其他做的再多,这个类仍然是一个抽象类2、派生类中的实现中一定要保证他所继承的基类中的纯虚函数都被实现了,不管继承多少代,只要基类中存在的纯虚函数没有的继承类中完全实现完...

2020-05-08 16:58:55 1222

原创 远程连接服务器数据库报错:Host ‘XXXXXX’ is blocked because of many connection errors

原因:同意ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)终端的数据库连接而导致的阻塞;由于MYSQL数据库的参数:max_connect_errors(系统默认10) mysqld已经得到了大量(max_connect_errors)的主机’hostname’的在中途被中断了的连接请求累计超过10次,就再也无法连接上mysqld服务,同一个...

2020-05-08 16:58:35 208

原创 OCX控件自适应缩放控价

1、在xxxDlg.h文件中添加成员变量CList<CRect,CRect&> m_listRect; 2、在xxxDlg.cpp文件中初始化函数中添加如下代码CRect rect; GetWindowRect(&rect); m_listRect.AddTail(rect);//对话框的区域 CWnd* pWnd = GetWindow(...

2020-05-08 16:57:54 129

Windows平台VLC视频播放器

Windows平台VLC视频播放器

2024-10-28

QMediaPlayer播放视频demo

QMediaPlayer播放视频demo

2024-10-28

C++静态库和动态库的导入导出demo

C++静态库和动态库的导入导出demo

2023-07-07

MQTTv1.3.10源码

包含paho.mqtt.c-master和paho.mqtt.cpp-master。版本为从gihub上下载的截止当前上传时间的最新版本

2022-07-29

MQTT编译工具+vs2017&&vs2019编译后的32位&&64位库+Cmake生成的VS17和19工程+MQTT源码

1、包含最新版本MQTT源码 2、包含编译过程使用的各种工具(32位\64位 OPenSSL、Cmake) 3、包含Cmake生成的VS2017和VS2019工程(32位、64位都有) 4、包含已经编译好的MQTT库(32位、64位都有),可以直接使用 5、包含使用编译好的库开发的demo,使用vs2017可以直接运行

2022-07-29

VS2017&&VS2019编译生成的32位MQTT库

包含vs2017和vs2019编译生成的32位MQTT静态库,静态库可以直接使用。也可以通过下载vs打开工程自己编译

2022-07-29

VS2017&&vs2019编译生成的64位版本MQTT库

压缩包中的mQTT库可以直接使用,同时也包含VS2017和VS2019的工程,可以自己使用vs编译

2022-07-29

编译MQTT库所需要的工具包(OPenSSL、Cmake)

包含32位和64位版本的OpenSSL、Cmake工具

2022-07-29

win7系统性能计数器配置.docx

win7系统性能计数器使用及配置方式,用于测试过程中出现的句柄泄漏、内存增长,通过绘制曲线,从而直观的了解曲线走势

2019-11-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除