自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于MFC框架用C++做一个记账本

之前的文章一直用的是Windows的API以及ATL的框架来绘制控件的,那本次使用MFC框架来做一下小工具。映射窗口的WM_PAINT消息,进行背景绘制。

2024-12-02 12:57:36 1021

原创 基于Windows系统用C++做一个点名工具

人总是喜欢回忆过去,突然回忆起大学时光来,我的计算机老师是用自己做的点名工具,来抽人回答问题的。那么本次的主题就是做一个点名工具,咱们在点名的基础上加一个存储功能,在多次抽取的情况下进行存储。

2024-11-18 14:28:57 1316

原创 VS开发之使用树视图

有时候我们需要将数据分为很多个分支来展示,那么使用列表视图很显然是不合适的,所以我们就可以使用树形结构的视图。今天用树视图来实现一个膳食宝塔,当点击某个分支时将其详细数据显示到窗口上。

2024-11-06 11:43:00 924

原创 VS开发之自绘列表视图

列表视图是比列表框更全面的列表,它更为灵活丰富。它有四个形式:ICON、SmallIcon、List和Report。

2024-10-31 16:22:50 998

原创 VS开发之自绘组合框

Simple是将列表一整个显示出来;DropDown是只显示编辑框,且编辑框可编辑,当用户点击时才会显示列表框;DropList和DropDown类似,但编辑框不可编辑。下面我们介绍一下自绘形式的组合框,它很大程度上和自绘列表框一样,处理以及就行。

2024-10-29 16:54:01 417

原创 VS开发之自绘列表框

在自绘列表框时,我们会收到以及消息。在WM_MEASUREITEM消息中设置列表框每行的尺寸;在WM_DRAWITEM消息中绘制每行的具体数据。

2024-10-25 18:09:41 248

原创 VS开发之自定义编辑框文本颜色及字体

消息,来自定义编辑框的文本颜色和字体。但如果该编辑框只读,那么需要响应。设置编辑框的字体的最佳时机应该是在窗口初始化的时候,所以我们要在。创建的字体记得在窗口销毁前删除!可读可写的编辑框可以通过响应。

2024-10-25 15:22:02 253

原创 VS开发之自绘按钮控件

使用GDI+大大简化了绘制的过程,但在使用GDI+前需要先初始化,且在窗口销毁前卸载。使用GDI绘制需要注意释放创建的句柄,否则会造成内存泄漏。

2024-10-24 17:22:03 186

原创 VS开发之Windows消息拦截

通常情况下,响应窗口消息只需要我们进行消息映射,就可以对不同消息进行处理。但是有时候我们期待在某个窗口上收到某个消息,但该窗口却收不到我们期待的消息。钩子的使用受到系统资源的限制,因为每个线程都有一个与之关联的钩子链表。子类化作用于特定的窗口实例,允许修改单个窗口的行为。超类化作用于整个窗口类,影响所有使用该类的窗口。它通过创建新的窗口类并注册来实现对消息的处理。超类化只能用于自定义的窗口类,不能用于系统预定义的窗口类,如按钮、编辑框等。可以设置不同类型的钩子,如键盘钩子、鼠标钩子等,以截获相应的消息。

2024-10-21 11:46:47 286

原创 VS开发之从文件资源管理器中选择文件

有时候我们需要从程序中访问到本地的文件项目,比如说一个简单的点名程序:需要从本地读取学生花名册。所以我们就选择常见的方法:弹出资源管理器,从中选择文件。返回值:PIDLIST_ABSOLUTE类型的数据,它是一个 PIDL,指定所选文件夹相对于命名空间根目录的位置,但也有可能返回的是快捷方式。:显示一个对话框,使用户可以选择一个 Shell 文件夹窗口。:公开用于初始化、显示和从通用文件对话框获取结果的方法。结构体类型的指针,该结构体包含用于显示对话框的信息。如果该方法要定义筛选器,比较复杂。

2024-10-15 16:40:50 375

原创 VS开发之异步线程内存管理问题

该线程执行线程函数中的代码,直至遇到return就会结束,然后被系统自动清理,无需我们手动清理。但是在线程终止运行后,线程句柄对象仍然在系统中,所以必须释放它,通过。CloseHandel()只是关闭了一个线程句柄对象,表示我不需要再使用该句柄,但不干预线程如何执行,并没有结束线程的运行。先让我们了解一下该函数,该函数创建成功后会返回一个线程句柄,该线程句柄是用来控制该线程的,它属于。创建子线程进行异步操作时,需要考虑这个线程在什么时候才能释放,该怎么释放,否则会造成内存泄漏。

