- 博客(27)
- 收藏
- 关注
原创 C++虚函数表和虚基类表
虚函数表是C++动态多态的具体实现手段虚基类表解决了多重继承、多继承,基类在内存有多份拷贝的以及二义性的问题两者原理一样。
2022-10-08 13:08:38
622
1
原创 C++windows消息通信
消息队列是存储在内核中的GUI线程才有消息队列一开始创建的都是非GUI线程,当调用到第一个GUI函数的时候,系统创建消息队列(ETHREAD->win32Thread可以找到消息队列),变成GUI线程,底层实现主要看ETHREAD->ServiceTable是指向SSDT还是Shadow SSDT,详细介绍WM_USER-1)为系统定义消息,用户自定义消息范围为0x0400(WM_USER)-0x7fffMSG结构//该消息所属的窗口句柄 UINT message;
2022-10-03 11:56:39
926
原创 【c++windows共享内存(内存映射)】
共享内存是最快的IPC方式读写一轮需要两次拷贝:用户空间->共享内存,共享内存->用户空间共享内存一般通过memcpy()进行拷贝,因此共享内存数据并不会自动清空CreateFileMapping()第一个参数INVALID_HANDLE_VALUE时,实际是在内核内存创建一个磁盘无关的内存,不属于任何进程空间里的,不使用时需要释放(任何进程都可拿着句柄去释放?有待验证);
2022-09-25 17:39:53
1381
原创 C/C++windows管道
管道是进程通信的一种方式,其原理是内核里的一个缓冲区,不同进程该内存读写字节流数据创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机。一个进程在向管道写入数据后,另一进程就可以从管道的另一端将其读取出来。**匿名管道**是只存在于内核的一块缓存区,做成文件读写方式,磁盘并无实体文件命名管道是一种特殊的系统(设备)文件wins下一般在/./pipe/pipename,而跨网络的时候需要将.替换成服务器的地址;在内核中是以环形队列形式存储的,且是FIFO的。
2022-05-07 15:59:07
959
原创 c++11 & stl
容器vectorvector.erase(iterator):返回下一个迭代器vector.insert(iterator, value):返回插入位置的迭代器listlist.erase(iterator):返回下一个迭代器list.erase(iterator1,iterator2):返回iterator2指向的迭代器,删除范围[iterator1, iterator2)mapmap.erase(iterator):返回下一个迭代器setset.erase(itera
2021-04-01 17:58:44
122
转载 c++基础知识整合
#多态##动态多态动态多态则是利用虚函数实现了运行时的多态,也就是说在系统编译的时候并不知道程序将要调用哪一个函数,只有在运行到这里的时候才能确定接下来会跳转到哪一个函数的栈帧。模式套路可归纳为“继承+虚函数+重写”派生类对象的地址可以赋值给基类指针。对于通过基类指针调用基类和派生类中都有的同名、同参数表的虚函数的语句,编译时并不确定要执行的是基类还是派生类的虚函数;而当程序运行到该语句时,如果基类指针指向的是一个基类对象,则基类的虚函数被调用,如果基类指针指向的是一个派生类对象,则派生类的虚函数.
2021-03-23 17:15:27
151
转载 amrwb
学习笔记,先附上链接windows播放PCM裸流waveOut比较好的介绍typedef struct tWAVEFORMATEX{WORD wFormatTag; // 声音格式,WAVE_FORMAT_PCM…WORD nChannels; // 通道数量DWORD nSamplesPerSec; // 样本频率,通常11025,8000,22050,44100DWORD nAvgBytesPerSec;// 设置请求的平均数据传输率,创建缓冲大小要
2020-12-18 15:49:36
233
2
原创 NSIS学习笔记
Rename [/REBOOTOK] 源文件 目标文件把 源文件 重命名为 目标文件如:Rename $INSTDIR\file.ext $INSTDIR\file.dat遇到一个问题:Rename $INSTDIR\dir1 KaTeX parse error: Undefined control sequence: \dir at position 8: INSTDIR\̲d̲i̲r̲2本想要将INSTDIR\dir1重命名为KaTeX parse error: Undefined contr
2020-11-26 15:33:07
371
1
原创 2020-11-20
vs2013+ole添加工程第3步创建空ole工程完成时,编译出现错误C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(1620,5): error MSB8011: Failed to register output. Please try enabling Per-user Redirection or register the component from a command p
2020-11-20 14:13:37
77
转载 duilib之xml属性大全
xml属性大全<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="属性列表.xslt"?><!-- 可能有错漏,欢迎补充。wangchyz(wangchyz@gmail.com) --><Controls> <Window parent=""> <Attribute name="size" default="0,0" type=
2020-11-16 14:55:30
877
原创 C++23种设计模式之桥模式,装饰模式
桥模式(Bridge)桥模式意图:将抽象部份与它的实现部份分离,使它们都可以独立地变化装饰模式(Decorator)装饰模式装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象既然可以动态增加功能,那么这功能也可以动态地被撤销,重点:扩展/增强 对象的功能 ,而非 限制 对象的功能代码:#include <bits/stdc++.h>////装饰模式//关键代码:// 1.Compon
2020-08-28 18:15:25
148
原创 duilib消息学习笔记
总起消息处理先后往下递减:实现IMessageFilterUI接口,调用CPaintManagerUI::AddPreMessageFilter,进行消息发送到窗口过程前的过滤。重载HandleMessage函数,当消息发送到窗口过程中时,最先进行过滤。实现INotifyUI,调用CPaintManagerUI::AddNotifier,将自身加入Notifier队列。添加消息代理(其实就是将成员函数最为回到函数加入),MakeDelegate(this,&CFrameWindowWn
2020-05-27 16:05:38
206
原创 重构代码总结
第2章 重构原则重构重构就是“代码整理”,最终使得程序开发效率更高,维护成本更低如何效率更高,成本更低:代码结构清晰,耦合度低,封装合理,继承体系合理,改变性能具体表现:添加新功能快速,修改快,且影响范围小重构工作是无时不刻都可以进行的 重构与重写:重构是代码重构前大部分功能正常工作;重写则是该代码负责的功能大部分不能正常工作项目接近后期不应该进行重构工作重构与设计敏捷开发与...
2019-12-23 11:28:44
386
原创 duilib之xml:corner和float属性
1.corner1.1贴边https://blog.csdn.net/rrrfff/article/details/72522252.2降低失真https://blog.csdn.net/hexiaobinsx/article/details/502808752.float值说明false不浮动true配合pos使用,浮动到指定的位置,如pos=“10,1...
2019-12-13 15:43:47
1000
原创 win程序调用Qt界面dll
以VS导入QT截屏dll为例#准备VS下Qt截屏程序:链接: https://pan.baidu.com/s/1fg2L9QuyoQJl2WJgHd0jYQ 提取码: 9jwkwin调用dll,github开源,支持QT5:https://github.com/qtproject/qt-solutions已写好,可直接调用的QT写的dll:链接: https://pan.baidu....
2019-09-10 18:09:20
553
原创 QSystemSemaphore & QSharedMemory
QSystemSemaphore & QSharedMemoryQSharedMemoryQSystemSemaphore单例实现QSharedMemory类介绍(详细):https://blog.csdn.net/nirendao/article/details/51585302总结点:1.creat后默认isAttach();2.只要key一样,就是操作对应的一块共享内存,如...
2019-09-05 16:50:57
337
原创 std::promise,std::future和std::packaged_task
#std::promisestd::promise是一个模板类: template<typename R> class promise。其泛型参数R为std::promise对象保存的值的类型,R可以是void类型。std::promise保存的值可被与之关联的std::future读取,读取操作可以发生在其它线程。std::promise允许move语义(右值构造,右值赋值),但不...
2019-08-23 20:37:05
274
原创 c++23中设计模式之单例模式、工厂方法、抽象工厂
参考https://www.csdn.net/gather_2a/MtzaYgwsNTEtYmxvZwO0O0OO0O0O.htmlhttps://blog.csdn.net/taiyang1987912/article/category/2859245/2?#单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。#include <iostream>u...
2019-08-06 14:21:39
377
原创 vs2013-chromium完整源码任意节点编译
#推荐阅读chromium官网win编译:https://www.chromium.org/developers/how-tos/get-the-code网上例子1:https://www.cnblogs.com/diligenceday/p/5747879.html网上例子2:https://juejin.im/post/5a45ab5651882525ab7c17ef#环境:*64位...
2019-06-18 12:01:21
399
原创 vs2013编译cef源码总结
vs2013编译cef源码总结vs2013编译cef源码总结–亲测可行首先推荐几篇不错的其他博客:https://blog.csdn.net/lengyue2015/article/details/77972035https://blog.csdn.net/qiangzi4646/article/details/79578432这里我主要在他们基础上补充两点内容:1.路径要正确2.编...
2019-04-01 11:53:10
566
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人