WangHaonie 的博客
  • 🏠主页
  • 😁关于
  • 🏷️标签
  • 📖文章
  • 🌏分站
    🌎主站:GitHub Pages 🌎主站:本地局域网 🌎分站:Vercel 🌎分站:Netlify
  • 💰打赏

自定义 Font/ColorDialog 等常用对话框样式

前言在之前的文章 (后文也用 “之前” 来表示这篇文章) 中,我们学会了如何通过 HookProc 使 Font/ColorDialog 具有深色主题。可是其中 FontDialog 的效果非常令人不爽,如果按照常规思路处理自绘来强行应用深色主题的话肯定是行不通的,几乎无解。 然而今天我们就可以来解决这个问题,虽然效果并非 100%,但好歹有个 90%,总之比先前更好。 剖析 FontD
2025-08-28
#Windows #CSharp #WinForms #长篇 #Cpp

在 C# 里引入 C++ 类型,增强 Interop 体验

开门见山各位想过在 C# 里直接使用 HWND、BOOL、COLORREF、HRESULT、HDC 等这些常见的 Win32 类型吗?感兴趣的话就来看看吧。 起因为什么我会想到这种操作呢?这还得从下面两件事说起 万恶之源—RECT经常做 Interop 的朋友们一定都写过这个类型吧,它是用来表示对象位置的大小的结构体: 12345678[StructLayout(LayoutKind.Sequen
2025-07-28
#Windows #CSharp #Cpp

【COM API】(1) 心心念的 ITaskbarList3 使用方法

简介ITaskbarList3: 你可能不认识我,但你一定见过我的样子: 这就是 ITaskbarList 的功能之一,任务栏进度条。ITaskbarList3 是 ITaskbarList 的第三版,也就是在这个版本,微软加入了任务栏进度条的功能。 使用条件 系统:Windows 7 及以上 COM 运行环境:STA CLSID:CLSID_TaskbarList IID:IID_ITaskb
2025-07-24
#Windows #CSharp #Cpp

【COM API】(0) 基础知识与使用方法

初识 COM API和 WinAPI 类似,COM API 也提供了一系列函数供应用程序调用来实现功能。两者都属于 Windows API 范畴,但在调用方式上有着很大的不同。 WinAPI COM API 调用 DLL 中导出的函数 通过接口指针调用虚函数 指定函数名就可以调用 指定 CLSID 和 IID 进行初始化 调用完不需要释放函数 调用完需手动释放以及销毁接口指针
2025-07-24
#Windows #CSharp #Cpp

从零开始让你的 WinForms 应用程序也用上原生深色主题

文章较长,请耐心阅读~ 前言如果你不喜欢 WinForms 仅仅是因为它不支持深色主题的话,那一定要看看这篇文章。要注意的是: 最新版 .NET 貌似已经支持深色模式,但本文只针对低版本 .NET; 推荐有一定 Win32/C++ 编程经验的朋友们阅读,没有也没关系,我会尽量用通俗的语句来讲解,很简单的; 原生深色主题作用范围有限 (毕竟不是公开的),不能达到 100% 覆盖,且仅支
2025-07-23
#Windows #CSharp #WinForms #长篇 #Cpp

【C#】优化你的 else if 语句,告别屎山

前言相信大家在开发过程中,一定用过 else if 语句吧。可别小瞧这玩意儿,如果你的逻辑不是最优的话,就不能写一个最最完美的 else if 了。比如说我就是,虽然逻辑上合理,但在编译器看来还是屎山依托。也就是说我们想的只是满足正常运行的最低要求,仍然需要对他们进行优化。 下面就以我在项目中遇到的案例来给大家讲解。 前置知识如果你和我一样思维不灵活,或者说没理解 if else 的精髓的话,一定
2025-07-23
#CSharp

【C#】for 和 foreach 循环的选择

前言先简单看看一下 for 与 foreach 在遍历集合的区别,最根本的:for 更胜一筹 for -> 基于索引器 -> 调用本机代码 -> 拿出数据。 foreach -> 基于 Enumerator -> GetEnumerator() -> 进入 while 循环 -> 索引器拿出数据 -> MoveNext() (类似于 for 循环:
2025-07-22
#CSharp

【C#】List<T> 和 T[] 的选择

前言在开始之前,我相信大家都知道 List<T> 是动态数组,可增删元素,必要时自动扩容;而 T[] 是真正意义上的数组,元素个数在创建时就确定了。但尽管如此,我发现大家在开发过程中即使遇到数据数量固定的场景也更喜欢用 List<T> 而不是 T[]。本文就带讲一下这两种数组的区别,以及合理的使用。注意为了区分,后文将 List<T> 称为 列表,T[] 称为
2025-07-22
#CSharp

可定制性极高! 不用设计器,教你纯靠代码添加控件并完成布局

文章较长,请耐心阅读~ 前言如果你不喜欢 WinForms 仅仅是因为控件的创建是从工具箱里拖出来的太幼稚了,没有声明式 UI (XAML) 那么爽,那一定要看看这篇文章。 几天前我在清理 PlainCEETimer 项目的时候,发现有一类代码我忍它很久了可是都无从下手,那就是设计器生成的代码。于是为了减轻代码量达到优化的目的,我就在想有没有方法可以在不依赖设计器的情况下完成控件的添加以及排版布
2025-06-18
#Windows #CSharp #WinForms #长篇

关于 Administrator 账户的一个紧急发布

前言在之前的文章中,我们提到了如何切换为 Administrator 账户或者使当前账户具有管理员权限。但近期我发现网上似乎出现了一些抵制使用内置管理员为主账户的说法,所以到底是否可以将 Administrator 作为主账户,这期文章就来简单说明一下。 正文我从接触电脑开始,一直使用 Administrator 账户。因为当时还依赖盗版系统,默认就是 Administrator,后来自己学会安装
2025-05-21
#Windows
123
Hexo Fluid
正在加载网站运行时间,请稍候...
Copyright © 2023-2025 WangHaonie | 萌ICP备20229939号