自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 资源 (11)
  • 问答 (1)
  • 收藏
  • 关注

原创 CURL实现HTTP POST

libcurl Http Post

2024-10-23 16:34:19 125 1

原创 CURL实现HTTP GET

libcurl HPPT GET

2024-10-23 16:11:23 153

原创 CURL实现FTP文件上传

libcurl ftp文件上传

2024-10-23 12:00:52 440

原创 CURL实现FTP文件下载

libcurl的应用示例

2024-10-23 09:04:31 460

原创 WinForm控件与自定义属性绑定

WinForm控件与自定义属性绑定的方法

2023-09-23 14:26:47 835

原创 C#实现HTTP POST 做个记录备忘

最近工控软件经常需要做MES通信,基本上都是用Http Post实现,VC++做HTTP不如C#方便,以下是C#实现HttpPost的简单代码,记录以备遗忘。

2023-07-20 15:35:44 233

原创 Qt自定义视图委托(练习记录)

Qt Model-View

2023-05-16 16:01:17 198

原创 QT+VS2015加载项目失败解决办法

QT+VS2015加载已有项目失败的解决办法

2023-01-30 11:42:55 1930 1

原创 C++编写COM组件 ATL工程

最近在做QT项目中遇到一个问题,在Qt中调用MFC编写的动态库,出现内存泄露,没找到原因。由于这些库年代久远,内部代码也比较复杂,又不能轻易丢弃。于是我想把它们做成COM组件再试试。以下是一个简单COM组件编写和调用的完整流程,VS2015。1. 新建一个ATL项目工程建好后,会自动生成两个项目,只需要关注第一个就可以了。2. 添加自定义接口对象, MFCComObject ATL简单对象项目中添加了 CMFCComObject 类和 IMFCComObject ...

2022-03-26 12:52:49 2323

原创 C#属性实例理解

C#的属性,就像不带参数的方法,等同于两个方法的结合体,C++实现属性的功能需要两个函数

2022-01-06 22:18:22 428

原创 OpenGL轨迹球

