
C++
文章平均质量分 66
c++语法和应用。
WaitFoF
没有太晚的开始,不如就从今天行动。
总有一天,那个一点一点可见的未来,会在你心里,也在你的脚下慢慢清透。
生活,从不亏待每一个努力向上的人。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MFC——SkinMagic皮肤使用说明
文章目录1. 插件文档2. 使用说明2.1 项目字符集选择:未设置2.1.1 使用方法2.1.2 存在问题2.2 项目字符集选择:UNICODE2.2.1 使用方法2.2.2 存在问题3. 皮肤信息说明1. 插件文档2. 使用说明2.1 项目字符集选择:未设置2.1.1 使用方法首先建立自己的MFC程序;将SkinMagicTrial.lib、SkinMagicTrial.dll和SkinMagicLib.h拷贝到项目根目录下;把Skins文件夹放在项目根目录下;将Ski原创 2021-01-28 17:14:07 · 1706 阅读 · 0 评论 -
VS2019+OpenGL配置:绘制3维图
文章目录1. 准备工作1.1 查看OpenGL版本1.2 Windows上的OpenGL库1.3 建一个文件夹OpenGL1.4 创建一个新项目OpenGLMFCTest2. GLFW2.1 下载和配置2.2 验证3. GLAD3.1 下载和配置3.2 验证4. GLM4.1 下载和配置4.2 验证5. GLUT5.1 下载和配置5.2 验证6. GLEW6.1 下载和配置6.2 验证7. 实例演示Debug+x64版Release+x64版最近需要在MFC上面画3维图,记录一下配置OpenGL库的过程。原创 2020-10-28 22:54:49 · 7300 阅读 · 8 评论 -
High-speed Charting Control 控件使用
最近使用High-speed Charting Control 控件实时绘制波形,总结一下有用的资源:High-speed Charting Control控件的开发资料:High-speed Charting Control,作者提供了英文版的API文档说明,以及相关的Demo测试实例。????????Github上的链接:ChartCtrl被翻译成中文版的资料:中文版——High-speed Charting Control初级使用对于Hight-Speed Charting的使用,详转载 2021-01-15 22:56:31 · 2694 阅读 · 0 评论 -
MFC——SkinSharp For VS的使用说明
文章目录1. 库文件2. SkinSharp For VS的使用方法3. 皮肤样式1. 库文件2. SkinSharp For VS的使用方法新建一个MFC对话框工程。将换肤库头文件和链接库文件SkinH.h,SkinH_lib拷贝到工程的目录下:在预编译头文件pch.h中,添加换肤库头文件以及链接库:#include "SkinH.h"#pragma comment(lib, "SkinH.lib")在主对话框的OnInitDialog成员中添加换肤命令SkinH_原创 2021-01-29 16:03:30 · 1335 阅读 · 7 评论 -
Socket_TCP _监听失败——10022
在实现tcp通信的多线程中,出现了一个问题,监听函数会报错://绑定地址到服务器 int ret=bind(listenSer, (SOCKADDR*)&saddr, slen); if (ret== SOCKET_ERROR) { cout << "绑定地址失败" << endl; cout << "5s后退出控制台!" &l...原创 2018-11-02 19:49:59 · 5984 阅读 · 3 评论 -
文本操作——txt文件读写、dat文件读写(C++/Python)——待完结
从文件中读取数据赋值到二维double数组中,以\n换行:void ReadFile() { fstream myfile("Data/dataSrc.txt", std::ios_base::in); float a; int i = 0; int j = 0; double yF[22][60] = { 0 }; while (myfile >> a) { yF[i][j] = a; i += 1; if (i == 22) { i = 0; j原创 2021-08-17 10:37:16 · 611 阅读 · 0 评论 -
二次与三次B样条曲线实现
BSpline.h文件#pragma oncetypedef struct tagPosition{ double x; double y; tagPosition(double _x, double _y) { x = _x; y = _y; } tagPosition() {}; bool operator==(const tagPosition& pt) { return (x == pt.x && y == pt.y); }} CPosition;转载 2021-04-17 23:21:02 · 1725 阅读 · 0 评论 -
三次样条曲线插值
头文件// 文件名:Spline.h//----------------------------------------------------------------------------// 功能: 使用三次样条曲线进行插值//----------------------------------------------------------------------------// 说明: 1.提供了两种边界条件的设定方式:// 1)给定端点的一阶导// 2)给定端点的二阶导原创 2021-04-17 22:51:40 · 1818 阅读 · 0 评论 -
基础语法篇_12——网络编程
文章目录一、计算机网络基础知识1. 1 IP地址1.2 协议1.3 网络的状况1.4 网络异质性问题的解决1.5 ISO/OSI 七层参考模型1.6 数据封装1.7 TCP/IP模型1.8 端口1.91.10 网络字节顺序二、Windows Sockets的实现2.1 套接字的类型2.2 基于TCP (面向连接)的socket编程2.3 基于UDP (面向无连接)的socket编程一、计算机网络基础知识计算机网络是相互连接的独立自主的计算机的集合,最简单的网络形式是由两台计算机组成。计算机A通过网络与原创 2021-03-11 15:46:04 · 404 阅读 · 0 评论 -
【Window】线程中的几种锁
第一节:【Window】创建线程的3种方式第二节:【Window】线程同步概述第三节:【Window】线程同步方式1——临界区(关键代码段)第四节:【Window】线程同步方式2——互斥量第五节:【Window】线程同步方式3——事件第六节:【Window】线程同步方式4——信号量第七节:【Window】线程同步方式4——信号量第八节:【Window】互斥锁——Mutex,lock_guard,unique_lock线程之间的锁有:互斥锁条件锁自旋锁读写锁递归锁一般而言,锁原创 2020-12-25 16:45:00 · 1204 阅读 · 0 评论 -
【Window】互斥锁——Mutex,lock_guard,unique_lock
文章目录1 互斥锁1.1 基本概念1.2 互斥锁的特点1.3 互斥锁的使用1.3.1 lock()和unlock()1.3.2 try_lock_for()1.3.3 使用1.3 std::lock_guard——Mute的优秀辅助1.4 std::unique_lock函数模板1.4.1 unique_lock构造参数1.4.2 unique_lock的成员函数1 互斥锁1.1 基本概念在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。比如说,同一个文件,可能一个线程会对其进行写操作,原创 2020-12-25 16:42:28 · 1509 阅读 · 0 评论 -
【Window】线程同步方式2——互斥量
文章目录1 互斥量(Mutex)2 互斥量包含的几个操作原语1)CreateMutex()2) OpenMutex()3) ReleaseMutex()4) WaitForSingleObject/WaitForMultipleObjects5)CloseHandle()3 应用与举例1 互斥量(Mutex)在编程中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。互斥量跟临界区很相似,只有拥有互原创 2020-12-24 14:04:07 · 1141 阅读 · 2 评论 -
【Window】线程同步方式1——临界区(关键代码段)
文章目录1 临界区1.1 简介1.2 程序调度法则1.3 线程同步问题2 临界区操作原语2.1 定义全局的锁CRITICAL_SECTION2)InitializeCriticalSection3)EnterCriticalSection和LeaveCriticalSection4) DeleteCriticalSection3 应用和举例1 临界区1.1 简介临界区,也称为关键代码段,工作在用户方式下。它是指一个小代码段,在代码能够执行前,它必须独占对某些资源的访问权。临界区(Critical S原创 2020-12-23 22:32:28 · 3258 阅读 · 0 评论 -
【Window】线程同步方式4——信号量
1 信号量信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。为了完成这个过程,需要创建一个信号量VI,然后将Acquire Semaphore VI以及Release Semaphore VI分别放置在每个关键代码段的首末端。确认这些信号量VI引用的是初始创建的信号量原创 2020-12-23 17:13:28 · 4061 阅读 · 0 评论 -
【Window】线程同步方式3——事件
文章目录1 事件2 信号量包含的几个操作原语1)CreateEvent2)OpenEvent3)SetEvent4)ResetEvent5)WaitForSingleObject6)事件的清理与销毁3 事件说明4. 举例1 事件事件对象通过通知操作的方式来保持线程的同步,并且可以实现不同进程中的线程同步操作。事件(Event)是WIN32提供的最灵活的线程间同步方式,事件可以处于激发状态(signaled or true)或未激发状态(unsignal or false)。根据状态变迁方式的不同,事件原创 2020-12-23 13:54:48 · 1281 阅读 · 1 评论 -
在VS2019中——用C++调用Python代码
文章目录1. 前提条件2. 创建控制台应用程序CppUserPythonTest3. 创建Python应用程序4. 项目属性配置环境VS版本:2019版Anaconda版本:conda 4.8.5Python版本:anaconda中默认的Python 3.7.11. 前提条件电脑中必须安装Python解释器。安装方式:◉ Anaconda安装◉ Python官网下载Python安装◉ 安装VS中带的Python模块此处不再详细说明。2. 创建控制台应用程序CppUserPyt原创 2020-10-27 22:14:56 · 2634 阅读 · 4 评论 -
MFC实战篇——“另存为对话框”和“打开对话框”——读写float型数据——二进制文件中
文章目录1. 另存为对话框2. 打开对话框2.1 读取到数组中2.2 读取到Mat中1. 另存为对话框MFC弹出保存对话框,将float型Mat数据写入二进制文件:void CProp1::OnBnClickedButton6(){ // TODO: 在此添加控件通知处理程序代码 //另存为: //默认文件名:KB_Y-M-D_h-m-s.dat SYSTEMTIME str; GetLocalTime(&str); CString fileName; CString he原创 2020-10-22 16:58:24 · 992 阅读 · 1 评论 -
_mkdir、_access使用指导
文章目录1. _access判断文件是否存在1. 头文件2. 定义3. 参数说明4. 返回值5. mode参数6. 创建多级文件夹2. _mkdir创建不存在的文件夹1. 头文件2. 函数声明3. 参数4. 返回值5. 说明1. _access判断文件是否存在1. 头文件必需的标头:#include <io.h>2. 定义 int _access( const char *path, int mode );3. 参数说明参数名意义path原创 2020-10-21 11:37:32 · 3771 阅读 · 1 评论 -
MFC实战篇——提示框随鼠标移动动态响应
文章目录1. 新建对话框项目2. 添加一个CToolTipCtrl变量3. 在对话框OnInitDialog()中加载提示框4. 重写对话框的PreTranslateMessage消息5. 添加鼠标移动响应函数为鼠标添加动态的提示框。当鼠标在图片控件的图像区域中移动时,动态跟新鼠标移动过程中图像的像素。1. 新建对话框项目2. 添加一个CToolTipCtrl变量在对话框头文件ADDToolTipDlg.h中添加一个相应的CToolTipCtrl类型的变量:CToolTipCtrl m_t原创 2020-09-22 17:08:13 · 1989 阅读 · 1 评论 -
MFC实战篇——添加鼠标右键响应菜单
文章目录一、新建MFC对话框项目二、添加菜单资源三、添加右键响应函数3.1 方法一:WM_CONTEXTMENU响应函数方法2:WM_RButtonDown响应函数四、添加菜单响应函数五、测试六、升级版一、新建MFC对话框项目二、添加菜单资源添加一个主菜单和3个子菜单。三个子菜单的ID分别为:三、添加右键响应函数3.1 方法一:WM_CONTEXTMENU响应函数在类视图中为对话框添加消息WM_CONTEXTMENU的响应函数。在响应函数中添加代码,加载指定的菜单:v原创 2020-09-21 22:19:11 · 6534 阅读 · 3 评论 -
MFC实战篇——线程的创建和多线程简单示例
文章目录一、基本概念1.1 进程1. 程序和进程2. 进程组成3. 进程的组成1.2 线程1. 线程组成2. 线程运行3. 单线程程序和多线程程序二、线程创建函数2.1 声明2.2 参数三、简单多线程实例四、线程同步4.1 火车站售票模拟程序4.2 多线程程序容易出现的问题4.3 利用互斥对象实现线程同步1. CreateMutex函数2. ReleaseMutex函数3. WaitForSingleObject函数一、基本概念1.1 进程1. 程序和进程程序是计算机指令的集合,它以文件的形式存储在原创 2020-09-17 21:52:26 · 5430 阅读 · 3 评论 -
MFC实战篇——一对一网络聊天室程序
CWinThread* AFXAPI AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL);CWinThread* AFXAPI AfxBeginThrea原创 2020-09-17 21:57:06 · 4245 阅读 · 4 评论 -
MFC基础知识篇——在共享DLL中使用MFC和在静态库中使用MFC的区别
创建MFC对话框程序时,使用MFC有两个选项:在共享DLL中使用MFC在静态库中使用MFC在共享DLL中使用MFC在共享DLL中使用MFC指:打包时,一些MFC的DLL的内容没有被包含在程序的EXE文件中,所以EXE文件较小,但是运行时要求系统中要有相关的DLL文件。在静态库中使用MFC在静态库中使用MFC 指:将DLL对应的lib静态库中的相关代码硬编码到EXE文件中,文件较大,但是可以在没有已经被包含DLL的机器上运行,可移植性好。当然即使如此也并非所有的DLL都会将其硬编码到Exe中原创 2020-05-08 21:36:50 · 1772 阅读 · 1 评论 -
MFC实战篇——分页功能
文章目录项目介绍一、创建项目二、添加3个分页对话框资源1. 创建注册对话框2. 创建三个分页2.1 第一个分页2.2 第二个分页2.3 第三个分页三、定制对话框界面内容1. 默认生成的父对话框内容定制2. 注册对话框内容定制2. 分页1对话框内容定制3. 分页2对话框内容定制4. 分页3对话框内容定制四、为每个对话框添加MFC类1. 添加注册MFC类2. 添加页面1的MFC类3. 添加页面2的MF...原创 2020-05-08 00:50:49 · 3062 阅读 · 0 评论 -
MFC实战篇——基于对话框的MFC界面添加菜单栏
一、方法一先添加菜单资源:为新建的菜单栏资源更改属性ID,并加上需要的菜单项。打开编辑对话框资源IDD_···_DIALOG的属性框,在属性对话框选项中找到Menu选项,并选择刚刚创建的菜单栏ID即可。运行程序:二、方法二先创建一个变量:在对话框Dlg类中的OnInitDialog中添加如下代码://加载菜单m_menu.LoadMenu(IDR_MyMenu);...原创 2020-04-07 18:17:20 · 2060 阅读 · 0 评论 -
MFC实战篇——客户区坐标与屏幕坐标转换,获取对话框中控件的坐标,获取鼠标点击处的像素值
文章目录一、客户区坐标与屏幕坐标转换1. GetWindowRect2. GetClientRect3. ClientToScreen4. ScreenToClient5. 对话框中控件的坐标二、实例1. 获取图像控件的坐标信息2. Mat图片显示在MFC图片控件中3. 获取鼠标点击处的像素值一、客户区坐标与屏幕坐标转换????????????坐标包含两种:屏幕坐标屏幕坐标是指你的显示器的左上角(0,...原创 2020-04-01 23:44:48 · 8018 阅读 · 2 评论 -
MFC实战篇——鼠标点击处显示图像像素
mat:成员变量,存放mat图像widthPicCtrl:图像控件的宽度width:mat图的宽leftTop:图像控件的左上角坐标heightPicCtrl:图像控件的长度height:mat图的高//获取鼠标点击处的像素值void CCameraLinkTestDlg::OnLButtonDown(UINT nFlags, CPoint point){ // TODO...原创 2020-03-22 16:51:23 · 980 阅读 · 0 评论 -
MFC实战篇——点击按钮,保存图片
//保存void CCameraLinkTestDlg::OnBnClickedSave(){ // TODO: 在此添加控件通知处理程序代码 if (mat.empty()) { MessageBox(_T("请先进行图片捕获!")); return; } SYSTEMTIME str; GetLocalTime(&str); CString timePath;...原创 2020-03-22 16:39:31 · 1369 阅读 · 0 评论 -
MFC实战篇——图片旋转、控件PictureControl 清除显示、伪彩、直方图显示、为按钮添加背景图标、设置程序图标
建立图片控件改变图片控件ID建立四个按钮改变四个控件ID从上到下依次为:IDC_LEFTTURN90DEGREESIDC_RIGHTTURN90DEGREESIDC_FLIPHORIZONTALIDC_FLIPVERTICALLY建立三个私有的坐标,存左上角坐标,宽,高private: // 左上角坐标,宽,高 CPoint leftTop; int im...原创 2020-03-22 15:44:40 · 2796 阅读 · 0 评论 -
基础语法篇_11——坐标空间和转换,图形的保存和重绘,元文件
一、坐标空间和转换Microsoft Windows下的程序运用坐标空间和转换来对图形输出进行缩放、旋转、平移、斜切和反射。1.1 坐标空间一个坐标空间是一个平面空间,通过使用两个相互垂直并且长度相等的轴来定位二维空间:Win32应用程序编程接口(API)使用四种坐标空间:世界坐标系空间、页面空间、设备空间和物理设备空间。应用程序运用世界坐标系空间对图形输出进行旋转、斜切或者反射。Win...原创 2020-04-02 16:44:42 · 540 阅读 · 0 评论 -
基础语法篇_10——设置对话框、颜色对话框、字体对话框、示例对话框、改变对话框和控件的背景及文本颜色、位图显示
文章目录一、简单绘图二、设置对话框2.1 设置线宽2.2 设置线型新建一个单文档类型的MFC工程,取名:Graphic。此程序将实现简单的绘图功能。一、简单绘图实现简单的绘图功能,包括点、直线和椭圆的绘制。为了实现这些功能:⭕⭕1)首先为此程序添加一个子菜单,菜单名称为“绘图”;⭕⭕2)为其添加四个子菜单项,分别用来控制不同图形的绘制。当用户选择其中的一个菜单项后,程序将按照当前的选...原创 2020-03-09 19:36:13 · 2293 阅读 · 1 评论 -
MFC问题篇——解决DockControlBar(&m_newToolBar)引起的问题
MFC创建自己的工具栏时,在CMainFrame类头文件中添加一个CToolBar类型的成员变量,private: HICON m_hIcons[3]; CToolBar m_newToolBar;调用Create或CreateEx函数创建Windows工具栏,并把它与已创建的CToolBar对象关联起来。在CMainFrame类的OnCreate函数中实现。int CMainFra...原创 2020-03-05 18:05:38 · 2780 阅读 · 1 评论 -
基础语法篇_9——VS2019+MFC:修改应用程序窗口的外观【窗口光标|图标|背景】、模拟动画图标、工具栏编程、状态栏编程、进度栏编程、在状态栏上显示鼠标当前位置、启动画面
一、修改应用程序窗口的外观 对于MFC应用程序来说,为了改变MFC AppWizard自动生成的应用程序外观和大小,既可以在应用程序窗口创建之前进行,也可以在该窗口创建之后进行。首先新建一个单文档类型的MFC AppWizard (exe)工程,工程取名为: Style。运行程序如下:1.1 窗口创建之前修改如果希望在应用程序窗口创建之前修改它的外观和大小,就应该在CMainFrame...原创 2020-03-06 17:51:27 · 5291 阅读 · 0 评论 -
基础语法篇_8——MFC:如何在对话框程序中让对话框捕获WM_KEYDOWN消息
想要让对话框(子控件的父窗口)类响应按键消息,则可以通过类向导对WM_KEYDOWN消息进行响应,当程序运行后,按下键盘上的按键,但对话框不会有任何的反应。这是因为在对话框程序中,某些特定的消息,例如按键消息,它们被Windows内部的对话框过程处理了(即在基类中完成了处理,或者被发送给子控件进行处理,所以在对话框类中就捕获不到按键的消息了。可以找到底层处理按键消息的函数,然后在子类中重载它,便...原创 2020-03-02 22:12:45 · 1135 阅读 · 0 评论 -
基础语法篇_7——MFC对话框:逃跑按钮、属性表单、向导创建
文章目录一、基于对话框的程序二、“逃跑”的按钮三、属性表单和向导的创建3.1 创建属性页一、基于对话框的程序新建一个基于对话框的项目,项目名称:DlgTest。生成的项目结构为:解决方案结构:类视图下有三个类:CAboutDlg派生于CDialog类,这个类与SDI应用程序中相应的类:CAboutDlg作用相同,用于显示一个关于对话框。CDlgTestApp这是MFC应用...原创 2020-03-02 21:17:48 · 2044 阅读 · 0 评论 -
MFC实战篇——解决用类向导添加MFC类,基类列表没有CPropertyPage类。
再新建一个MFC AppWizard (exe)工程,看一下这个向导提供的功能,工程取名为: Prop, AppWizard的第一步窗口如图8.17所示。首先,该对话框中要求用户选择生成哪种类型的应用程序;单文档(Single document)、多文档(Multiple documens),还是基于对话框(Dialog based)的应用程序。其中如果选择Single document选项,将生...原创 2020-03-01 20:45:23 · 2758 阅读 · 0 评论 -
MFC问题篇——对话框“消息”中找不到WM_INITDIALOG
为对话框添加WM_INITDIALOG消息映射时,在“消息”中找不到WM_INITDIALOG。???????? 原因:VS2003开始已经将WM_INITDIALOG移到了重写里面,重写里面有一个OnInitDialog,对应了VC6.0的 WM_INITDIALOG消息。???????? 解决方案:在类视图上选中自己创建的对话框类,右键选择属性,属性视图上有六个按钮,点第六个重写按钮就显示了所有该类可以重载的函数...原创 2020-02-27 15:42:11 · 1785 阅读 · 0 评论 -
基础语法篇_6——对话框的创建与显示、动态创建按钮、控件的访问【控件调整|静态文本控件|编辑框控件】、对话框伸缩功能、输入焦点的传递、默认按钮的说明
文章目录一、基本知识1.1 常用控件介绍一、基本知识对话框就是一个窗口,它不仅可以接收消息,而且可以被移动和关闭,甚至可以在客户区进行绘图。对话框相当于一个容器,在它上面能够放置各种各样的标准控件和扩展控件,使程序支持用户输入的手段更加丰富。1.1 常用控件介绍在MFC中,所以的控件类都由CWnd类派生的。因此控件也是窗口。通常控件作为对话框的子窗口而创建的。控件也可以出现在视类窗口、工具...原创 2020-02-27 20:04:29 · 2054 阅读 · 0 评论 -
基础语法篇_5——菜单命令响应函数、菜单命令的路由、基本菜单操作、动态菜单操作、电话本实例
文章目录一、菜单命令响应函数二、菜单命令的路由2.1 程序类对菜单命令的响应顺序2.2 Windows消息的分类2.3 菜单命令的路由菜单栏、工具栏和状态栏是组成Windows程序图形界面的三个主要元素。先创建一个单文档的应用程序。一、菜单命令响应函数运行上面创建的应用程序,可以发现MFC已经帮我们创建了一些菜单。点击资源视图选项卡,可以看到Menu菜单下的一个名为IDR_MAI...原创 2020-02-22 22:36:29 · 1892 阅读 · 0 评论 -
基础语法篇_4——插入符【文本插入符|图形插入符】、窗口重绘、路径、字符输入【设置字体|字幕变色】
文章目录一、插入符1. 创建文本插入符2. 创建图形插入符二、窗口重绘2.1 OnDraw函数2.2 添加字符串资源三、路径四、字符输入一、插入符1. 创建文本插入符创建插入符,可以利用CWnd类的createSolidCaret)函数完成。该函数原型声明一下:void CreateSolidCaret(int nWidth,int nHeight)nWidth: 指定输入符号的...原创 2020-02-19 16:27:34 · 1955 阅读 · 0 评论