2024-10-14 18:54:12 266

原创 VS开发之设置控件的背景色

如果我们处理该消息,就需要返回一个画刷,该画刷用来绘制该控件的背景色。很简单,只需要返回一个空的画刷,告诉父窗口不需要使用画刷绘制背景,然后在返回前使用。控件的背景颜色由返回的画刷绘制,我们使用了白色画刷,那么控件的背景色也是白色。可以看到控件颜色是灰色,不使用画刷,父窗口会为你绘制默认的颜色。我们如果想为创建的静态控件自定义颜色,那么就需要手动处理。注意:如果返回的画笔,是我们手动创建的,例如使用。控件的背景色不会绘制,空画刷就是什么都不做。函数检索的画笔,则应用程序不需要释放画笔。

2024-10-11 16:37:48 426

原创 VS开发之遍历Vector容器报错

Swift中不同的字符可能会占用不同数量的内存空间,所以要知道字符的确定位置,就必须从字符串的开头遍历每一个 Unicode 标量直到结尾。此时该容器有五个元素,有时候我们需要访问最后一个元素,如果使用vec.end()方法对其进行遍历却没有关注它返回的迭代器是否合法,那么就会报错了“can't dereference out of range vector iterator”。vec.end()的迭代器是指向该容器的最后一个元素的后一位的,当你使用该迭代器去读取数据或者修改数据就相当于越界访问了。

2024-10-09 14:53:45 278

原创 关于GitLap上传代码未同步问题

我就是因为项目的根目录忽略了Debug和Release目录(因为我非根目录创建者并不知情),导致死活上传都没有更新,原来这两个名称的目录已经被设置了忽略上传!2.可以在执行后使用命令检查。代码仓库的,可能会存在上传的文件夹/文件被忽略的情况!如果文件被忽略,命令会输出匹配的规则;如果文件未被忽略,命令不会有任何输出!提交时,会显示文件更改的信息,可以知道新增项是否已经成功提交。4)检查一个通配符匹配的文件列表。3)检查一个目录下的所有文件。

2024-10-09 14:17:47 488

原创 VS开发之动态库和静态库冲突问题

再然后我上传代码到Gitlap上,于是就构建项目失败了,提示缺少动态库文件。但其实在编译时就已经把二维码库链接到项目文件中了,所以根本不需要添加动态库文件了。故移除安装包中的动态库文件,再次上传,构建就成功了。假如在项目中已经添加了依赖(静态的链接lib文件),那么项目的安装包中就无需再添加第三方库的动态库文件了,否则其他人在使用你的代码时,构建项目可能会出错。项目使用了生成二维码的第三方库,并且在项目中已经静态链接了第三方库的静态库文件。然后我又在安装包中添加了二维码的动态库,指定其运行时链接。

2024-10-08 16:16:53 343

原创 VS开发之打包的程序启动闪退

那么原因就在这了,Detected Dependencies文件夹下的dll是打包时系统自动生成的文件,而我们引用的dll文件是需要手动添加的,不在该文件夹下。但是因为该文件下已经有了安装程序所需要的dll,所以我们手动添加的就自动被排除了,于是安装程序运行时没有调用到我们手动添加的dll,最终造成了闪退的情况。我在覆盖后安装的程序能够运行了,说明是打包的依赖文件有问题。昨天在vs中使用微软提供的打包扩展打包程序遇到了一个问题:打包的安装包,安装后一启动就闪退!2.检查打包的程序是否缺少依赖。

2024-07-05 10:54:29 872

原创 VS开发之LoadImage获取的位图句柄为空

网上搜索之后才知道,LoadImage是只能够加载bmp格式的图片,其他格式的图片是加载不了的(并不是指bmp后缀而是指bmp的存储格式,所以非bmp的图片直接改后缀可能还是加载不了)。②另存为bmp选择24位位图,保存完之后可以用这个新的图片去尝试一下,一般情况下都能行,不行那只能换方法。解决方法:1.从存储格式方面上更改图片的格式。①右击要修改格式的图片,选择编辑-》画图打开。

2024-07-03 18:35:21 370

原创 vs开发之无法解析的外部符号、Debug正常调试Release找不到头文件

