自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

拓扑梅尔 - 漫漫开发路

专注于Windows平台软件开发,Topomel Box

  • 博客(524)
  • 收藏
  • 关注

原创 为什么 SetWindowsHookEx 采用 HINSTANCE 参数?

做 Windows 世界的良好公民,不要随意使用钩子。除非迫不得已。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Why does SetWindowsHookEx take an HINSTANCE parameter?

2023-09-26 10:18:17 36

原创 Visual Studio 功能增强:CMake 目标视图

现在,你可以使用新的CMakeTargetsViewExcludedItems 字段在 VSWorkspaceSettings.json 中定义要从 CMake 目标视图中排除的项目。CMakeTargetsViewExcludedItems 字段是一个字符串数组。该字段支持以下语法和标识符:CMakeTargetsViewExcludedItems 的语法:这将指定具有指定名称的任何标识符。例如,CMakeTarget:app。

2023-09-23 22:39:58 83

原创 Visual Studio 更新:远程文件管理器

Visual Studio 推出的远程文件管理器确实可以有效提升跨平台开发者的工作效率,原因是开发者无需在不同的工具之间进行切换,提升了心流的一致性体验。老大哥好样的!Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。

2023-09-20 09:51:10 450

原创 VS新功能:智能添加函数标记

看来以下两项代码风格已经渐渐成为 C++ 社区的共识:1) 将不会修改对象状态的成员函数标记为 const。2) 将全局函数标记为 static。既然大多数人都这样做,我们小小开发者也跟随就可以了。(别整那些新玩意儿)Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。

2023-09-17 10:00:59 67

原创 浅谈 DLL 导出函数中的转发器函数

如果你是在 32 位 Windows 平台上做开发,则始终使用名称,而不是序号进行 DLL 调用,这样会免去很多麻烦。毕竟,写入到 SDK 中的名称,不太可能随随便便的改变。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Exported functions that are really forwarders》

2023-09-14 09:55:09 63

原创 在32位Windows中,DLL是如何导出的?

如果你是在 32 位 Windows 平台上做开发,则始终使用名称,而不是序号进行 DLL 调用,这样会免去很多麻烦。毕竟,写入到 SDK 中的名称,不太可能随随便便的改变。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《How are DLL functions exported in 32-bit Windows?

2023-09-11 09:27:20 83

原创 调试心得:通过观察正常的程序行为来识别Bug

随着代码规模越来越大,诊断机制需要进一步完善,单纯通过下断点调试可能不是那么有效了,这个时候,需要结合调试输出和日志来查找问题。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Before you can learn to recognize what’s wrong, you must learn to recognize what’s right》

2023-09-08 07:53:42 298

原创 安全编程:初始化那些你忽略掉的东西

道高一尺魔高一丈,我们必须小心行事。写代码的同时,也将自己带入到黑客角色问自己:”这段代码会不会有安全漏洞?Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Security: Don’t forget to initialize the stuff you don’t care about》

2023-09-05 09:27:13 102

原创 在工具提示中使用自绘修改字体

在 Windows 界面开发中,我们有时候不希望使用系统默认给我们的界面样式,但没关系,我们有自绘这种方法来绘制我们想要的样式,是不是感觉又有希望了呢?Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Using custom-draw in tooltips to adjust the font》

2023-09-02 11:38:56 150

原创 软件的可用性改善:善用帮助信息

如果时常以用户的角度来使用软件,你会发现:工具提示真的是一个十分十分好用的特性。那么,现在立即就在你的软件里加上这个功能吧!Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Coding in-place tooltips》

2023-08-30 10:30:26 86

原创 自动重置事件只是一个愚蠢的信号量

了解你手上工具的使用方法,更加需要了解其局限性。永远在正确的场景下使用正确的工具,这确实挺难的。

2023-08-27 23:49:12 54

原创 思维调试:理解 DDE 的初始化过程

如果你要实现了一个 DDE 服务器,请确保在主线程开始处理消息之前就启动它。否则,应用程序启动和尝试与之通信的外壳之间存在竞争条件。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Psychic debugging: Understanding DDE initiation》

2023-08-24 09:26:39 90

原创 修改窗口类的属性将影响所有该类的窗口

我们可以将窗口类看做一个制造窗口的模版,所有自该窗口类产生的窗口都具有相同的属性,修改了模版的属性,则所有窗口的属性都会发生变化。有时候,这是好事,但我们必须了解其原理。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Window class properties apply to all windows that belong to the class》

2023-08-21 10:18:23 122

原创 浅谈更糟糕的 CS_CLASSDC 标志位的作用

今天的总结是:CS_CLASSDC 咱哥几个是碰都不要碰,谁碰谁知道。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《What does the CS_CLASSDC class style do?

2023-08-19 11:41:38 129

原创 浅谈 CS_OWNDC 标志位的作用

