首页

为什么我的对话框创建失败了?菜鸟错误2  

另外一个创建对话框失败的原因来自如下代码,可能这个原因不那么容易看出来。 这里,我们定义了一个列表控件(ListView Control),但是需要注意的是,使用列表控件之前,需要调用 InitCommonControlsEx 来注册它的窗口类。 创建对话框失败的根本原因是:这个对话框上可能有些控件的窗口类没有提前注册。 如果你使用到了以下控件,则一定记得调用 来初始化它们。 > 工具栏(...

为什么我的对话框创建失败了?菜鸟错误1  

对话框中的资源要么被定义为一个整数,要么被定义为一个字符串。 仅仅一个简单的错误将会将其中的一个类型错误的变成另一个类型。我们来看一个例子。 你是否能发现其中的两处 “菜鸟级错误” ? 如果先获取资源文件并发送给预处理器,可能会更容易发现这个问题。 对 DialogBox 的第一次调用将 TEXT(“DLG_OPEN”) 作为资源名称传递。但请注意,没有具有该名称的资源...

如果你找不到东西,请先确保你在正确的地方寻找  

之前我们在几篇文章中描述了如何进行”思想”调试,今天的文章我将不会这样做。 因为下面的编程错误大部分人都会遇到,如果你看一眼下面的代码,你不会发现有什么问题,这仅仅是因为你的的大脑只给你希望看到的,而不是那些真实存在的东西。(有没有一种黑客帝国的感觉?) 您可以长时间盯着看这段代码,而完全忽略了错误的窗口句柄被传递给 GetDlgItem 和 SetWindowLongP...

EnumChildWindows 本身已经是递归的了  

我经常看到一些朋友会编写类似于下面的代码。 上面的这段代码的本意是:通过对窗口树根结点进行操作,然后对每个子窗口进行操作,对窗口树中的所有窗口执行操作。反过来,对子项的操作又以递归方式执行,因此我们最终可以看到树中的每个窗口。 除了如果你真的在一个模糊有趣的窗口树上运行这个函数,你会发现项目被计算了多次。 原因是 EnumChildWindows 函数已经执行递归。 以下是 MSDN 对 Enu...

如何打印富文本控件中的内容?  

出于某种原因,人们确实对打印富文本控件中的内容感到困惑。 我并非打印方面的专家,但是经过对资料的研究的,我也算弄明白了,今天在此记录一下。 解决问题的关键是这个消息:EM_FORMATRANGE。 每次发送这个消息的时候,控件的内容会打印一些,然后消息会返回尚未打印的文本的首个字符的索引,然后可以依据这个索引继续传递给它,并打印下一块文本内容。 剩下的工作就是简单的设置工作和资源的销毁了。 我们...

如何将超过 32000 个字符放入富文本控件中?  

在上一篇文章中,我们了解了如何将一整个文件的内容加载的富文本控件中。 我们给出的例子代码运作得还挺符合预期的,但会碰到这样一个问题。 有一天,你尝试使用它来显示法律部门提供的许可协议在产品的安装程序中。 这是一篇巨大的文本文件,我们打算使用了富文本控件来显示它。 产品发布了,一切都是那么美好。 对于这份巨大的许可协议,绝大部分的用户一般都扫一眼就跳过到下一步了,但某天一位较真的用户反馈了这样一个问...

如何将整个文件内容加载到富文本控件?  

众所周知,富文本控件,Rich Text Control,用来呈现文本内容的一个控件,功能上相对记事本来说更加丰富,但又不及 Word。 但,我们的目标又不是开发另外一个 Word。 我们可以使用 EM_STREAMIN 消息将整个文件加载到富文本控件,此消息接受一个 IStream 的数据源,并一次性地将整个文件的内容加载的控件上。听起来,是不是还不错? 如果你 MSDN 上阅读了关于 EM_S...

为什么不能通过GetProcAddress调用CreateWindow?  

有时候,我看到有些人在折腾这样一个问题: “我想使用 GetProcAddress 来获取 CreateWindow 或者 ExitWindows 的调用地址,但是没有成功。为什么?” 通常,他们当时是在尝试编写平台调用(P/Invoke)相关的代码,因为从底层的角度来看,平台调用是通过 GetProcAddress 来实现的。 问题来了:为什么 GetProcAddres...

不要被各种专业术语吓倒  

有一个东西,是如此奇妙,今天我们需要讲讲。 在不同的函数中,这个东西有着不同的名字,但实际它都是同一个东西。 例如,RegisterWaitForSingleObject 这个 API,它的原型如下: BOOL RegisterWaitForSingleObject( [out] PHANDLE phNewWaitObject, [in] HANDLE hObject, [in] WAITORTI...

VS2022 17.8: Build Insights 中的函数视图  

简述 今天,我们很高兴的宣布在 Visual Studio 中为 Build Insights 新增了一项新功能:函数视图(Functions View)。 此功能在 Visual Studio 2022 v17.8 版本中可用。函数视图可以为你的代码库中的函数和强制内联(Forceinlines)提供更加具有深度的洞察力。 我们衷心感谢开发者社区,特别是我们的游戏工作室合作伙伴,他们积极地提供了...