- 博客(22)
- 收藏
- 关注
原创 远程控制项目中遇到的问题 关于_findfirst返回值类型
hfind的类型是int会报错因为我项目是64位,句柄一般是8位,而int是4位这就会导致我的句柄有问题,把hfind返回值类型改成。的大小与系统位数匹配:在 32 位系统中是 4 字节,在 64 位系统中是 8 字节。可以确保句柄在 64 位系统中不会被截断。
2024-11-09 14:37:40 200
原创 远程控制项目第四天 功能实现
获取屏幕内容:通过GetDC获取设备上下文,使用BitBlt将屏幕内容复制到CImage对象。流操作:使用创建全局内存块,使用将内存块和流绑定。使用保存数据到流对象。内存操作:使用GlobalLock锁定内存,获取数据后调用解锁内存。注意流指针位置,要确保数据从流的起始位置读取。资源释放:确保按顺序释放资源:先释放流对象,再释放内存块,最后释放设备上下文。这样就能确保屏幕截图数据能够被正确保存、读取和发送,同时避免资源泄露。
2024-11-07 19:02:33 396
原创 远程控制项目第三天 功能实现
通过_chdrive();函数用于改变当前工作驱动器,0=A,1=B,可以通过函数返回值来判断当前操作系统有哪些工作驱动器,筛选出当前操作系统的工作驱动器后,打包发给客户端,通过_chdir()切换到指定目录后,调用_findfirst()查找文件,获取文件信息,然后调用_findnext(),通过返回值确定还有没有下一个文件。
2024-11-05 16:55:54 166
原创 远程控制项目第二天
所有有关网络编程的项目,最基础的框架就是那些固定的流程,Socket,bind,listen,accept,然后我需要的就是在此基础上进行完善和优化,然后再Windows网络编程中,在socket前首先需要初始化 Winsock 库。
2024-11-03 23:39:20 326
原创 MYSQL 数据恢复
命令用于从客户端的本地文件中加载数据到 MySQL 数据库。出于安全考虑,MySQL 默认禁用了这个功能,以防止未经授权的文件访问或文件上传。因此,必须在和都明确启用功能。
2024-10-21 13:05:55 194
原创 Qt-拖放事件与拖放操作
拖放( drag and drop )操作是GUI应用程序中经常使用的一种操作,;例如将视频文件拖放到一个视频播放软件上,软件就可以播放此文件。本节学习拖放操作的基本原理,然后设置一个程序,程序可能接受从Windows资源管理器拖动来的PNG文件,并能显示图片。
2024-07-17 23:59:30 535
原创 Qt-事件与信号
事件和信号的区别在于,事件通常是由窗口系统或应用程序产生的,信号则是Qt定义或用户自定义的。Qt为界面组件定义的信号往往通常是对事件的封装,如QPushButton的clicked()信号可以看做对QEvent::MouseButtonRelease类事件的封装。在使用界面组件作为交互操作编程的时候,我们通常选择合适的信号,为该信号编写槽函数。但是Qt的界面组件只将少数事件进行封装成了信号,对于某些事件可能缺少对应的信号,例如QLabel的信号中就没有与双击鼠标对应的信号。
2024-07-15 23:43:48 1547
原创 Qt-Qt的事件系统
窗口系统是由事件驱动的,Qt为事件处理编程提供了完善的支持,QWidget类是所有界面组件类的基类,QWidget类定义了大量与事件处理相关的数据类型和接口函数,本节学习Qt的事件系统的工作原理,包括事件的产生和派发,事件类型的事件处理等内容。
2024-07-13 21:34:17 939
原创 MySQL-SQL通用语法和分类
3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。单行注释:--注释内容或#注释内容(MySQL特有)2. SQL语句可以使用空格/缩进来增强语句的可读性。1. SQL语句可以单行或多行书写,以分号结尾。删除指定表,并查询创建该表(有点类似于初始化表)|多行注释:/* 注释内容 */注意:[.....]为可选参数,最后一个字段后面没有逗号。查询当前数据库中所有表。查询指定表的建表语句。修改字段名和字段类型。
2024-07-11 23:53:29 438
原创 Qt-QFileSystemModel和TreeView
QFileSystemModel为本机的文件系统提供了一个模型,结合使用QFileSystemModel和QTreeView,可以以目录树的形式显示本机文件系统,如同Windows的资源管理器一样,使用QFileSystemModel提供的接口函数,我们可以创建目录,删除目录,重命名目录,可以获取文件名称,目录名称,,文件大小等,还可以获取文件的详细信息。
2024-07-10 14:53:39 986
原创 Qt-自定义代理
若要替换默认代理组件,就需要为QTableView组件的某列或者某个单元格设置自定义代理,自定义代理需要从QStyledItemDelegate类继承,创建自定义代理类的实例后,再将其设置为整个视图组件或者视图组件的某行某列的代理,以替代默认代理的功能。QAbstractItemView 类定义了设置自定义代理类的3个函数,函数定义如下:其中,delegate是创建的自定义代理类的实例对象。
2024-07-10 10:45:01 1028
原创 Qt-QStandardItemModel和QTableView
QStandardItemModel 是基于项的模型类,每个项是一个 QStandardItem 对象可以存储各种数据。QStandardItemModel 通常与QTableView 组成模型/视图结构,实现二维数据的管理,本节设计一个示例项目QStandardItemModel_QTableView主要涉及如下三个类的使用方法。QStandardItemModel:基于项的模型类,他维护了一个二维的项数组,每一个项是一个QStandardItem对象,用于存储文字,字体,对齐方式等各种角色的数据。
2024-07-09 23:57:45 1527
原创 QStringListModel和QListView
QStringListModel是处理字符串列表的模型类,其实例可以作为QListView组件的数据模型,结合使用这两个类,就可以在界面上显示或者编辑字符串列表。QStringListModel内部存储了一个字符串列表,这个字符串列表的内容自动显示在关联的QListView组件上,在QListView组件上双击某一行时,可以通过默认的代理组件 ( QLineEdit 组件) 修改这一行字符串内容,修改后的这一行字符串自动保存到数据模型的字符串列表里。
2024-07-09 10:41:03 376
原创 Qt-模型/视图结构
QAbstractItemModel是所有模型类的直接或间接父类,它定义了模型的通用接口函数,同时它也是抽象类,不能直接创建对象实例,各个具体的模型类实现了这些接口函数,以下是常用的接口函数1.行数和列数rowCount()返回行数,columnCount()返回列数,函数原型如下。
2024-07-08 17:35:33 1289
原创 Qt-QTableWidget
QTableWidget是一种Item Widget组件,它以表格的形式显示和管理数据,我们称之为表格组件。本节通过一个示例项目QTableWidget学习了QTableWidget的使用方法,示例运行时如图所示。
2024-07-03 17:23:21 207
原创 Qt-QTreeWidegt
QTreeWidget 是一种Item Widget 组件。QTreeWidget组件被称为树形组件,它的项(item)被称为节点,一个树形组件内的所有节点组成的结构称为目录树。树形组件适合显示具有层级结构的数据,如Windows 资源管理器中显示的文件系统就是一种典型的的层级结构。
2024-06-28 19:17:59 1171
原创 Qt-QToolButton和QListWidget
Qt中用于处理项数据(Item data)的组件有两类:一类是Item Views组件,包括了QLisyView、QTreeView、QTableView 等;另一类是Item Widget 组件,包括了QListWidget、QTreeWidegt、QTableWidget 等,这些类的继承关系如图1-1所示。
2024-06-25 11:56:03 956
原创 Qt-QMain Window和QAction
QMain Window 是主窗口类,具有菜单栏、工具栏、状态栏等主窗口常见的界面元素。要设计主窗口上的菜单栏、工具栏、、按钮的下拉菜单、组件的快捷菜单等,需要用到QAction类。QAction对象就是实现某个功能的 “动作”,我们称其为Action。在UI可视化设计时,我们可以设计很多Action,然后用Action创建菜单选项和工具按钮。
2024-06-24 10:58:56 729
原创 学习算法第二天——冒泡排序
今天学习到了冒泡排序,一下是本人理解,一个无序i nt类型 数组a[ ] ,数组长度为len,升序排序 ,从数组最小下标n开始遍历,比较大小,如果n比n+1下标元素大,就交换位置,如果n比n+1小就不交换位置,继续遍历比较n+1与n+2,遍历完整个数组后最后一个元素就是数组中最大的元素,然后重新开始遍历,但是遍历次数需要减一,当全部遍历完后,数组排序成功。
2024-06-06 23:00:45 255
原创 学习算法第一天——选择排序
选择排序是我接触的第一个排序算法,以下是我的理解,给定一个无序容器vector a ,第一步,遍历容器内无序区间的元素,找到一个最小值(最大值),把它存放在排序序列的起始位置。第二步,继续遍历剩下的无序区间,再次找到最小值(最大值),把它放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。
2024-06-05 23:05:50 272 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人