<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[溡漪幽博客]]></title><description><![CDATA[涟幽516 的博客，欢迎关注点赞]]></description><link>https://blog.csdn.net/qq_59075481</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; qq_59075481]]></copyright><item><title><![CDATA[ImGui 学习笔记（六）—— 高 DPI 缩放]]></title><link>https://blog.csdn.net/qq_59075481/article/details/146324194</link><guid>https://blog.csdn.net/qq_59075481/article/details/146324194</guid><author>qq_59075481</author><pubDate>Mon, 17 Mar 2025 19:56:43 +0800</pubDate><description><![CDATA[字体和高 DPI 处理，可以看这几个：https://github.com/ocornut/imgui/discussions/3925https://note.stalomeow.com/p/imgui-handle-high-dpi/https://github.com/ocornut/imgui/blob/master/docs/FONTS.md]]></description><category></category></item><item><title><![CDATA[ImGui 学习笔记（五） —— 字体文件加载问题]]></title><link>https://blog.csdn.net/qq_59075481/article/details/146322138</link><guid>https://blog.csdn.net/qq_59075481/article/details/146322138</guid><author>qq_59075481</author><pubDate>Mon, 17 Mar 2025 18:27:06 +0800</pubDate><description><![CDATA[这个好解决，在加载函数前面加上一些路径检查和转换的代码，比如转为绝对路径（程序目录+文件名），然后检查权限，权限不够就改用 COM 或者提权（我这里不考虑跨平台，所以没关系，如果考虑跨平台，可能需要更多修改）。当参数中包含中文字符时，ImGui 内部将字符转换为宽字符字符集时候，采用的 MultiByteToWideChar API 参数不太对，应该改为 CP_ACP 才对，原本它使用的是 CP_UTF8。修改前，字体加载失败，然后我发现它处理相对路径的方式也不好。明显路径中中文编码出现了乱码?]]></description><category></category></item><item><title><![CDATA[ImGui 学习笔记（四）—— 实现每窗口背景色]]></title><link>https://blog.csdn.net/qq_59075481/article/details/146256876</link><guid>https://blog.csdn.net/qq_59075481/article/details/146256876</guid><author>qq_59075481</author><pubDate>Fri, 14 Mar 2025 14:35:05 +0800</pubDate><description><![CDATA[这里的 ImU32 bg_col = GetColorU32(GetWindowBgColorIdx(window));就是窗口要设置的背景颜色，想办法改成跟窗口 id，name 或者 hash 绑定的数值即可。]]></description><category></category></item><item><title><![CDATA[Windows 小记 21 —— dumpbin 命令查看模块依赖项]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145925360</link><guid>https://blog.csdn.net/qq_59075481/article/details/145925360</guid><author>qq_59075481</author><pubDate>Fri, 28 Feb 2025 12:15:28 +0800</pubDate><description><![CDATA[dumpbin 命令可以用来看动态库导出了哪些函数 dumpbin /EXPORTS a.dll ，exe 加载了哪些动态库 dumpbin /IMPORTS a.exe，查看静态链接库中包含哪些函数 dumpbin /ALL /RAWDATA:none a.lib。这个命令默认是不在 cmd 里，安装了 VS 的话需要在 VS 的开发者命令提示 Developer Command Prompt 里运行才能找到这个命令。]]></description><category></category></item><item><title><![CDATA[Windows 小记 22 —— 在 Windows 上排查 DLL 依赖问题]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145921960</link><guid>https://blog.csdn.net/qq_59075481/article/details/145921960</guid><author>qq_59075481</author><pubDate>Fri, 28 Feb 2025 10:48:05 +0800</pubDate><description><![CDATA[缺失导入的模块将会在左侧依赖树形图中显示为粉色高亮的图标，并在光标悬停在模块标签上时，显示 “ xx 模块缺失导入条目” 的提示信息。双击模块标签，可以在右侧的依赖信息视图中看到模块的导入依赖，它显示所有需要的函数的列表。缺失或不匹配的函数将在 PI 列显示为红色突出的图标。注意：导入缺失表明所需模块与本机上实际加载的模块不匹配，这是版本问题导致的。具体到系统模块，比如这里的 comctl32.dll 有多个版本共存，出现导入不匹配，则可能是因为程序的清单文件中 SxS 加载配置存在错误。]]></description><category></category></item><item><title><![CDATA[Windows 小记 20 —— 模块依赖项的类型]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145921675</link><guid>https://blog.csdn.net/qq_59075481/article/details/145921675</guid><author>qq_59075481</author><pubDate>Fri, 28 Feb 2025 10:22:53 +0800</pubDate><description><![CDATA[（也称为加载时依赖，有时被错误地称为静态依赖）：模块 A 在编译/链接时与模块 B 的 LIB 文件隐式链接，模块 A 的源代码实际上调用模块 B 中的一个或多个函数。模块 B 是模块 A 的加载时依赖，无论模块 A 是否在运行时实际调用模块 B，模块 B 都将被加载到内存中。：模块 A 在编译/链接时与模块 B 的 LIB 文件链接在一起，并且模块 A 的源代码实际上调用了模块 B 中的一个或多个函数。模块 B 和模块 C 都是模块 A 的依赖项，但只有模块 B 会列在模块 A 的导入表中。]]></description><category></category></item><item><title><![CDATA[Windows 小记 19 —— 在调试时使用加载器快照日志输出]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145917112</link><guid>https://blog.csdn.net/qq_59075481/article/details/145917112</guid><author>qq_59075481</author><pubDate>Fri, 28 Feb 2025 10:20:56 +0800</pubDate><description><![CDATA[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\目标进程名.exe]调试一些进程启动相关的错误时，可以尝试开启系统的加载器快照选项。这将允许调试目标进程时候由系统加载器向调试器提供更多的日志信息。在调试时，需要注意可能因为系统的进程缓解策略或者安全软件而产生中断，这一点得仔细检查。调试器将在下一次启动调试实例或者附加到进程时获取到加载器输出的信息。]]></description><category></category></item><item><title><![CDATA[Windows 小记 18 —— 子窗口继承父窗口的样式]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145786974</link><guid>https://blog.csdn.net/qq_59075481/article/details/145786974</guid><author>qq_59075481</author><pubDate>Fri, 21 Feb 2025 22:33:09 +0800</pubDate><description><![CDATA[指定所有者窗口时，子窗口将从父窗口/所有者窗口拷贝部分样式和扩展样式。此问题发生在 ImGui 的 win32 后端逻辑中，作者错误地设置所有者窗口，导致当 win32 平台窗口设置 WS_EX_TOPMOST 样式时，无法控制在多视口种的新窗口的样式。所以，当你发现你的 WS_POPUP 样式的窗口默认具有 WS_EX_TOPMOST 时候，不要觉得奇怪。可能是你设置了所有者窗口。例如，当所有者窗口具有 WS_EX_TOPMOST 样式时候，其创建的子窗口将具有 WS_EX_TOPMOST 样式。]]></description><category></category></item><item><title><![CDATA[ImGui 学习笔记（三）—— 隐藏主窗口&窗口关闭检测]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145773493</link><guid>https://blog.csdn.net/qq_59075481/article/details/145773493</guid><author>qq_59075481</author><pubDate>Fri, 21 Feb 2025 20:12:14 +0800</pubDate><description><![CDATA[另一种隐藏平台窗口的实现是使用分层透明，这里我也介绍一下，就是在 Win32 窗口创建时使用纯色画刷，然后使用 SetLayeredWindowAttribute 将背景色去除，将平台窗口设置为无边框全屏窗口（注意不是独占显示器的窗口），然后给窗口添加 WS_EX_TRANSPARENT 样式，这将允许在窗口完全透明的位置穿透鼠标、键盘消息。我们最好在窗口透明的基础上隐藏平台窗口。然后，我们在平台窗口创建时候，指定 WS_POPUP WS_EX_TOOLWINDOW 以便于不在任务栏显示平台窗口的图标。]]></description><category></category></item><item><title><![CDATA[Detours 中几个比较重要的 API]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145781870</link><guid>https://blog.csdn.net/qq_59075481/article/details/145781870</guid><author>qq_59075481</author><pubDate>Fri, 21 Feb 2025 17:17:15 +0800</pubDate><description><![CDATA[如果目标进程的大小与父进程不同，Detours 将自动在路径名中将"32"替换为"64"或"64"替换为"32"。更新的导入表将包含对从目标 DLL 导出的函数序号 #1 的引用。如果目标进程是 32 位且父进程是 64 位，或者如果目标进程是 64 位且父进程是 32 位，当执行恢复时，Windows 进程加载器将首先加载目标 DLL，然后加载应用程序导入表中的任何其他 DLL，最后调用应用程序入口点。将 DLL 载入一个临时匹配目标进程的辅助进程，以便用正确的 DLL 更新目标进程的导入表。]]></description><category></category></item><item><title><![CDATA[Windows 小记 17 —— TLS 回调中使用 CRT 函数导致崩溃]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145514208</link><guid>https://blog.csdn.net/qq_59075481/article/details/145514208</guid><author>qq_59075481</author><pubDate>Sat, 08 Feb 2025 13:57:15 +0800</pubDate><description><![CDATA[PE 格式包含一个可选标头，其中有一个名为“AddressOfEntryPoint”的插槽，该插槽调用一个函数，该函数将调用 _DllMainCRTStartup，从而触发初始化链。所以，在静态链接选项（对于 MSVC 是 /MT 编译选项）启用时，TLS 中如果执行了 CRT 函数，将因为尚未初始化资源，而导致访问非法内存而导致崩溃。首先我们需要知道 TLS 回调的执行在程序入口点之前，而在静态链接时，CRT 的初始化在入口函数执行时才会进行。]]></description><category></category></item><item><title><![CDATA[ImGui 学习笔记（二）—— 多视口]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145453233</link><guid>https://blog.csdn.net/qq_59075481/article/details/145453233</guid><author>qq_59075481</author><pubDate>Wed, 05 Feb 2025 13:25:16 +0800</pubDate><description><![CDATA[其基本原理是当检测到 ImGui 窗口超出平台窗口的客户区边界时，自动创建新的平台窗口，并在新的平台窗口下渲染该 ImGui 窗口。此处的“窗口”并非窗口管理器里的视窗，而是借用窗户进行类比，因为它能够限制你所能够观察到的场景的范围。借助多视口，Dear ImGui 能够根据需要创建新的操作系统平台窗口和图形上下文，以托管已移出主操作系统平台窗口边界的 Dear ImGui。使用 ImGui 的 docking （停靠）分支，将支持多视口和停靠功能，这个分支目前受到良好的维护和测试，相对稳定。]]></description><category></category></item><item><title><![CDATA[ImGui 学习笔记（一）—— 创建窗口]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145409563</link><guid>https://blog.csdn.net/qq_59075481/article/details/145409563</guid><author>qq_59075481</author><pubDate>Wed, 05 Feb 2025 02:03:34 +0800</pubDate><description><![CDATA[谈谈学习了几天 imgui 代码后的感觉（暂时还不能说感受或者感悟），这里的窗口并不是真正意义上的平台窗口（平台窗口的实现需要根据具体的平台来决定，通过调用平台的 API 创建一个存根窗口，然后调用后端在根窗口上进行渲染。一个视口中可以有多个窗口元素，当一个窗口元素从主视口中移出时，ImGui 会隐式地创建新的平台上下文和一个新的平台窗口，将元素从原来的视口结构中移动到新的视口结构中（此时窗口就独立出来了）。后续的元素将在新的窗口下生成（会和前面的分离开来）。]]></description><category></category></item><item><title><![CDATA[【转载】通过 GetMessageExtraInfo 方法判断当前收到的鼠标消息是否来自触控板和 Pen]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145404453</link><guid>https://blog.csdn.net/qq_59075481/article/details/145404453</guid><author>qq_59075481</author><pubDate>Fri, 31 Jan 2025 11:40:48 +0800</pubDate><description><![CDATA[根据 GetMessageExtraInfo 方法获取到的 LPARAM 进行 Mask 一下 0xFFFFFF80 值，即可通过返回的结果判断鼠标消息的来源，如返回的结果是 0xFF515780 则判断是 Touch 触摸消息过来的，通过返回结果是 0xFF515700 则判断是 Pen 笔过来的。如果此时应用程序想要根据消息循环里面接收到的 Win32 消息判断一个鼠标消息的来源是否来自于触摸框触摸屏或者是 Pen 笔等，可以通过 GetMessageExtraInfo 方法获取更多的信息。]]></description><category></category></item><item><title><![CDATA[[转载] 理解 SetCapture、ReleaseCapture、GetCapture]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145394921</link><guid>https://blog.csdn.net/qq_59075481/article/details/145394921</guid><author>qq_59075481</author><pubDate>Wed, 29 Jan 2025 20:33:26 +0800</pubDate><description><![CDATA[很多时候，窗口或控件在鼠标按下后，需要知道鼠标移动和放开的情况，例如按钮在鼠标按下后会变为“按下”状态，鼠标移出按钮区域时“弹起”，所以按钮控件需要在鼠标按下时SetCapture，鼠标放开后ReleaseCapture。当你在浏览本日志的时候，你会拉动右手边的滑动条来调整内容上下位置，那么当你按下左键的时候，移动鼠标到非滚动条处，你会发现上下移动鼠标滚动条仍然后控制，对，这就是俘获鼠标函数SetCapture的作用。函数功能：该函数在属于当前线程的指定窗口里设置鼠标捕获。]]></description><category></category></item><item><title><![CDATA[Microsoft Visual Studio 2022 主题修改（补充）]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145379195</link><guid>https://blog.csdn.net/qq_59075481/article/details/145379195</guid><author>qq_59075481</author><pubDate>Mon, 27 Jan 2025 12:59:49 +0800</pubDate><description><![CDATA[之前一直用的2019，现在换电脑了下的2022，想自定义背景，发现以前的方法不好用了。（参考了以前的经验帖子，链接就放下面了）：(5条消息) Visual Studio 2022界面美化教程_CN天狼-CSDN博客(5条消息) Microsoft Visual Studio 2019 美化之——透明化窗口 Microsoft Visual Studio 2019 C/C++ Windows 下重量级编辑器 Editor_CipherDreams_material studio怎么把背景弄成透明。]]></description><category></category></item><item><title><![CDATA[Windows 小记 16 -- 巧用未文档化事件]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145068144</link><guid>https://blog.csdn.net/qq_59075481/article/details/145068144</guid><author>qq_59075481</author><pubDate>Mon, 27 Jan 2025 09:23:02 +0800</pubDate><description><![CDATA[在最近的学习过程中，一个练习的小项目需要知道桌面什么时候会发生切换（P.S.不是 Win10,11 的虚拟桌面）。登陆系统时候的桌面和进入系统后的桌面不是一个桌面。现在，我们需要在发生窗口切换的时候响应（做一些动作），那么怎么实现呢？最开始时候我考虑到可以循环取活动桌面的信息，然后判断是不是用户桌面。这样的话会比较low。然后，在观察系统事件时候，我不经意间发现了一个细节，桌面切换这件事，系统也在监听！Windows 操作系统中有很多用到进程间通信的地方，不同组件之间是通过相互协作来完成操作的。]]></description><category></category></item><item><title><![CDATA[实现桌面动态壁纸（三）—— 视频播放的策略]]></title><link>https://blog.csdn.net/qq_59075481/article/details/145372399</link><guid>https://blog.csdn.net/qq_59075481/article/details/145372399</guid><author>qq_59075481</author><pubDate>Sun, 26 Jan 2025 22:41:09 +0800</pubDate><description><![CDATA[而实现窗口透明则通过修改播放器渲染输出窗口（或者背景窗口）的样式，即通过 WS_EX_LAYERED 设置分层窗口，然后使用 SetLayeredWindowAttributes(hOutputTargetWnd, RGB(0,0,0), 250, LWA_ALPHA | LWA_COLORKEY) 减除窗口中的黑色颜色，这样就可以实现除渲染以外的部分完全透明了。要真正实现一个动态壁纸套件，其实除了视频播放器还需要一个定制化的 Web 浏览器，因为在前端技术成熟的今天，网页能够做到更多的交互和动画。]]></description><category></category></item><item><title><![CDATA[Java 代码编译和解析方法信息]]></title><link>https://blog.csdn.net/qq_59075481/article/details/144888424</link><guid>https://blog.csdn.net/qq_59075481/article/details/144888424</guid><author>qq_59075481</author><pubDate>Thu, 02 Jan 2025 15:55:57 +0800</pubDate><description><![CDATA[Javassist 是一个强大的字节码操作工具，它提供了在运行时编辑 Java 字节码的能力。通过Javassist，开发人员可以动态地创建和修改 Java 类。这使得在不重新编译整个程序的情况下，能够对类进行动态修改和增强。Java 文件路径！！！！// 打印结果// 打印返回类型} else {= null) {')).trim();break;]]></description><category></category></item><item><title><![CDATA[Win11 的 UI 的简单描述]]></title><link>https://blog.csdn.net/qq_59075481/article/details/144727806</link><guid>https://blog.csdn.net/qq_59075481/article/details/144727806</guid><author>qq_59075481</author><pubDate>Wed, 25 Dec 2024 21:37:56 +0800</pubDate><description><![CDATA[为了方便后面的研究，我整理一下目前调试并收集到的各个窗口（Windows.UI.Xaml.Window，Windows.UI.Core.Window 需要有一个根节点窗口以便于与一般框架兼容）来源。可以等待视图中添加需要的元素时再进行修改，或者模拟快捷键激活一下他的窗口。StartMenuExperienceHost.exe（部分 20H2, 全部的 21H2, 22H2, 23H2, 24H2)Win11 和以前的系统有很大的不同，最明显的一点是很多应用开始使用 UWP（WinUI）重新编写。]]></description><category></category></item></channel></rss>