代码记录

970次阅读
一条评论

共计 1197 个字符,预计需要花费 3 分钟才能阅读完成。

代码记录

switch记录

switch里不使用break会警告, 可以使用 [[fallthrough]] 来忽略警告

https://learn.microsoft.com/en-us/cpp/code-quality/c26819?view=msvc-170

void fn1();
void fn2();

void foo(int a)
{
    switch (a)
    {
        case 0:    // case 0 和 case1 这里不会有警告, 隐式回退
        case 1:
            fn1(); // 从case 1到 case 2的隐式失误, 这里可以加入 [[fallthrough]]
            // [[fallthrough]] // 加入这个屏蔽警告
        case 2:    // Warning C26819.
            fn2();
            break;
        default:
            break;
    }
}

一句话能说明的记录

c++17的 std::vector.emplace_back 加入了返回对象引用

c++20才加入 char8_t 类型

GetFinalPathNameByHandleW 可以获取文件句柄对应的文件名

std::sort 不能排序std::map 和 std::unordered_map

模拟按键, NtUserInjectKeyboardInput, 必须在gui进程下调用, 参数16个字节, 前4个字节是键代码, 下来4个字节是功能键, 后面两个参数可以为0, 应该是 KEYBDINPUT 结构指针, 定义在winuser.h 头文件里, 第二个参数填1

绘画系统图标相关API, 这些都只能绘画6.0以下的外观
DrawFrameControl 这个可以绘画系统按钮, 菜单等信息
DrawFocusRect 画一个虚线边框, 和列表框差不多
DrawEdge 画边框, 凹陷, 凸起, 等边框
DrawCaption 画系统标题栏
https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-drawcaption
#include <uxtheme.h>
#include <Vssym32.h>
#pragma comment(lib, "uxtheme.lib")
OpenThemeData + DrawThemeBackground 可以绘画主题使用的外观

类方法指针定义, 返回值(调用约定 类名::*类型)(参数), 比如

typedef char&(std::string:: * PFN_at)(size_t);
PFN_at pfn2 = &std::string::at;
// 或者不定义类型, 直接声明变量
char&(std::string:: * 变量名)(size_t) = &std::string::at

调用类指针: 返回值 = (类指针->*方法指针)(参数);

std::string str;
std::string* pStr = &str;
char& ch = (pStr->*变量名)(10);
char& ch = (str.*变量名)(10);

正文完
 0
评论(一条评论)
kuodafu1 评论达人 LV.1
2024-10-26 21:34:08 回复

测试
…..asdas

 Windows  Edge  中国重庆重庆市联通