自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 利用win32 API和HID设备通信

第一步:获取HID设备的GUID函数:第二步:获取设备信息集合第三步:获取设备接口信息第四步:获取设备接口详细信息正确使用方法:第五步:创建设备第六步:读写

2022-06-23 20:31:55 753 1

原创 Win32(视口和窗口、坐标映射、自定义映射)

什么是视口和窗口首先需要明白的什么是视口和窗口,其实很简单,窗口自己有一个坐标体系,我们称为逻辑坐标,我们在编程输入坐标的时候,对应的都是逻辑坐标,而视口对应的是设备坐标,单位是屏幕的像素。显示器显示内容时会把我们输入的逻辑坐标转换为设备坐标,为什么要这么麻烦呢?答:为了自己定义一个合适的坐标轴,具体往下看。那就要提到映射模式了,在Win32中我们可以使用SetMapMode()函数来修改二者的映射模式,具体可以看以下链接:https://fishc.com.cn/forum.php?mod=vie

2022-05-27 02:00:07 573

原创 win 32 常见消息的 lParam 和 wParam 含义

WM_LBUTTONDOWN、WM_RBUTTONDOWNWM_LBUTTONDOWN:单击鼠标左键的消息WM_RBUTTONDOWN:单击鼠标右键的消息lParam:低字节包含当前光标的X坐标值: LOWORD(lParam)高字节包含当前光标的Y坐标值: HIWORD(lParam)wParam:包含一整数值以标识鼠标键的按下状态MK_LBUTTON 按下鼠标左键MK_MBUTTON 按下鼠标中键MK_RBUTTON 按下鼠标右键相似的消息还有:lWM_LBUTTONUP:

2022-05-25 20:50:10 1015

原创 MFC(文件搜索类)

CFileFind类,封装了遍历文件的操作CFileFind::FindFile开启查找,成功返回TRUE失败返回FALSECFileFind::FindNextFile找到当前文件,返回下一个文件是否存在一系列GetXXX函数调取文件信息CFileFind::GetFileNameCFileFind::GetFilePath调用一系列IsXXX函数判断文件属性CFileFind::IsDirectoryCFileFind::Dots 判断是不是点目录,就是当前目录...

2022-05-18 19:57:05 181

原创 MFC(类对象和控件绑定)

控件窗口和数据类对象绑定:数据交换重写虚函数DoDataExchange在函数内部通过一系列DDX_xxx函数实现对象和控件数据交互//类内CString m_strEdit;virtual void DoDataExchange(CDataExchange* pDx);//类外void className:: DoDataExchange(CDataExchange* pDx){ DDX_Text(pDx,IDC_EDIT1,m_strEdit);//第一个参数是固定的,第二个参数时

2022-05-17 18:12:39 893

原创 MFC(序列化机制,文档读写)

序列化就是往硬盘上写文件文档读写的类 CFileCFile::OpenCFile::Write/ReadCFile::CloseCFile::SeekToBegin/SeekToEnd/Seek //控制光标位置序列化机制使用(内置类型)写文件时需要先把文件写到CArchive的缓冲区,再把缓冲区写道硬盘上CFile 文档操作类,完成硬盘文件的读写操作CArchive 归档类,完成内存数据的读写操作CFile::Open 创建或者打开文件C

2022-05-16 20:35:30 439

原创 MFC(视图窗口、WM_COMAND命令消息)

视图窗口命令消息正常情况下,不同窗口产生不同的消息时,MFC会自动找到对应的类对象,遍历该对象的消息数组,找不到对应的消息,会再去其父类找对应的消息,也就是说,只要是该窗口产生的消息就会到这个类及其父类找处理函数,但是相对来说,COMMAND消息就不同,因为不管是视图类APP类还是框架类都可以处理COMMAND消息,而且获取COMMAND消息的先后顺序是:视图类>文档类>框架类>APP类。执行COMMAND消息过程如下://WM_COMMAND消息的路线AfxWndProc(..

2022-05-15 02:22:27 509

原创 MFC(文档类)