头大头大头大头大头大头大头大头大!先是报无法解析的外部符号,然后好不容易解决了但是切换Release模式引用外部库中的函数又找不到了,报未定义的标识符,但是我明明都添加了头文件路径和引用的库文件和路径!填的是 ”E:winclient\SyncBoxDll\Include\alibabacloud\oss“,而OssClient.h中这些报错的头文件实际上和OssClient.h是同级目录,但是在OssClient.h中引用时并不是同级,所以才会导致OssClient.h中引用的头文件找不到,导致报错!

2024-05-11 14:47:46 1938 1

原创 VS开发之Shell_NotifyIcon托盘显示气球通知无效

但是每当我需要在托盘上显示气球通知的时候都是无响应的。首先要使用Shell_NotifyIcon(NIM_MODIFY, &niData)显示气球通知时,其uFlags必须包括NIF_INFO,我是有的。然后我还检查了uVersion和cbSize,都没问题,在一台服务器上测试是可以显示的,但是在我win10的电脑上就是没有反应。总而言之,如果你在win10及以上的操作系统中使用Shell_NotifyIcon显示气球通知时,如果不起效果可以检查一下注册表中是否开启了气球通知。

2024-04-25 14:10:51 477 1

原创 VS开发之MoveFile失败返回码为5

几轮排查之后发现是权限的问题,有些用户的安装路径在C:\Program Files\下,有的在其他盘,所以其他盘的可以更新,C:\Program Files\下的无法更新。因为在Windows系统里C盘是系统盘,普通用户只有读的权限没有修改和写入的权限,所以操作其文件或是文件夹需要管理员权限的,故MoveFile改名失败导致更新失败。以下的方法本质上是差不多的,都会单出来一个UAC窗口,需要用户确认才能获取管理员权限。1.手动为普通用户添加权限(测试或者自己用,那这个方法没问题,给用户当然是不行的)

2024-03-20 17:38:37 2135 1

原创 vs开发之文件/文件夹的排序

因为这些比较函数都是逐字符比较的,那么显然这种排序方法用在应用程序中就不适用了,那么该怎样解决呢?一般排序可能就是用到字符串比较函数来进行排序,strcmp以及各种衍生函数。,把字符串中的数字作为数字比较而不是字符。

2023-11-23 15:06:46 525 1

原创 VS开发之MSI未能注册模块 xxx.dll。HRESULT -2147024770。请与你的技术支持人员联系。

将输出文件属性中的自动注册vsdrfcomselfreg改为标准vsdrfcom再打包msi,安装完msi之后以管理员权限启动cmd.exe去安装的路径下,使用regsvr32 dll文件名手动注册。最近遇到一个让人头大的问题,在vs2022上使用Windows Installer打包的程序有个输出的dll需要注册com组件,在自己电脑上可以使用,但是给其他人使用就会报错 “如果是这种情况,那么大概率是缺少依赖项了, 启动vs自带的developer command prompt,输入指令。

2023-11-16 10:30:09 1577 1

原创 VS开发之如何获取实时的系统DPI

我很懵逼一查原来是DPI缩放问题,vs上设计的界面都是按100%缩放的,然后找了半天怎么获取电脑当前的DPI结果都不理想,最后在大佬的指点下也是解决了问题。函数获取监视器的DPI,剩下的就是用获取到的数据来判断设置的是多少倍缩放了,最后对界面进行调整即可。(DPI对应的缩放:96--100%, 120--125%, 144--150%, 168--175%,192--200%……,但是越测越不对劲,这个函数只能获取最初设置的DPI,一旦后期改变获取到的DPI还是之前设置的。

2023-07-07 11:23:44 576 1

原创 VS开发之堆栈 cookie 检测代码检测到基于堆栈的缓冲区溢出

我目前遇到的情况③,这个情况隐蔽性要稍微强一点,因为它在数据写入时并没有直接报错而是在其他操作时进行了报错(不知道是不是因为我在Release下调试的原因),从而一度让我找错了方向。后来将分配的内存扩大测试后问题成功解决。0x00007ffab3912dbd (delisyncbox.dll) (explorer.exe 中)处有未经处理的异常: 堆栈 cookie 检测代码检测到基于堆栈的缓冲区溢出。③数组分配的内存比实际写入数据所需的内存要小。

2023-07-07 10:48:26 4858 2

空空如也

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

TA关注的人

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