C/C++/MFC
文章平均质量分 63
N阶魔方
程序 = 数据结构 + 算法,而且数据结构在前,这对菜鸟来说是一句空话,但是对大神来说就是看透本质。
展开
-
CLion常用快捷键大全汇总
(Getters, Setters, Constructors, hashCode/equals, toString)(如果. .其他,试试. .catch, for, synchronized等)Alt+Right Arrow/Left Arrow 转到下一个/上一个编辑器选项卡。Arrow/Right Arrow 向后/向前导航。Arrow/Down Arrow 父类方法/超类。基本代码完成(任何类、方法或变量的名称)关闭活动运行/信息/发现/…移动到代码块结束/移动到代码开始。原创 2022-11-30 15:26:41 · 10848 阅读 · 0 评论 -
C++ 多线程编程(二):pthread的基本使用
pthread中的p是POSIX的缩写,而POSIX是Portable Operating System Interface的缩写,是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称。(Windows环境下无pthread,Linux GCC4.6以下编译需加-pthread编译选项)std::thread是C++11中的新特性,将多线程程序的编写提升到了语言层面,使得编写的多线程程序的可移植性大大提高。转载 2022-10-26 09:59:11 · 16120 阅读 · 2 评论 -
C++ 多线程编程(一):std::thread的使用
说到多线程编程,就不得不提并行和并发,多线程是实现并发和并行的一种手段。并行是指两个或多个独立的操作同时进行。并发是指一个时间段内执行多个操作。在单核时代,多个线程是并发的,在一个时间段内轮流执行;在多核时代,多个线程可以实现真正的并行,在多核上真正独立的并行执行。例如现在常见的4核4线程可以并行4个线程;4核8线程则使用了超线程技术,把一个物理核模拟为2个逻辑核心,可以并行8个线程。C++11之前,window和linux平台分别有各自的多线程标准,使用C++编写的多线程往往是依赖于特定平台的。转载 2022-10-26 09:55:19 · 22590 阅读 · 1 评论 -
VS 多线程调试和多线程DLL调试选项功能
如果是动态链接(MD/MDd),你的程序就依赖C运行时的动态链接库(比如VS2010的msvr100.dll),当你的程序在其他没有这个dll的电脑上运行就会出现错误(找不到这个dll)。标准WINDOWS库和DLL中使用MFC,都是使用动态链接,那么对应选选择多线程DLL选项,对于静态库中使用MFC,那么对应的调试选项选择多线程既可。如果是静态链接(MT/MTD),C运行库直接链接到你的程序里,你的程序就不依赖C运行时库的dll了。原创 2022-09-11 19:37:03 · 1430 阅读 · 0 评论 -
GCC and MinGW-w64 for Windows
传统上,MinGW-w64 编译器使用 MSVCRT 作为运行时库,它在所有版本的 Windows 上都可用。尽管 GCC 和 MinGW-w64 可以在其他平台(例如 Linux)上用于生成 Windows 可执行文件,但 WinLibs 项目只专注于构建在 Windows 上本地运行的版本。(GNU Compiler Collection)是一个免费的开源编译器,适用于 C 和 C++(以及其他语言,如 Objective-C、Fortran、D)。......原创 2022-08-05 22:46:10 · 6410 阅读 · 0 评论 -
PCL(Point Cloud Library)点云库
引言:PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。支持多种操作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。如果说OpenCV是2D信息获取与处理的结晶,那么PCL就在3D信息获取与处理上具有同等地位,PCL是BSD授权方式,可以免费...转载 2021-08-16 14:59:59 · 490 阅读 · 0 评论 -
通过域名获取IP地址 C/C++
// test1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <Winsock2.h> #include <ws2tcpip.h> #include <iostream> #include <string> using namespace std; #pragma comment(lib, "Ws2_32.lib") /***********************.原创 2021-06-08 23:04:28 · 547 阅读 · 0 评论 -
C++ std::wstring 互转 std::string
1、std::wstring 转 std::stringstring WstringToString(const std::wstring wstr){#if 1 std::string result; int len = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), wstr.size(), NULL, 0, NULL, NULL); if( len <= 0 ) return result;原创 2020-09-12 18:49:26 · 2103 阅读 · 0 评论 -
VS无法找到引用LIB路径解决方法
引用第三库时时,VS编译可以正常通过,到链结环节,报错,打不到指定的xxxxx.lib, 解决方案如下:1.直接修改引用处,修改为绝对路径2. 无需更改上图信息,直接更改VS配置,指明lib所在目录,可以使用相对路径,比较灵活...原创 2020-08-22 23:48:45 · 3725 阅读 · 0 评论 -
MFC CString to c++ stl string and string to CString
#include <string>using namespace std;string toString(CString cs){#ifdef _UNICODE //如果是unicode工程 USES_CONVERSION; std::string str(W2A(cs)); return str;...原创 2020-04-08 11:20:35 · 157 阅读 · 0 评论 -
typedef用法及使用模板
Typedef声明有助于创建平台无关类型,能隐藏复杂和难以理解的语法,使代码更加简单和易读。用法1、用typedef来定义与平台无关的类型typedef unsigned long DWORD;typedef int BOOL;typedef unsigned char BYTE;typedef int* ...原创 2018-02-24 17:52:10 · 1544 阅读 · 0 评论 -
C++难点汇总
1、单重继承、多重继承格式及构造函数值传递2、STL常用输入输出流及使用方法。3、运算符重载。4、C++模板编程。1、单重继承、多重继承格式及构造函数值传递一、单重继承class 派生类名: public 基类名{ // 基类构造值传递格式1 构造函数(基类参数1,基类参数2,本类参数1,本类参数2,...):基类名( 基类参数1, 基类参数2 ) { 本类数据成员1 = 本类参...原创 2018-02-22 21:21:57 · 2215 阅读 · 0 评论 -
#define使用方法及模板
1. 简单的 define 定义 #define PI (3.1415926)2. 带参数的宏定义 #define MAX(a,b) ((a) > (b) ? (a) : (b))3. define 字符串连接以及变量名分段联结用法 #define A(x) ##x #define ...原创 2018-02-24 20:01:38 · 2215 阅读 · 0 评论 -
mfc inifile unicode mode读取方法
CString cResult; CString cTemp; int nSize = 256; GetPrivateProfileString(_T(“qqq”), _T(“SRC”), NULL, cTemp.GetBufferSetLength(nSize), nSize, cPath); cResult = cTemp.GetBuffer(1);原创 2017-12-16 19:01:04 · 479 阅读 · 0 评论 -
Interlocked原子访问系列函数
所谓原子访问,指的是一个线程在访问某个资源的同时能够保证没有其他线程会在同一时刻访问同一资源。Interlocked系列函数提供了这样的操作。所有这些函数会以原子方式来操控一个值。Interlocked函数的工作原理取决于代码运行的CPU平台,如果是x86系列CPU,那么Interlocked函数会在总线上维持一个硬件信号,这个信号会阻止其他CPU访问同一个内存地址。我们必须确保传给这些函数的...转载 2019-05-26 16:39:22 · 2448 阅读 · 0 评论 -
MFC CComboBox焦点和下拉框长宽
一、ComboBox的焦点时的CWnd指针 用GetFocus()函数来取得当前对话框的焦点控件CWnd指针,然后与要对比控件CWnd进行比对。 //判断焦点是否在编辑框IDC_EDIT_BOX内。 if( GetFocus( ) == GetDlgItem(IDC_EDIT_BOX) )原创 2017-06-10 12:06:36 · 2126 阅读 · 0 评论 -
cout格式化输出常用函数及标志汇总
表1 用于控输出格式的流成员函数及控制符流成员函数作用相同的控制符作用precision(n)setprecision(n)设置实数的精度为n位width(n)setw(n)设置字段宽度为n位fill(c)setfill(c)设置填充宇符csetf(ios::state)setiosflags(ios::state)设置输出格式状态,括号中应给出格式状态,内容与控制符setiosflags括号中的...转载 2018-04-20 16:30:11 · 1317 阅读 · 0 评论 -
Win32 API下的多线程编程
Win32 API是Windows操作系统内核与应用程序之间的界面,它将内核提供的功能进行函数包装,应用程序通过调用相关函数而获得相应的系统功能。为了向应用程序提供多线程功能,Win32 API函数集中提供了一些处理多线程程序的函数集。直接用Win32 API进行程序设计具有很多优点: 基于Win32的应用程序执行代码小,运行效率高,但是它要求程序员编写的代码较多,且需要管理所有系统提供给...原创 2018-05-28 21:29:13 · 1611 阅读 · 0 评论 -
C/C++ #define 宏定义用法举例
原创 2018-09-15 22:10:12 · 482 阅读 · 0 评论 -
Memory内存操作函数
一、malloc/calloc 名称: malloc/calloc 功能: 动态内存分配函数 头文件: #include<memory.h> 函数原形: void*malloc(size_tsize); void...转载 2019-05-16 18:18:28 · 4221 阅读 · 0 评论 -
C++中volatile关键字的使用详解
1,为什么使用volatile ? C/C++中的 volatile 关键字 和const对应,用来修饰变量,通常用于建立语言级别的memory barrier。这是BS在“The C++ Programming Language”对volatile修饰词的解释:A volatile specifier is a hint to a compiler that an obje...转载 2019-05-26 16:04:51 · 8482 阅读 · 0 评论 -
C/C++预编译指令之基础大全
一 #指令 单纯一个#号表示空指令,没有任何作用。二 #include指令 #include <xxx.h> #include "xxx.h"三 #define、#undef指令 #define 标识宏名 #undef 取消定义的宏 #define PI 3.14 ...原创 2019-06-17 10:28:37 · 6530 阅读 · 1 评论 -
MFC列表控件CListCtr使用方法
最近使用列表控制,显示图标和图片。范了一个错误,导致了图片一直没有显示出来。最后查明的原因是CImageList声明为局部变量,函数执行完成后,局部变量在内存中被释放,无法显示图标。 正确的CListCtr创建手顺如下: 一、在工具栏中托出更表控件,放在对话框中。 二、左键单击列表控制,选择追加变量,在向导中写入名称后,在头文件件自动生成成员变量名称。原创 2016-10-14 23:22:41 · 1834 阅读 · 0 评论 -
MFC应用程序WinMain函数
Microsoft Visual Studio 14.0\VC\atlmfc\src\mfc\appmodul.cpp------------------------------------------------------------------------------------extern "C" int WINAPI_tWinMain(HINSTANCE hInstanc原创 2017-05-21 21:31:21 · 1779 阅读 · 0 评论 -
C++虚函数及其应用
一、虚函数 C++类中的虚函数机制直接实现多态。虚函数与普通成员函数的区别是类对其管理的方法不同。虚函数由虚拟函数表进行管理。虚拟函数表记录的为最后被重写的函数的地址。二、虚函数使用条件 1,有继承。 (父类定义虚函数,子类继承。) 2,有对虚函数使用。 (类中调用的父类方法中含有虚函数的调用,或实例直原创 2017-05-20 23:08:07 · 729 阅读 · 0 评论 -
MFC中CString与int、float、Char*的转换
一、引言: 处理数据时,我们经常要用MessageBox来查看具体的数值,Debug处理时,也需要把数据转化为字符串类型数据后,才可以正常输出到Log文件中,从UI控件接收的字符串也需要转化为具体的数据后,才能在程序中进行运算处理。因此,字符串与数据间的相互转换在实际的编程过程中经常用到。二、转化实例 1,CString --> int原创 2017-05-25 21:22:38 · 2241 阅读 · 0 评论 -
与窗口SIZE相关的常用WIN API
一、 GetClientRect & GetWindowRect GetClientRect 获取窗口客户区(不包括非客户区)在客户区坐标系下的RECT坐标,可以得到窗口的大小。GetWindowRect 获取窗口在屏幕坐标系下的RECT坐标(包括客户区和非客户区),这样可以得到窗口的大小和相对屏幕左上角(0,0)的位置。转载 2016-10-16 21:39:00 · 1069 阅读 · 0 评论 -
CWnd的常用成员函数
1.句柄转为CWND对象(1)FromHandle和GetDlgItem:产生一个临时性窗口指针,只限于在当前函数内使用;(2)Attach和Detach成对使用为一个CWnd对象嫁接和移除窗口句柄。只用attach在摧毁窗口时会出现错误;(3)SubclassWindow和UnSubclassWindow,子类化和反子类化,还能通过子类接收窗口消息;(4)SubclassDl转载 2016-10-16 21:13:52 · 1368 阅读 · 0 评论 -
MFC CWinThread Class成员变量及成员函数
一、概要 CWinThread类封装了对线程的操作,一个CWinThread对象代表在应用程序中一个线程的执行。在MFC应用程序中,主执行线程是CWinThread派生类CWinApp的派生类对象。由CWinApp类派生的新类都是用户界面线程。二、类图位置 三、多线程的实现方法四、CWinThread头文件class CWinT原创 2016-10-16 20:43:32 · 1518 阅读 · 0 评论 -
MFC CCmdTarget Class成员变量及成员函数
该类派生于CObject,它封装了MFC的消息映射机制,希望接收系统事件和窗口消息的类都从它派生,如CDocument和CWnd分支。此外,在系统繁忙,无法响应窗口消息时,鼠标光标应该显示为沙漏形等待状态,CCmdTarget类封装了3个成员函数完成该功能。CCmdTarget类以一种类似消息映射的机制提供IDispatch接口,所以使用MFC可以轻松地编写AUTOMATION客户程序和组件。原创 2016-10-16 17:55:26 · 1297 阅读 · 0 评论 -
MFC CWinApp Class成员变量及成员函数
一,概要说明 CWinApp派生于CWinThread类。在头文件afxwin.h中定义,在用户定义的类CUserApp theApp;初始化时优先于Main函数执行CWinApp构造函数。MFC库提供下列全局函数来访问你的CWinApp对象和其它全局信息:AfxGetApp 获得CWinApp对象指针。AfxGetInstanceHandle 获得当前应用程序原创 2016-10-16 14:56:35 · 1934 阅读 · 0 评论 -
MFC类结构图6.0
第一部分第二部分原创 2016-10-13 22:25:19 · 1377 阅读 · 0 评论 -
标准库vector容器和bitset容器类型
一、vector用法 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 1.文件包含: #include using namespace std; 2.变量声明:原创 2016-11-03 17:37:09 · 697 阅读 · 0 评论 -
神来之笔之傅里叶变换(频谱)
注:感谢作者的无私分享,中国的教科书总是通过叫别人看不懂来显示著书者的水平,为什么影印版的书就那么深入浅出呢。一、引子 我保证这篇文章和你以前看过的所有文章都不同,这是12年还在果壳的时候写的,但是当时没有来得及写完就出国了……于是拖了两年,嗯,我是拖延症患者…… 这篇文章的核心思想就是: 要让读者在不看任何数学公式的情况下理解傅里叶分析。 傅里叶分转载 2016-10-22 15:57:45 · 5901 阅读 · 3 评论 -
C/C++/C# 基础知识体系框架图
一、C构架图 二、C++构架图 三、C#架构衅原创 2016-09-10 22:22:53 · 5744 阅读 · 0 评论 -
MFC 父窗口中显示子对话框的作业流程
一、在资源中添加一个将要显示子对话框。 1、属性栏里Visible项设置为true 2、属性栏里style 项设置为child 3、属性栏里border 项设置为none原创 2016-05-16 22:11:52 · 1322 阅读 · 0 评论 -
MFC多线程编程总结
在MFC程序中使用AfxBeginThread函数来创建一个线程,该函数因参数不同而具有两种重载函数,分别对应工作者线程和用户接口(UI)线程。一、工作线程1,创建线程MFC API函数CWinThread*AfxBeginThread(AFX_THREADPROCpfnThreadProc, //线程函数LPVOID pParam, //传递给控制函数的参数int n原创 2016-11-20 12:48:30 · 5845 阅读 · 0 评论 -
INI文件的创建与读取方法
ini文件(即Initialization file),这种类型的文件中通常存放的是一个程序的初始化信息。ini文件由若干个节(Section)组成,每个Section由若干键(Key)组成,每个Key可以赋相应的值。读写ini文件实际上就是读写某个的Section中相应的Key的值,而这只要借助几个函数即可完成。一、向ini文件中写入信息的函数 1. 把信息写入系统的wi原创 2016-12-04 23:43:25 · 14540 阅读 · 2 评论 -
注册表及其CRegKey类
一,注册表简介 有时程序中要存些设置信息,一个方法就是创建一些普通的txt或xml文件,然后保存进去就行了.另一办法就是保存到注册表里.注册表是由windows维护的一个小数据库.里面也会保存windows本身的很多配置信息.我们在命令行通过regedit可以手动打开注册表查看相关信息.在页面上我们会看到左边有很多树形结构的内容,我们可以简单的把它等同于目录. 最转载 2017-04-23 22:22:58 · 963 阅读 · 0 评论 -
CTime与CTimeSpanの使い方
MFC/ATLにはCTimeとCTimeSpanという便利なクラスが用意されています。これを使うと時間の管理や計算が柔軟にできるようになります。 時刻というのは、時間軸上のある1点をあらわしますが、CTimeはこの時刻を保持します。CTimeが保持するのは絶対時刻です。 これに対して、CTimeSpanは、ある時刻とある時刻の差分を保持します。すなわち相対時刻です。ある時刻とある時刻が時間原创 2017-03-26 13:46:15 · 855 阅读 · 0 评论