文档类对象和视图对象的绑定对于单文档结构而言,文档负责处理数据,而视图类负责显示和交互,那么视图和文档类必须形成绑定关系才行,这种绑定关系是在创建视图类窗口的时候就会形成的,MFC内部在创建视图的时候会要求我们传入一个CCreateText结构,该结构里面包含了一个m_pNewViewClass和m_pCurrentDoc,m_pNewViewClass变量保存的是你要创建的视图类的静态变量CRuntimeClass的地址,m_pCurrentDoc保存的是文档类对象的地址(还有m_pLastView,m

2022-05-15 02:21:41 673

原创 MFC(类DECLARE_DYNCREATE宏声明和实现、运行时类机制)

MFC运行类机制和动态创建

2022-05-13 17:04:35 504

原创 MFC(TabSheet文件)

MFC的TabSheet文件及注意事项

2022-05-10 23:48:52 450 2

原创 MFC(windows字符集)

宽字节,多字节在Windows98以及以前的版本使用8位ANSI字符集,它类似于我们程序员熟悉的ASCII字符集char sz[] = "ABCDEFG";char *psz = "ABCDEFG";int len = strlen(sz);WindowsNT和Windows2000后开始使用16位的Unicode字符集,它是ANSI字符集的一个超集。//在字符串前加字母L表示将ANSI字符集转换成Unicode字符集。wchar_t wsz[] = L"ABCDEFG"; wchar_t

2022-05-10 10:27:11 181

原创 MFC(底层实现一个窗口)

创建.c文件,包含头文件#include < windows.h >程序入口函数//WINAPI 代表__stdcall 参数的传递顺序,从右到左入栈,函数返回前清空栈int WINAPI WinMain( HINSTANCE hInstance,//应用程序实例句柄HINSTANCE hPrevInstance,//上一个应用程序实例句柄,现在在win32环境一般为NULL,不使用LPSTR lpCmdLine,//char* argv[]int nShowC

2022-05-09 21:15:52 200

原创 C++(STL常用算法)

常用的算法基本包含在< algorithm > < functional >< numeric >文件下< algorithm >是STL文件中最大的一个,主要涉及比较、交换、查找、遍历操作、复制、修改等< functional >体积小,只包括几个在序列上面进行简单数学运算的模板函数< functional >定义了一些模板类,用来声明函数对象遍历算法函数原型 ://遍历容器//beg、end、开始和结束迭代器//_f

2022-05-09 16:14:59 73

原创 C++(STL-函数对象)

重载函数调用操作符的类,其对象称为函数对象,由于使用重载运算符()时类似于函数调用,也叫仿函数,函数对象是一个类,不是一个函数。函数对象的使用可以像普通函数一样,可以有参数和返回值,超出普通函数概念,可以有自己的状态,函数对象可以作为参数传递。class MyAdd{ public: MyAdd(){this->count=0;} int operator()(int v1,int v2) { return v1+v2; this->count++; }in

2022-05-06 15:48:20 204

原创 C++(STL)

C++的STL相关知识

2022-05-03 16:17:25 1233

原创 C++(模板)

模板的使用及注意事项

2022-04-30 16:26:07 743

原创 C++(为什么必须使用虚函数才能构成多态)

我们知道,想要构成多态,必须使用虚函数,借助于虚函数表来实现,我们也知道,虚函数表是为了让父类引用子函数对象实现多态的,但是,为什么必须使用这种方式呢,来看一个有意思的例子class Car{ public: int a=0; void show(){ cout<<"this is virtual Car"<<a<<endl; }};class miniCar: public Car{ public: int a=20;

2022-04-27 21:32:51 1157 2

原创 C++(父类和子类的转换、多态实现的本质之虚表)

子类转换为父类class Car{ public: int a; virtual void show(){ cout<<"this is virtual Car"<<endl; } void show2(){ cout<<"this is Car"<<endl; }};class miniCar: public Car{ public: int a=20; void show() { cout&l

2022-04-27 18:29:31 836

原创 C++(类的继承)

继承的基本使用;多继承;虚继承

2022-04-27 02:44:15 593

原创 C++(运算符重载)

运算符重载

2022-04-26 16:02:42 135

原创 C++(友元函数)

友元类中的私有成员一般只能通过该类设置的方法进行访问,但是如果其他类,或者其他函数希望访问该类的私有成员属性,就需要用到友元函数友元函数就像自己有很多好朋友,好朋友经过自己授权可以访问自己的私有属性,不授权则无法访问全局函数作为友元函数class Car{ //在类先声明友元函数 friend void viewName(Car &c); public: Car(string name) { this->name=name; } private: s

2022-04-25 21:57:16 319

原创 C++类对象里的其他类的指针开辟内存问题

类中的其他类对象定义需要开辟堆内存当类中包含指针变量且使用成员函数给指针变量赋值,需要注意指针指向的数据生命周期,如果在函数创建一个类对象,那么类对象在该函数调用完后就会调用析构函数,结束该对象生命,此时需要给在函数里创建的对象new一个内存出来,用指针接收,然后自己不用的时候人为用delete释放内存class BWM{};class Car{ public: void hasWhat() { BWM b2; b=&b2; } private: BW

2022-04-25 21:34:39 222

原创 C++(常函数、常对象)

常函数、常对象首先明确:常函数不能修改成员变量(可以调用,不能修改)想要修改成员变量,必须在成员变量前加mutable关键字常对象只能调用常函数,但是普通对象既可以调用普通函数也可以调用常函数class car{ public: //常函数的const加在大括号之前,本意是在普通函数的this指针前加const, //形成const car* const c这样的结构,及不可以更改指针的地址,也不可以改指针指向的值 car(string name) { this-&g

2022-04-25 20:27:30 1623

原创 C++(静态成员变量、函数、this指针)

静态成员变量及函数使用static关键字定义,需要注意静态变量不单独属于某一个对象,所有该类的对象都可以访问同一个静态变量,但是私有静态变量不能共享。成员函数一样。class car{ public: static string m_name;//静态成员变量 //静态成员函数只能访问静态变量,因为静态成员函数所有对象共享,故调用时里面如果使用了非静态变量 //又因为静态成员函数不属于类对象本身,则编译器无法识别调用的是哪个对象的非静态变量 //更简单的说,当直接使用域作用符,如ca

2022-04-25 17:15:16 254

原创 C++(类与对象,构造函数、拷贝函数、深拷贝浅拷贝、初始化列表)

文章目录构造函数等注意事项深拷贝和浅拷贝的问题初始化列表构造函数等注意事项构造函数三种调用方式class Person{public: Person(int a) { m_a = a; } Person(int a, string str) { m_a = a; m_str = str; } Person(const Person &p) { p.m_a=m_a; p.m_str=m_str; }private: int m_a; strin

2022-04-24 23:04:06 51

原创 LVGL学习笔记

拖拽属性设置回调函数,获取设备的偏移量,重新进行坐标的设置来获得拖拽的效果static void drag_event_handler(lv_event_t* e){ lv_obj_t* obj = lv_event_get_target(e); lv_indev_t* indev = lv_indev_get_act(); if (indev == NULL) return; lv_point_t vect; lv_indev_get_vect(ind

2022-01-19 01:29:35 1103

原创 [ STM 32 ] 关于SDIO的使用

关于STM32的SDIO控制SD卡读写SDIO 全称是安全数字输入/输出接口,多媒体卡 (MMC)、SD 卡、SD I/O 卡都有 SDIO 口。STM32F10x 系列控制器有一个 SDIO 主机接口,它可以与 MMC 卡、SD 卡、SD I/O 卡以及 CE-ATA 设备进行数据传输。多媒体卡协会网站 www.mmca.orgSD 卡协会网站 www.sdcard.orgCE-ATA 工作组网站www.ce-ata.orgSD卡主要通过一根时钟线CLK,一根命令控制线CMD和四根数据线D0

2021-12-20 21:17:17 978

原创 STM32内部寄存器、储存器、C对寄存器的封装

STM32内部寄存器、储存器、C对寄存器的封装STM32的地址空间可以分为8个,分别是Block0~Block7,其中Block2是应用于外设的存储器,也是主要学习的内容。存储器映射存储器的地址由厂商或者用户分配,给存储器分配地址就叫做存储器映射。Block0 主要用于设计片内的 FLASH。Block1 用于设计片内的 SRAM。Block2 用于设计片内的外设,根据外设的总线速度不同,Block 被分成了 APB 和 AHB 两部分,其中 APB 又被分为 APB1 和 APB2。寄存器映

2021-11-22 21:09:10 893

原创 常见的排序算法(3)(《算法》读书笔记)

快速排序快速排序算法核心思想快速排序是通过每一次通过改变数组中元素的次序来确定一个位置的元素,然后经过迭代使所有的元素都处在正确的位置上快速排序(简易版)...

2019-12-03 19:15:25 65

原创 常见的排序算法(2)

归并排序自上而下的归并归并排序主要思想:(借助于一个辅助数组aux)1.把所有的数据拷贝到辅助数组备份2.对辅助数组使用两个指针,分别从左右逐个对比,原数组也使用一个指针3.比较结果小的值把原数组的值替换,原数组指针加一public class MergeSort01 {public static Comparable[] aux;public static void merge(...

2019-11-23 01:37:05 102

原创 常见的排序算法(1)(Java)

学习笔记第一天,希望可以和大家一起进步

2019-11-19 02:05:03 79

空空如也

空空如也

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

TA关注的人

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