自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_31178679的博客

自学编程笔记

  • 博客(43)
  • 问答 (3)
  • 收藏
  • 关注

原创 win32 读写UTF-8格式的文件的方法

数据的读取和写入一样,先读取数据到char数组中,再转为UTF-8格式的宽字符串中。这样汉字就不会出现乱码了,格式也是UTF-8,没有后面的BOM了。先把要保存的字符串转化为UTF-8格式的char字符串。格式是UTF-8,但后面有个BOM,而且汉字也是乱码,汉字不是乱码了,但是格式仍然是UTF-8 BOM。最后我又测试了下用c语言写入UTF-8数据,最开始是在写入数据前先写入三个字节。在写入char字符串到文件中。这就是不我想要的效果。QFile.cpp文件。最后查找一翻资料后,

2023-10-31 23:46:23 603 2

原创 C++类对象反制机制实现_精简修改版

一个是类的数据结构,另一个是类的父类对象,把所有操作类的方法都写到父类中。其实关键是获取子类的结构信息,用纯虚函数就能调用子类的静态字段结构数组,前几天写的类对象反射机制太烦锁了,今天写个修改版的,精简为两个类。3.下面是类的注册宏,在其内就重写一个父类的虚函数就搞定了,字段信息结构不再添加其他方法了,就只为保存字段信息数据。总结一下是不是比前面[写的简单多了,也容易弄懂,这样就能对子类对象的字段进行数据操作了。2.父类QObject。4.用法就更加简单了,

2023-10-27 20:50:18 190

原创 通过数组的指针获得数组个数

2.又晕菜了,又在网上查找,最后获得了_msize()这么个函数,获取New出来的内置数据在堆中的内存块大小,不由就眼前一亮,有内存大小还愁不知道数组个数?1.在网上查询了通过数组指针获取数组个数的方法,对于自定义数据在前四个节点保存了数组个数。1.内置数据类型用_msize()能获得数组在堆中的内存大小,再通过计算获得数组个数,测试是成功的,但是是对于内置数据类型int,double,char等就不成功了。

2023-10-21 14:06:23 504

原创 C++类对象反射机制的实现(动态创建类对像并给类的字段赋值)

class_name::GetFieldArray() 获得字段信息结构数组地址,一定要加上括号才能获得字段数据,类的字段信息还是没有添加数据,这就要在前面声明宏中创建一个运行时类对象来添加。不能添加到最后,因为最后是一个不全的函数,要和结束宏组成一个完整的函数的,1.2.把类名称,类的字符名称,类的字段数据类型都要注册到对应的链表中。类的运行时信息也有了,但是如何在程序运行时往这类中添加相应的数据呢,如从数据库中读取数据,并自动添加数据到对象的相应字段中,Get_Field_Values();

2023-10-19 15:10:14 238

原创 关于智能指针的简单实现

但是如果new的时候给类对象赋值就不会有这情况,这就能运行通过,也能删除,不知道因为啥?其实关于指针是大的烦恼就是忘记删除New出来的内存,关于这点现在推出智能指针,其实说白了就是把指针封装成一个类的对象,让类对像自动析构的时候删除指针。如果用前面的方法就是用完后删除了,p1的指针也就没有了,肯定要出问题的。这个时候p2只是要用一个p1中的指针来获取数据,并不想删除其指针,但是如果是外部的智能指针对象呢,你不可能删除别人的管理的指针吧。2.那么问题来了,这是管理外部的指针是没有问题的,

2023-10-19 12:15:22 33

原创 关于模板类数据T是指针还是对象的删除

所以,以前的判断T是对象还是指针只能会对自定义类型,不能用来判断内置类型。今天学习用模板函数来区分T是对象还是指针来删除数据域还是不删除数据域。但是如果T设置为int类型是,QList 是不能通过编译的,前面是通过Typeid(T)来判断模板类是对象还是指针,“delete”: 不能删除不是指针的对象。在删除pNode->data数据域是。这样就能用内置数据类型了.

2023-05-30 23:02:06 76

原创 关于判断模板链表类中T的类型是否是指针的问题

可以通过typeid函数来获得类型的名称,通过判断名称最后一个字符是否是*来判断。1.是指针类型:如QList stuList;通过typeid获得的类型名称为: struct Student*1.如果是指针类型,就要删除数据域指针指向的内存,再删除节点内存。通过typeid获得的类型名称为: struct Student。关于模板链表类中释放内存时,数据域存在两种情况。问题就来了,如何判断模板类型是否是指针类型呢?2.不是指针类型的就只删除节点内存。通过对类型的判断来释放内存。

2023-05-18 21:34:41 122

原创 用mcisendstring播放视频

目前测试只能播放,.wmv,avi,mp3文件。

2023-04-30 11:52:56 419

原创 Win32 学习笔记_列表视图控件(ListCtrl)

SysListView32要包含头文件:#include 控件样式标红的为常用控件样式插入列消息参数:WPARAM: 列的索引LPARAM: LPVOCLUMN结构体返回: 新插入列的索引或-1代码示例:插入新行数据参数:WPARAM: 必须=0LPARAM:LVITEM结构体指针返回:新添加项的索引或-1代码示例:插入行数据只插入第一列的数据,要插入后面的列就要用LVM_SETITEMTEXT消息设置设置指定列索引要显示的字符串参数:WPARAM

2023-04-19 17:44:04 810

原创 Win32 编辑控件(多行)中Tab制表符的宽度设置方法

用EM_SETTABBSTOPS消息来重新设置Tab制表符的宽度。重新设置Tab制表符宽度为4个字符,(两个汉字)编辑控件中Tab制表符的宽度,以前是四个字符,现在一般是8个字符了,太宽了,不好看,所以就想重新设置Tab制表符的宽度,

2023-04-18 19:54:01 209

原创 Win32 学习笔记 编辑控件文本显示垂直居中的方法

查了好多资料,最后得出单行编辑控件要想文本显示在垂直居中只有重绘了,这样虽然得到想相的效果,但是有点就是在WM_SIZE中移动控件后,今天我在查看编辑控件消息是发现了.EM_SETRECT这个消息,所以就想,既然单行不行,就创建多行的样式嘛,干嘛非要创建单行呢。所以要在控件移动后才重新设置文本显示矩形区域位置。这样创建出来还是单行编辑控件一样的外观嘛.控件重绘后又回到以前的显示位置,在发关EM_SETRECT消息。这样就得到文本垂直居中的效果。

2023-04-18 19:28:24 385

原创 Win32 SDK学习笔记_树形控件(TreeCtrl)

树形控件类名:SysTreeView32。

2023-04-13 21:48:21 531

原创 Win32 SDK学习笔记_工具栏控件(ToolBar)

TBSTYLE_GROUP 按钮分组,和TBSTYLE_CHECK一起使用组成单选按钮样式。TBSTYLE_LIST 列表样式,文本显示在按钮右铡。TBSTYLE_CHECK 复选框样式,按下不自动弹起。TBSTYLE_TRANSPARENT 透明样式。TBSTYLE_BUTTON 普通的按钮样式。TBSTYLE_TOOLTIPS 工具栏提示信息。TBSTYLE_FLAT 平面工具栏样式。TBSTYLE_SEP 分隔栏样式。

2023-04-10 09:39:27 751

原创 字符串二级指针TCHAR**的理解

TCHA strArray[2][256]={TEXT(“测试字符串1”),TEXT(“测试字符串2”)};因一级指针是指针变量大小为4字节,所以二级指针就可以通过指针偏移来获得一级指针。我们都知道,关于字符串指针是指向字符串数组首地址的。p[0]中保存的是字符串"测试字符串1’'的首地址。二级指针保存的是由多少个一级指针组成的数组的首地址。p[1]中保存的是字符串"测试字符串2"的产地址。二级指针指向由二个一级指针组成的数组首地址,这就说明,一级指针保存的是字符串的首地址。二级字符串指针的释放。

2023-04-02 11:38:55 183

原创 C#AxWindowsMediaPlayer 控件的应用

这就难了,关键是当前播放列表获取不到当前播放歌曲的索引,这就难办了,4.在列表控件双击选中要播放的歌曲播放,在列表控件的鼠标双击事件中。获得控件选中项的索引,再通过索引找到当前播放列表对应索引的歌曲路径。当然这样也能播放,但是控件上的上一曲和下一曲按钮就不能用了,如下图。可以操作,暂停,停止,上一曲,下一曲,音量大小,静音,进度条。最后只能用获取当前歌曲的名称在列表控件中查找来获得当前的索引。能获得当前歌曲的名称,标题,作者,大小,时间等等,就这样当点击下一曲时,列表控件也会自动选中下一个,

2023-03-28 20:15:36 3498 1

原创 用ADO读取Excel表格中的数据

今天学习用ADO来读取Excel表格数据,其实和读取Access数据库一样,4.读取数据到_RecordsetPtr记录集中。具体操作就和Access数据库一样了,5.获得指定字段索引的名称。2.初始和移除ADO环境。只是连接字符串不一样。6.获得指定字段的值。

2023-03-25 21:36:14 480

原创 Win32窗口对象的封装

为了能像MFC一样处理消息所以定义了一个消息结构体,让这些消息结构体组成一个链表,当消息在链表中找到对应的消息时返回对应的函数来处理消息。在主函数中实例MyMainWnd窗口类测试。创建窗口基类QWnd的头文件。创建一个窗口类继承QWnd。QWnd窗口类的实现。

2023-03-23 00:15:00 440

原创 模板链表类(QList)的封装

我这是把函数实现也写在链表类中,当前然也可写在类外,这几天学习了模板链表类的封装,今天记录下学习过程。模板链表类的声明和实现都要写在一个头文件中。1.查找指定姓名的对象,返回对象指针。在类外实现,(要在同一头文件中)2.删除指定姓名的对象。

2023-03-22 10:38:47 201

原创 七段数字时钟演示程序

【代码】七段数字时钟演示程序。

2023-03-14 12:50:25 5812

原创 WIN32 状态控件用法

SB_SIMPLE: 指定状态窗口是显示简单文本还是显示由前一个SB_SETPARTS消息设置的所有窗口部分.SendMessage(hStatus, SB_SETTEXT, 0, (LPARAM)TEXT("第一部分"));SendMessage(hStatus, SB_SETTEXT, 1, (LPARAM)TEXT("第二部分"));SendMessage(hStatus, SB_SETTEXT, 2, (LPARAM)TEXT("第三部分"));......

2022-08-14 01:22:25 390

原创 Win32 学习笔记_选项卡控件(TabCtrl)

在资源中添加两个模板对话框,对话框样式为边框为Thin(细边框),样式Child(子窗口)创建一个显示对话框的句柄,用来保存当前选中项的附加数据中的句柄,m_hShowDlg。对象拖动到选项卡上时的消息,要有(TCS_EX_REGISTERDROP样式)True(重置除了选中项以外的选项卡,False重置所有选项卡。保存两个模板对话框句柄为成员变量,m_dlg1,m_dlg2。保存对话框句柄到选项卡的附加数据中。获得选中项附加数据保存的对话框句柄。保存对话框句柄到选项卡的附加数据中。...

2022-07-23 14:29:38 2125

原创 Win32 学习笔记_列表控件(ListBox)

如果样式由组合框之外的任何内容设置,则列表框将错误地视为组合框的子级,并且失败将导致失败。无数据列表框类似于所有者描述的列表框,但它不包含项的字符串或位图数据。默认情况下,除所有者绘制的列表框之外的所有列表框都具有此样式。指定列表框的所有者负责绘制其内容,并且列表框中的项目高度相同。指定列表框的所有者负责绘制其内容,并且列表框中的项目高度可变。指定列表框的大小正好是应用程序在创建列表框时指定的大小。用于添加、插入或删除项的命令始终忽略任何指定的项数据。通常,系统调整列表框的大小,以便列表框不显示部分项。..

2022-07-21 02:26:02 1734

原创 Win32 学习笔记_组合框控件(ComboBox)

此样式最适用于包含文件名的组合框,仅适用于使用CBS_SIMPLE或CBS_DROPDOWN样式创建的组合框。在列表框中显示一个禁用的垂直滚动条,当该框不包含足够的项目滚动时。将组合框编辑控件中输入的文本从Windows字符集转换为OEM字符集,然后返回到Windows字符集。指定列表框的所有者负责绘制其内容,并且列表框中的项目高度可变。指定组合框的大小正好是应用程序在创建组合框时指定的大小。通常,系统调整组合框的大小,使其不显示部分项。指定列表框的所有者负责绘制其内容,并且列表框中的项目的高度相同。...

2022-07-19 23:58:01 1681

原创 Win32 学习笔记_静态编辑控件(StaticEdit)

STM_SETIMAGE设置控件的图标,位图,光标,WPARAM=(IMAGE_HBITMAP,IMAGE_ICON,IMAGE_CURSOR),LPARAM=(HBITMAP,HICON,HCURSOR),返回原来的句柄。STM_GETIMAGE获得控件的图标,位图,光标句柄,WPARAM=IMAGE_BITMAP(IMAGE_CURSOR,IMAGE_ICON),LPARAM=0,RETURN=HBITMAP(HCURSOR,HICON)......

2022-07-18 03:01:10 665

原创 Win32 学习笔记_编辑控件(Edit)

编辑控件分为单行和多行两种样式。

2022-07-17 01:32:57 599

原创 Win32 学习笔记_创建按钮

按钮类 (BUTTON) 分为四种类型1.普通的按钮2. 单行按钮(RadioBox)3. 复选框(CheckBox)4. 分组框样式(RrouPBox)下面代码演示了四种按钮样式的创建图片效果: 按钮常用消息按钮通知消息

2022-07-10 10:19:45 1588 3

原创 Win32 学习笔记_创建窗口

win32 sdk 创建窗口步骤

2022-07-09 11:22:05 520

转载 win32 TreeCtrl控件通知消息, LVN_SELCHANGED和LVN_ITEMCHANGED用法

win32 TreeCtrl控件通知消息, LVN_SELCHANGED和LVN_ITEMCHANGED用法 - 初吻给了烟灬 - 博客园 https://www.cnblogs.com/greenleaf1976/p/15362573.html

2021-10-02 23:53:34 196

原创 MFC创建状态栏时SetPaneText不显示的问题

本因创建个状态栏不会出啥大问题,今天在创建的时候就弄出了个用SetPaneText设置文本不显示的问题,也是晕了半天车了.原来创建的时候是在创建工程的时候直接创建的对话框项目,所以不存在不显示的情况,今天我是在一个空Win32项目中创建的MFC对话框应用程序,就和系统自动生存的不一样了.原来系统生成的对话框应用程序在OninitDialog中创建: m_statusBar.Create(this); UINT nID[3] = { 10000,10001,10002 };//创建三个面板的ID号

2021-09-27 17:06:22 407

原创 创建鼠标悬停显示提示工具栏

这几天弄这个鼠标提示,在网上查了许多都不得行,今天终于弄出来了,现分享下//工具栏显示提示信息//1.创建工具栏,风格样式有//TBSTYLE_FLAT|TBSTYLE_TRANSPARENT|TBSTYLE_TOOLTIPSHWND hToolBar=::CreateWindowEx(0,TOOLBARCLASSNAME,NULL, WS_VISBLE|WS_CHILD|WS_BORDER|TBSTYLE_FLAT|TBSTYLE_TRANSPARENT|TBSTYLE_TOOLTIPS,

2021-08-14 15:14:44 234

原创 win32封装ADO数据库类

这几天封装了Win32 SDK 下操作数据库类 GlADOGlADO.h#pragma once#include <windows.h>#include <atlstr.h>//引入ADO库文件#import "C://Program Files//Common Files//System//ado//msado15.dll" no_namespace rename("EOF","adoEOF")//数据库类的封装class GlADO{public: Gl

2021-08-08 20:54:43 183

原创 C#用反射来封装数据库操作类

这几天在学习反射的应用,就有想法在封装数据库类的时候用上,下面就是这几天封装的类用的泛型封装的,可以查询不同的表,不用每个表写不同的一长串的Sql语句了.感觉省事多了,只是在多条件查询时Where后面的要自己手动输入传进去就OK了.#define OLEDB_using System;using System.Collections.Generic;using System.Data;using System.Data.OleDb;using System.Data.SqlCli

2021-07-18 02:13:06 382

原创 C#自己封装数据库操作类BaseADO

这几天学习数据库操作,就自己封装了一个数据库操作类,下面是代码展示namespace MYDATACLASS{#if OLEDB_ using MyCommand = OleDbCommand; using MyConnection = OleDbConnection; using MyDataAdapter = OleDbDataAdapter; using MyDataRead = OleDbDataReader; using MyParamet...

2021-07-16 20:24:07 155

原创 C#中Access数据库用储存过程查询

在Access数据库中创建查询过程关掉这个对话框,右键弹出菜单中选择SQL视图在这里用SQl语句编辑查询完了关闭界面弹出保存查询在C#中就可能像SQL数据库一样用储存过程来操作了.自己封装的函数一个不带参数列表的,一个带参数列表 /// <summary> /// 用储存过程查询 /// </summary> /// <param name="cuCunGocen"></pa.

2021-07-15 22:28:29 413

原创 C#ListBox SelectedVaule用法

今天跟着视频学习C#ListBox控件的时候发现ListBox控件中每个项都有两个值,一个是显示的值:DisplayMember一个是隐藏的值:ValueMember以前没注意这些,有可能是这要和数据库绑定用的,以前没这么用过.现记录下它们的用法打开数据库获得数据到表DatatTable中,在绑定到ListBox控件的DataSource中设置DisplayMember要显示的列名的值设置ValueMember要保存的列名的值string sql = string.Fo

2021-07-14 13:37:00 788

原创 C#中用#define来定义ADO数据库类型

今天学习数据类的封装.因我用了两个数据库(Access)和Sql,所以就想封装一个类来操作这两类数据库但是碰上麻烦了,操作这两个数据库的类根本不一样1.Sql数据库用的类:SqlCommand;SqlConnection;SqlDataAdapter;2.Access数据库有的类:OledbCommand;OledbConnection;OledbDataAdapter;在网上查了半天,我就想用预编译,和给类起个别名来实现,一顿操作后发现可行,也连上数据库了,哈哈!要操作哪个数据库在

2021-07-12 00:05:34 112

原创 win32创建工具栏控件

今天学习了工具栏控件,现记录下来,1。在资源文件中添加ToolBar资源自己画的,不是很好。呵呵2。创建控件在WM_CREATE消息中创建////加载工具栏图标 m_hImageList = ImageList_Create(16, 16, ILC_COLOR16 | ILC_MASK, 4, 1); HBITMAP hBitMap = LoadBitmap(lpCreate->hInstance, MAKEINTRESOURCE(IDR_TOOLBAR1));//IDR_TOOL

2021-06-08 18:46:16 505

原创 Win32 拆分窗口

Win32 拆分窗口前两天学习了MFC的拆分窗口,今天来学习Win32 SDK下如何拆分窗口.win32是没有像MFC那样直接有函数方法拆分窗口,只能自己处理了.1.在WM_CREATE消息中创建两个控件,TreeView,ListView//创建左边树形视图控件TreeView,扩展风格样式为3D风格WS_EX_CLIENTEDGE//创建左边树形视图控件TreeView,扩展风格样式为3D风格WS_EX_CLIENTEDGE HWND m_hTree = CreateWindowEx

2021-06-06 22:53:00 307

原创 MFC 静态拆分视图窗口

MFC 静态拆分视图窗口今天学习了MFC中拆分窗口,现将方法记录下.想要在窗口视图中拆分成左右两个视图窗口,首先要注意的是拆分后要加载到左右的视图要符合动态创建的类,也就是要在自己创建的视图类中添加动态创建机制宏.类内声明宏:DECLARE_DYNCREATE(CSelectView)     //CSelectView为自己创建的视图类类外实现宏:IMPLEMENT_DYNCREATE(CSelectView,CTreeView)  //CTreeView为父类**1.创建两个自己的视图

2021-06-04 22:41:16 962 1

原创 Win32 创建按钮控件

窗体创建成功了,下面来说各种按钮控件的创建.按钮控件类名是BUTTON分为下面三种形状普通的按钮控件单选按钮控件复选按钮控件按钮的样式有:下面我们就来创建这三个按钮://定义要创建的控件ID号#define IDC_BUTTON1 1001#define IDC_RADIOBUTTON1 1002#define IDC_RADIOBUTTON2 1003#define IDC_CHECKBOX1 1004LRESULT CALLBACK WindowProc(HWN

2021-05-10 13:09:41 1004

空空如也

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

TA关注的人

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