对于自己不了解的东西,要小心谨慎的尝试,决不能先入为主。像一个婴儿一样对待所有新生事物,正所谓:一叶障目也。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《What does the CS_OWNDC class style do?

2023-08-16 09:50:58 91

原创 警惕 C++ 中的隐式类型转换

通过今天的文章,我终于理解了在何种情况下需要在构造函数上加 explicit。你呢?Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Beware the C++ implicit conversion》

2023-08-13 13:31:03 251

原创 使用 Visual Studio Code 调试 CMake 脚本

有了调试器,妈妈再也不担心编写 CMake 脚本了。Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。本文来自:《Introducing CMake Debugger in VS Code: Debug your CMake Scripts using Open-Source CMake Debugger》

2023-08-10 13:47:59 570

原创 谈谈如何使用ShellExecute的返回值

进入到 32 位 Windows 的世界后,实例句柄我已经很少用到了。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《What can I do with the HINSTANCE returned by the ShellExecute function?

2023-08-07 09:34:41 131

原创 古老的新玩法:使用命令行做些简单的计算

这个确实是一种新玩法,如果你对命令行情有独钟的话。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Doing quick arithmetic from the command prompt》

2023-08-04 14:17:07 129

原创 位图和 DC 有什么特别之处?

本文的核心观点是:应用程序不能一次将单个位图选择到多个 DC 中。GDI 这套图形绘制引擎,相对于新出来的 DirectX 来说,属实有点老了。但廉颇虽老,但还是行的。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《What’s so special about bitmaps and DCs?

2023-08-01 10:52:57 179

原创 CS_SAVEBITS 这个样式有什么作用?

记住一点,仅在这些窗口上使用 CS_SAVEBITS : 菜单、工具提示和小的对话框。亲爱的你,记住了吗?Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《What does CS_SAVEBITS do?

2023-07-29 23:29:40 224

原创 请将所有未处理的消息传递给 DefWindowProc

我想这里作者的原则很简单:对于你不想处理的消息,不要处理并简单返回 0,而是交给系统默认处理函数 DefWindowProc。否则,各种意外会发生。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《No, really, you need to pass all unhandled messages to DefWindowProc》

2023-07-26 10:01:07 104

原创 向API添加标志位并不具备扩展性

尽可能地在设计之初就固定好各个组件之间的接口参数,而不是在后期为了解决问题而随意添加参数,这样只会让代码的”坏味道”越来越重,最后积重难返。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Adding flags to APIs to work around driver bugs doesn’t scale》

2023-07-23 09:25:41 105

原创 为什么组合框的大小包括下拉列表的大小?

虽然新版本共用控件库已经帮我们自动解决了此问题,但是知道它的来龙去脉,也是不错的。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Why does the size of a combo box include the size of the drop-down?

2023-07-20 09:44:39 154

原创 Visual Studio 中的新特性:可视化宏扩展

你呀,总能给我整出点新花样。Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。本文来自:《Visualize Macro Expansion for C++》

2023-07-17 17:00:05 515

原创 Visual Studio 新功能:Include 语句清理

你还可以灵活地自定义 Include 清理生成建议的方式,使其能够无缝适应并与复杂而广泛的代码库集成。通过进行这些更改或调整,可以确保该过程更好地与项目的特定需求和复杂性保持一致,从而实现更高效和有效的代码清理。在 EditorConfig(EditorConfig 设置)中,你可以添加单个头文件,如果要包含多个头文件,则应使用逗号分隔它们。这个虽然是一个小功能,但是对于我来说还挺有用,你不必手动添加或删除头文件包含,系统会自动为你分析出来。

2023-07-13 10:10:05 452

原创 小细节:窗口的标题栏实际上还包含边框

对于非客户区的呈现,我还是建议使用系统默认的实现,客户区才是你发挥才华的地方。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《If you ask for a window caption, you also get a border》

2023-07-10 11:10:16 199

原创 浅谈无效化一个空窗口的后果

请立即全文搜索你的代码中的所有 InvalidateRect 调用,看看第一个参数是否为 NULL。反正我等会就会去这样做。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《The consequences of invalidating the null window》

2023-07-07 16:42:09 161

原创 为什么向导式对话框中的取消按钮始终可用

任何时候,都不要对你的用户做那样残忍的事情,这只会让你的用户心生绝望并远离。始终在用户界面上开放一个 [取消] 入口,人生没有后悔药,但是软件有。用户应该始终可以取消他准备做的事情。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Why can’t I disable the Cancel button in a wizard?

2023-07-04 11:18:54 97

原创 枚举一个进程中的所有线程

一般我们会将应用程序的设置数据保存到注册表,这很方便,但是记得读取的时候,尽量只读一次并缓存结果,而不是每次都从注册表里读取,这对运行时性能是有伤害的。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Enumerating threads in a process》

2023-07-01 19:55:50 267

原创 浅谈注册表读取所需要付出的性能代价

