- 博客(397)
- 问答 (1)
- 收藏
- 关注
原创 C++20协程——最简单的协程
分别用于控制协程开始、协程即将结束时是否要挂起(挂起后会转移执行权,可以转移给调用者,或者其他协程)。一个函数返回了“协程接口”,那么这个函数就是一个协程。是标准库提供的两个awaitable(可等待体)。函数(协程)执行时,编译器会在代码块最前面执行。(awaitable是另外的,非必须。之前(或者在异常跳出之前)执行。
2024-12-09 23:16:07
269
原创 Windows核心编程笔记——DLL基础
事实上,该DLL几乎完全丧失了它的DLL身份:对进程中的线程来说,该DLL中的代码和数据就像是一些附加的代码和数据,碰巧放在进程地址空间中。导入段只包含了DLL的名称,不包含DLL的路径。因此,除非知道可执行模块的开发人员与DLL模块的开发人员使用的是相同的工具包,否则应该避免从DLL中导出C++类。在应用程序或其他DLL调用一个DLL中的函数之前,必须将DLL的文件映像映射到调用进程的地址空间中。在系统将一个DLL的文件映像映射到调用进程的地址空间之后,进程中所有的线程都可以调用该DLL中的函数。
2024-11-07 10:30:31
806
转载 Windows/Linux x64汇编函数调用约定
x86:又名 x32 ,表示 Intel x86 架构,即 Intel 的 32位 80386 汇编指令集。x64:表示 AMD64 和 Intel 的 EM64T ,而不包括 IA64。至于三者间的区别,可自行搜索。x64 跟 x86 相比寄存器的变化,如图:从图上可以看到,X64架构相对于X86架构的主要变化,是将原来所有的寄存器都扩大了一倍,例如EAX现在扩充成RAX,同时,又新增加了从R8~R15这8个64位的寄位器,有点RISC的味道(RISC特点就是寄存器多)。
2024-10-15 15:51:55
223
原创 C++20投影、范围与视图
使用C++20中的基于范围的算法,可以有效地解决这些问题,甚至可采用多种方法解决它们。可选的投影参数甚至可以是指向(无参数)成员函数的指针,或者是指向(公共)成员变量的指针。视图允许改变后续算法步骤看待给定范围的方式、看到这个范围的哪些部分以及/或者查看这些部分的顺序。基于范围的算法在内部使用的仍然是迭代器。顾名思义,范围工厂不是适配给定的范围,而是生成一个新的范围。实际上,每个视图就是一个范围,但并非所有的范围都是视图。例如,容器是一范围,但它不是视图,容器中的元素越多,复制和销毁元素的开销就越高。
2024-10-13 12:03:37
1175
转载 windows开启自动dump
将上述内存保存为*.bat,然后执行,就开始了自动抓dmp文件的功能,只要有程序崩溃,就会在指定的目录下生成。如果程序崩溃没有产生 dump 文件则可能是没有权限,将目录修改为有权限的目录即可。
2024-10-10 19:22:25
228
原创 解决TortoiseGit文件夹图标不见的问题。
把里面的TortoiseGit开头的前面多补几个空格,让它们排到靠前的位置,然后重启电脑。据说是windows只有前11/15个图标有效,虽然好蠢但是目前大家都在这样做,真无语。
2024-10-05 10:05:04
373
原创 Unicode与ANSI字符串的转换(MultiByteToWideChar与WideCharToMultiByte)
【代码】Unicode与ANSI字符串的转换(MultiByteToWideChar与WideCharToMultiByte)
2024-09-25 10:34:01
317
原创 C++移动语义
移动语义,如果想要理解它,那么你的重点不应放在“移动”,而在于“语义”。因为移动,是由移动构造函数、移动赋值运算符决定的,是否真的发生移动了、如何实现移动,都要看具体实现。不论是类设计者还是类使用者,关键都在于遵照语义。下面一步步帮你理解。
2024-09-14 19:37:29
444
原创 C++ lambda闭包消除类成员变量
消除了——通过将它们闭包到lambda表达式中,然后将这个lambda存起来重复使用。如果用引用捕获,栈变量会释放导致非法访存;可以借助函数式编程思想,来消除一些不必要的类成员变量。拿到一个类,一看成员变量好几十个,就问你怕不怕?在面向对象编程时,常常要添加类成员变量。然而类成员一旦多了之后,也会带来干扰。就无法修改值捕获的变量。
2024-09-11 22:33:26
545
原创 OpenGL——着色器画一个点
内置变量用来设置顶点在3D空间中的坐标位置,并将其发送到下一个管线阶段。GLSL数据类型vec4用来存储四元组,适合用来存储坐标,四元组的前3个值分别表示x、y、z坐标,第4个值在这里设为1.0(暂时不用了解)。本例中,顶点坐标被硬编码为原点。
2024-09-07 11:20:30
345
原创 C++小技巧——指针实例容器
这样,可以在初始化时将需要用的对象,特别是那些几乎只会有一个实例的类,会方便许多。实际开发中,两个不同的类对象有时要完成数据交互,需要能够获取到对方,如何获取?此处的思路是引入一个中间对象,单例的容器,用于存取变量。
2024-08-27 10:58:14
317
原创 QtQuick 布局管理-布局管理器
在一个布局管理器中横向排列两个矩形,当拉伸程序窗口时,左边距形可以从50x150变化到300x150,右边矩形可以从100x150变化到∞x100。与定位器不同,布局管理器不仅进行布局,而且会改变项目的大小,所以更适用于需要改变用户界面大小的应用。布局管理器的大小约束可以用来确保窗口大小不会超过约束条件,还可以将布局管理器的约束设置到窗口项目的。属性来设置当前显示的项目,索引号对应布局管理器中子项目的顺序,从0开始。为了将布局管理器与窗口进行关联,可以为布局管理器添加锚。,此时,有效的最佳高度会从。
2024-08-11 16:59:31
794
原创 QtQuick 布局管理-基于锚的布局
另外,还可以通过JavaScript改变锚,但是一定要注意操作的顺序,否则可能出现奇怪的结果。锚定系统也允许为一个项目的锚指定边距(margin)和偏移(offset)。其中baseline是一条假想的线,文本坐落在这条线上。Qt Quick锚定系统允许不同项目的锚线之间建立关系。对于没有文本的项目,baseline与top相同。边距指定了项目锚到外边界的空间量,偏移则允许使用。类型,以便在运行时修改项目的锚,它需要在状态。,所以所有可视项目都可以使用锚进行布局。不能修改项目的边距,需要时可以使用。
2024-08-11 16:02:13
341
原创 QtQuick 布局管理—定位器
Column、Row、Grid和Flow中会附加一个Positioner类型的对象作为顶层子项目,它可以作为定位器中的子项目提供索引等信息。每一个项目都会被放置在网格左上角(0, 0)的位置。通常会包含在一个定位器中,用于直观地对Repeater产生的众多委托项目进行布局。这里使用了一个矩形作为委托,在其中通过index索引属性显示了每个子项目的编号。在Repeater中创建的项目数量可以通过count属性获得,该属性是只读的。定位器(Positioners)是一个容器,可以管理其中子项目的布局,包括。
2024-08-11 15:18:50
865
原创 Qt解析XML
结果发现低估了难度,VS会间接引入许多目录。略有不甘,暂且作为一个解析XML文件的示例。),配合cppclean来发现多余的。本来想解析VS的项目配置文件(
2024-08-10 20:50:52
505
原创 QtQuick TextEdit
这里将focus设置为true,使TextEdit项目接收键盘输入。TextEdit没有提供滚动条、光标跟随等通常行为。TextEdit用于显示多行、可编辑的格式化文本。元素提供滚动,实现光标跟随。可以显示纯文本、富文本。,暂时感觉不是很重要。
2024-08-10 15:07:31
201
原创 QtQuick TextInput
TextInput默认没有漂亮的外观。一般吧直接使用TextInput本事,而是自定义一个组件爱你,外部直接使用新的组件代替TextInput。属性可以使用鼠标选取TextInpu中的文本。在Qt 6.4以前该属性默认为false,之后的版本默认为true。信号处理器,而且只有当所以必须输入的字符都输入后,按下回车键才可以调用该信号处理器。TextInput还提供了许多和文本选取有关的方法,例如用于复制的。可以分别获取鼠标选取的文本块前后的光标位置。,它们都会在回车键按下时被调用。获取选中的文本,使用。
2024-08-10 14:46:50
455
原创 类模板实现实现Qt click/hover自定义操作
不能在类模板中使用,导致我们不能在模板类中设置信号。不过也不是刚需,上面的场景回调函数足够用了。/QSS只能实现常规态、按下态的图标切换,hover态的图片设置无效。注意,只能通过组合的方式。如果通过多继承的方式,例如让模板类继承。然而,总要为这些鸡毛蒜皮的操作“小动干戈”会让人不爽。如果一定要使用信号,那么就要用一个类来代理信号的发送。常常会需要实现点击/hover时修改图片,可能是一个。解决思路无非是安装事件过滤器、自定义类并重实现事件。这里选择更通用的类模板来简化操作。不支持多重继承,会有问题。
2024-08-06 11:49:22
1171
原创 QtQuick Text-文本格式和超链接
时可以自动判定是否以样式文本进行显示,这是通过检查文本是否存在HTML标签来判定的,通常情况下可以正确判断,但是并不能保证绝对正确。处理器,它会在用户单击了文本超链接时被调用。超链接必须使用富文本或者HTML格式。解析器很严格,需要标签必须正确嵌套。其中link提供了被单击的特定链接。Text项目提供了一个。
2024-08-03 13:51:54
295
原创 QtQuick Text-对齐方式
在这种情况下,所以的对齐都是等价的。如果想让文本处于父项目的中间,那么可以使用。对于没有设置Text大小的文本,Text的大小就是包含文本的区域。分别用来设置文本在 Text项目区域中的水平、垂直对齐方式。
2024-08-02 22:41:33
266
空空如也
临界区线程同步_疑惑
2021-02-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人