1. 在视图类里面创建以下变量class MyView{ ................ ArcBallT m_ArcBall; // 轨迹球, 记录轨迹的变化 Matrix4fT *m_pTransform; Matrix3fT *m_pLastRot; Matrix3fT *m_pThisRot; CPoint m_ptLast; // 记住鼠标上次鼠标的位置}MyView::MyView(){ ...

2021-11-09 22:14:55 650

原创 OpenGL表面剔除

渲染时,在特定的硬件上渲染的三角面片是有限的,那么这种情况下,就应该减少不必要的三角面片,提升性能。那么在进行面剔除时,我们如何知道哪些面属于前面的面(Front facing),哪些面是后面的面(Back facing),渲染时应该丢弃后面的面,来减少gpu在执行片断着色器的命令,OpenGL中通过判断顶点连接的顺序(Winding order)来解决这个问题。在我们使用OpenGL画一个三角形的时候,三个顶点一定有一个顺序,可能是顺时针也可能是逆时针,但是,我们是能够看到画出来的三角形的。原因是我们没

2021-11-09 22:13:04 368

原创 OpenGL光照设置

光照模型OpenGL光照模型分为三种光:Ambient Light 环境光, Diffuse Light漫反射光, Specular Light镜面反射光.一、创建光源void glLightfv (GLenum light, GLenum pname, const GLfloat *params)light: OpenGL提供8个光源 GL_LIGHT0 ~ GL_LIGHT7pname: 光源属性GL_AMBIENT 环境光 默认 (0.0, 0...

2021-11-09 22:12:23 6313 1

原创 OpenGL显示STL模型之光照设置

显示STL模型, 全部都是三角面片, 使用光照需要注意三角面片的法线, 法线的归一化尤为重要。模型经过glScale变换之后, 原来的法线变得不正确, 光照效果变得不理想。解决此问题的方法是启用OpenGL自动法线单位化功能,该功能会影响性能。glEnable( GL_NORMALIZE );较好的方法是提前将STL模型的法线单位化。另外需要注意的是, 观察位置gluLookAt常常要与光照一起设置。以下是经验使用方式:void SetLight(){ GLFloat box = s

2021-11-09 22:10:34 597

原创 OpenGL模拟地月星系运动

运动规则:-> 地球绕太阳公转, 公转半径为 R-> 月球绕地球公转, 公转半径为 r-> 太阳、地球、月球各自自转OpenGL模型变换原则, 对当前模型坐标系进行操作,无论是旋转、平移、缩放。可以想象成有很多模型坐标系,起初模型坐标系与世界坐标系重合。glRotated 当前坐标系(相对于世界坐标系)进行旋转glTranslated 当前坐标(相对于世界坐标系)进行平移glScale 当前坐标系(相对于世界坐标系)缩放doub...

2021-11-09 22:09:10 620

原创 3D视角旋转平移鼠标响应制作

OpenGL处理3D视角以及旋转变换的一个关键思路是归一化处理。归一化处理就是将数据进行单元化,将所有需要显示的数据等比例装在一个1X1X1的立方体里。然后OpenGL去显示这个立方体,设置视角gluLookAt eyex, eyey, eyez都以立方体的边长单位化。鼠标控制旋转的方法:->> 鼠标横向移动,控制图形绕着Y轴旋转;鼠标纵向移动,控制图形绕着X轴旋转;->> 鼠标一次移动消息中,只处理Y旋转或只处理X旋转;->> 鼠标滚轮控制图像绕着Z轴旋转

2021-11-09 22:08:06 305

原创 OpenGL真实坐标转换为投影后的坐标

真实坐标可以通过OpenGL的投影函数计算投影之后的坐标。在HLCut中用于处理鼠标点选操作。思路:获取OpenGL模型矩阵和投影矩阵,通过投影函数计算。函数: gluProjectdouble objx, objy, objz; // 保存着真实坐标GLint viewport[4];GLdouble mvmatrix[16], projmatrix[16];glGetIntegerv(GL_VIEWPORT, viewport);glGetDoublev(GL_MODELVIEW_M.

2021-11-09 22:06:51 448

原创 3D视图中获取鼠标所在位置

在3D视图中,经过旋转、缩放、平移之后,任然可以获取鼠标位置对应的真实坐标。思路:获取OpenGL模型矩阵和投影矩阵, 对鼠标位置信息进行反投影计算。主要函数:glReadPixels 通过深度缓存获取Z坐标gluUnProject 实现反投影POINT point; // 鼠标位置GLint viewport[4];GLdouble mvmatrix[16], projmatrix[16];glGetIntegerv(GL_VIEWPORT, viewport); // viewport.

2021-11-09 22:04:00 532

原创 MFC中使用OpenGL简单框架的搭建

#pragma onceclass COpenGLWnd : public CWnd{ DECLARE_DYNAMIC(COpenGLWnd)public: COpenGLWnd(); virtual ~COpenGLWnd(); int MySetPixelFormat(HDC hdc); void SetViewPortSize(); HDC m_hDC; HGLRC m_hRC;protected: DECLARE_MESSAGE_MAP()public: af.

2021-11-09 22:02:51 966

原创 C#封装动态库,提供给C++调用

1, 首先封装一个C# Dll, 即创建工程为C#类库;using System;using System.Collections.Generic;using System.Linq;using System.Runtime.InteropServices;using System.Text;using System.Threading.Tasks;namespace MyCharpDll{ [ComVisible(true)] [Guid("0CE96C54-CC5F-4...

2021-11-09 21:59:34 2370 1

原创 VC复制字符串到剪贴板

BOOL CopyToClipboard(HWND hWnd, CString& str){ if (!OpenClipboard(hWnd)) { AfxMessageBox(TEXT("Cannot open the Clipboard")); return FALSE; } if (!EmptyClipboard())//清空剪贴板 { AfxMessageBox(TEXT("Cannot empty the Clipboard")); return FALSE;.

2021-11-04 20:10:34 505

原创 CListCtrl图标与复选框使用

1. 首先类向导生成一个 CListCtrl 控件对象 m_listDO2. 添加CImageList对象,并与m_listDO绑定m_imgList.Create(16, 16, ILC_COLOR24, 2, 2);m_imgList.Add(AfxGetApp()->LoadIcon(IDI_OFF));m_imgList.Add(AfxGetApp()->LoadIcon(IDI_ON));m_listDO.SetImageList(&m_imgList, LVS

2021-11-04 20:08:59 553

原创 CMFCStatusBar自定义的颜色无效解决方法

CMFCStatusBar添加消息映射ON_COMMAND_RANGE(ID_START, ID_END, NULL) //indicators[] 里面第一个和最后一个

2021-11-01 14:59:41 206

原创 零基础学Linux操作系统(三)

进程管理1、进程 程序的一次执行过程 资源分配和管理的基本单位2、进程管理的内容:① 监视进程:获取当前系统中各个进程的具体状态信息② 调整进程运行优先级③ 守护进程监视进程1.与进程有关的信息PID(Process ID) 进程号PPID(Parent ID) 父进程的PID号USER/UID 执行该进程的用户名及其UIDTTY 启动该进程的终端PRI(priority) 进程的优先级,数字越大表示优先级越低NICE 进...

2021-08-31 21:59:05 1142

原创 零基础学Linux操作系统(二)

Linux文件1. 文件概念广义: 一切皆文件狭义: 磁盘文件Linux中文件是一个字符流序列, 包括: 普通文件(文本文件、可执行文件) 目录 磁盘、键盘、打印机、网卡等设备2. 文件的成分索引节点( i结点) : 文件的信息:文件权限、文件主、文件大小、存放位置、建立日期等 文件使用的一个标识符,同一个文件有相同的inode号数据: 文件的实际内容查看文件的i节结号: ls -i3. 文件名 文件名最长可多达255个字符, 除斜线/和空字符以外,文件名可以包含...

2021-08-29 23:03:48 1414 2

原创 零基础学Linux操作系统(一)

Linux系统的登录方式(1) 图形界面登录图形界面也称X窗口,是系统安装时的默认登录模式;图形化界面一般包括GNOME和KDE, 可以选择安装(2) 文本模式登录要Linux启动直接进入字符界面,可以编辑 /etc/inittab 文件,找到 id:5:initdefault: 这行后,将5修改为3,吧运行级修改成完全多用户模式(标准运行级,文本字符界面)[root@localhost~]#[登录的用户名@登录的计算机名~]提示符(3) 模式切换X窗口下切换到字符终端Alt + Ct

2021-08-28 14:20:58 718

原创 获取字符串的显示宽度和高度

1, 获取系统字符的宽度和高度 hdc = GetDC (hwnd) ; GetTextMetrics (hdc, &tm) ; cxChar = tm.tmAveCharWidth ; cyChar = tm.tmHeight + tm.tmExternalLeading ;2, 获取字符串的宽度和高度BOOL GetTextExtentPoint32( HDC hdc, // handle to DC LPCTSTR lpStri...

2021-07-07 15:50:18 661

原创 通过ToolHelp函数遍历系统所有进程

void GetTheProcess(){ //PROCESSENTRY32结构体,保存进程具体信息 PROCESSENTRY32 pe32; pe32.dwSize = sizeof(pe32); //获得系统进程快照的句柄 HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hProcessSnap == INVALID_HANDLE_VALUE) { return ; } //首.

2021-07-07 15:47:08 210

原创 for_each用法

函数原型UnaryProc for_each (InputIterator beg, InputIterator end, UnaryProc op)*调用 op(elem), [begin, end)区间的每一个元素*返回遍历执行后的op副本*op可能修改元素, 与transform算法相似*op的返回值将被忽略*算法复杂度: 线性, 每个元素都调用一次op...

2021-06-05 10:35:28 1904

原创 08 图像特征

2021-05-15 12:48:12 88

原创 04 图像形态学

2021-05-15 12:46:16 92

原创 CreateProcess打开EXE执行文件

STARTUPINFO si;PROCESS_INFORMATION pi;ZeroMemory(&si, sizeof(si));si.cb = sizeof(si);ZeroMemory(&pi, sizeof(pi));CreateProcess(NULL, "可执行文件EXE的路径名称", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);STARTUPINFO 可指定打开文件后如何显示,PROCESS_INFO..

2021-04-28 10:28:53 1093

原创 Win32多线程 -- 进程通讯

1. 进程通讯 WM_COPYDATA如果你尝试在进程A的线程中把一个 LPARAM (内含一个指针)交给进程B,进程B有可能在使用这一指针时当掉。问题出在这个指针所指的数据乃位于进程A的地址空间中。进程B不可能看到这个地址空间,所以这个指针会被以进程B的地址空间解释之。那当然是牛头不对马嘴了。为解决这个问题, Windows 定义了一个消息,名为 WM_COPYDATA ,专门用来在线程之间搬移数据--不管两个线程是否同属一个进程。和其他所有的消息一样,你必须指定一个窗口,也就是一个 HWND ,当

2021-03-31 23:52:03 322

原创 CListCtrl子项图标和勾选

设置子项图标设置列表的扩展属性, 必须是LVS_REPORT类型的列表m_listIn.SetExtendedStyle(m_listIn.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_SUBITEMIMAGES | LVS_EX_GRIDLINES);创建图像列表m_imgList.Create(16, 16, ILC_COLOR4, 0, 1);m_imgList.Add(LoadIcon(AfxGetInstanceHandle(),

2021-03-30 16:27:07 347

原创 Win32多线程 -- MFC中的线程

警告如果要在 MFC 程序中产生一个线程, 而该线程将调用 MFC 函数或使用 MFC 的任何数据,那么你必须以 AfxBeginThread或CWinThread::CreateThread来产生这些线程。worker 线程和 GUI 线程Win32 两者一般而言都是以 CreateThread 或 _beginthreadex 开始其生命. 如果线程调用 GetMessage 或 CreateWindow 之类函数, 消息队列便会产生, 而 worker 线程也就摇身一变成了 GUI 线程(或称

2021-03-01 12:04:05 332

原创 stdio与Win32 Console API

stdio的格式化函数 sprintf, Win32对应地提供了 wsprinf, wsprintf 还细分为 _wsprintfA 和 _wsprintfW。stdio提供的三个标准流:stdin, stdout, stderr,Console API可以通过 GetStdHandle 获取到。HANDLE GetStdHandle( DWORD nStdHandle // STD_INPUT_HANDLE 对应 stdin // STD_OUT...

2021-03-01 11:57:50 129

原创 Win32多线程 -- C Run-time Librariy

Win32多线程程序建议:1. 以 _beginthreadex 取代 CreateThread2. 以 _endthreadex 取代 ExitThread3. 不要使用 _beginthread 和 _endthread4. 不要在MFC程序中使用 _beginthread 或 CreateThreadWindows区分单线程版本和多线程版本的 C Run-time Librariy , 多线程版本要使用 _beginthreadex 函数做初始化。如果任何线程中使用到了 C Run-ti.

2021-03-01 11:56:37 322

原创 Win32多线程 -- 异步IO(overlapped IO)

一. 异步(overlapped) IO之被激发的File Handle1.1Win32 IO操作函数Win32 之中有三个基本的函数用来执行 I/O CreateFile() ReadFile() WriteFile()没有另外哪一个函数用来关闭文件,只要调用 CloseHandle 即可。CreateFile 可以用来打开各式各样的资源,包括(但不限制于): -> 文件(硬盘、软盘、光盘或其他) -> 串行口和并行口(serial a...

2021-03-01 11:48:25 1571

原创 Win32多线程 -- 线程控制(暂停/继续/终止)

1. 关闭/终止 线程BOOL TerminateThread( HANDLE hThread, DWORD dwExitCode // 该线程的结束代码, GetExitCodeThread获取的值);如果函数成功, 则传回TRUE. 如果失败, 则传回FALSE. GetLastError()可以获知更多细节.2.暂停/挂起 线程DWORD SuspendThread( HANDLE hThread);如果函数成功, 传回线程目前的挂起次数. 如果失败...

2021-03-01 11:18:48 1659

原创 Win32多线程 -- 进程优先权与线程优先级

1. 优先权类别(Priority Class)"优先权类别"是进程的属性之一。这个属性可以表现出这一进程和其他进程比较之下的重要性。 Win32 提供四种优先权类别,每一个类别对应一个基本的优先权层级。下表展示了四个优先权类别。优先权类别(Priority Classes) 基础优先权值(base priority) HIGH_PRIORITY_CLASS 13 IDLE_PRIORITY_CLASS 4 NORMAL_PRIORITY_CLASS 7 or 8

2021-03-01 11:12:39 1173

WebService接口生成工具

生成wsdl接口工具

2022-07-26

MFC工具栏使用演示程序

MFC工具栏使用演示程序

2022-02-27

C语言实现Zip压缩解压.rar

C语言实现Zip压缩解压

2021-11-09

VC__SerialPort.rar

VC__SerialPort.rar

2021-05-09

二维平面常用运算.rar

二维坐标系下的基本运算

2021-05-09

配置文件操作(IniFile).rar

配置文件操作(IniFile).rar

2021-05-09

VC文件工具(FileTool).rar

VC6安装后遇到打开文件崩溃问题,原因是安装了高版本办公软件office发生冲突。FileTool是一个插件,可以解决此问题

2021-05-09

MFC Windows 界面编程基础.pdf

介绍了MFC编程的基础控件,是MFC编程人员参考手册。内含WINDOWS基础控件,详细介绍控件的事件和方法。

2020-07-05

WinHTTP编程参考手册.pdf

WinHTTP编程参考手册.pdf 详细介绍WINHTTP编程接口和使用方法, 是Windows下VC++编写HTTP相关应用的参考手册

2020-05-24

CallStackAPI.rar

软件异常处理,发生异常时捕获未处理异常,查看当前调用栈的回调情况,帮组开发人员查找异常原因。

2019-08-10

ActiveX控件编程.doc

本文讲解使用VC++编写ActiveX控件的具体过程,配带具体例程

2019-08-01

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

TA关注的人

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