一般我们会将应用程序的设置数据保存到注册表,这很方便,但是记得读取的时候,尽量只读一次并缓存结果,而不是每次都从注册表里读取,这对运行时性能是有伤害的。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《The performance cost of reading a registry key》

2023-06-28 10:09:41 98

原创 为什么单击并按住标题栏,程序运行得更快?

我曾经也想过将程序的每次状态变更都呈现在用户界面上,觉得这可以让用户了解程序的实时运行状态。但是在后来的实际体验中,我感觉这并不是想象中那样美好。从用户的角度来说,他/她所希望的事情是:赶紧帮我把活儿做完,别成天整这些花里胡哨的东西。确实如此!毕竟大家都这么忙。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。

2023-06-25 10:12:43 109

原创 我们曾相信开发者会做正确的事情之二

很多商业上的失败案例可以总结为:其实这事儿本来挺好的,但架不住人心险恶啊。话说回来,作为我们开发者,我们需时刻考虑最坏情况,你的代码需要尽可能稳固。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Because programmers were trusted to do the right thing, part 2》

2023-06-22 23:11:08 62

原创 在用户界面线程上等待的危险性

对于在用户界面线程中执行的代码,我的观点是:不是非常必要,都不要使用 Sleep。人的生命是有限的,软件运行的快,是一个终极需求。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《The dangers of sleeping on a UI thread》

2023-06-19 11:02:05 1574

原创 损坏的二进制文件会导致“程序太大而无法放入内存”

如果是开发应用程序,而不是操作系统,在一段数据一开始就被检测到是无效的,我们应该立即停止后续处理,给出错误提示,并崩溃退出。容忍度:零。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《Why does a corrupted binary sometimes result in “Program too big to fit in memory”?

2023-06-16 09:56:03 1342

原创 关于 MsgWaitForMultipleObjects 的理解

有那么一种感觉不知对不对。MsgWaitForMultipleObjects 这个函数适用于一些比较复杂的业务场景,里面会涉及:线程同步对象,用户界面,窗口句柄,Windows 消息。我的拓扑梅尔智慧办公平台 (Topomel Box) 在代码设计不复杂,甚至会特意追求一种更为简单的,老百姓容易的方式来进行架构设计。为什么?只因我确实愚笨,搞不定太复杂的东西。“简约而不简单”

2023-06-13 10:59:47 1765

原创 虚函数表不一定总是在对象的起始位置

虚函数是 C++ 实现动态绑定的基础,这话,我妹说错吧?Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《The vtable does not always go at the start of the object》

2023-06-10 19:32:26 578

原创 ReadProcessMemory可不是一个进程间通信的好方法

目前小僧仅仅使用到了共享内存,惭愧惭愧。什么邮槽管道剪贴板,我是一个都没有听说过。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《ReadProcessMemory is not a preferred IPC mechanism》

2023-06-07 10:16:37 111

原创 调用函数不仅仅只是传递正确的参数类型

深刻理解函数调用的机制,需向下探索到汇编代码层级,底层摸透之后,回头再看,便觉得一切都是那么自然。正所谓:道法自然。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《There’s more to calling a function than just getting the types to match》

2023-06-04 18:54:54 577

原创 调试代码可能会成为潜在的安全漏洞

在开发拓扑梅尔智慧办公平台 (Topomel Box) 的初始阶段,我花了些功夫研究了一些和”主业”不那么相关的主题,例如网络传输加密,本地数据加密等,虽然这会导致进度缓慢,但带来的是那些看不到的回报,例如: “用户的信任”。我们不能辜负用户对我们的信任。Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。

2023-06-01 10:33:48 313

拓扑梅尔智慧办公平台(Topomel Box)是一款日常办公软件,主要面向经常使用电脑的朋友 它提供了各种提升办公效率的小功能

主要特点 1) 远程控制 支持本地局域网模式,通过IP地址连接,也可以支持公网模式(使用唯一ID识别主机),轻松穿透各种防火墙。 新增”最佳性能”模式,在弱网环境下也可以表现良好。 2) 文件传输 支持单个及多个文件传输,并可以在聊天列表中直接预览图片及打开文件。 3) 文字/音视频聊天 支持文本即时聊天。如果对方有摄像头麦克风等设备,则支持双向音视频通话。 4) 最近常用的程序和文件 添加你经常访问的程序和文件,再也不用面对海量的数据找来找去了。 5) 统一的文件管理 将所有你关心的文件都统一存放在同一个地方,支持常用的文件操作,另外,还支持快速文件搜索和文件预览。 6) 加密通信 采用高强度加密对数据进行端到端加密,使用者可以放心传输敏感数据。 7) 全新设计的用户界面 摒弃了复杂笨重的用户界面和操作交互,采用了”轻盈,极简”的设计理念,对用户界面进行了重新设计。

2023-02-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除