2

我不是 C++ 新手,但这是我第一次开发 Win32 程序。它必须是图形的,所以我一直在尝试使用输入/对话框来获取用户输入,但没有成功。

在 MSDN 上阅读了这个主题并发现它很有帮助,但是我收到了一个关于IDD_PASSWORD并且IDE_PASSWORD没有被定义的错误。声明它们resource.h并给出任意值(如 110、111)不会产生任何结果。我尝试修改自动生成的关于框的其他尝试,修改后也没有产生任何结果,我注意到如果我将IDD_ABOUTBOXin的值resource.h从 103 更改,这也不起作用。我也尝试在资源视图下使用 .rc,但仍然没有结果。

所以我想知道资源框模板是否有我必须使用的预定义常量,如果有,因为我也搜索过,或者是否有另一种方法可以在窗口应用程序中获取用户输入。我只想获得一个整数,仅此而已。

4

1 回答 1

5

分配给资源的数字没有什么神奇之处。这些数字是代码实际用于识别资源的数字。Visual Studio 仅允许您通过使用 C 宏(即#define)为这些数字分配符号名称,以使您的代码更易于阅读。这些值都是按照resource.h约定在文件中定义的,尽管您可以手动修改该文件,但通常不应该这样做 - 让 Visual Studio 资源编辑器为您处理。

您遇到的问题是,您实际上必须首先创建这些资源,然后数字才有意义。当您创建一个新的 Win32 项目时,Visual Studio 将自动创建一个关于框对话框并为其指定符号 ID IDD_ABOUTBOX。但是,IDD_PASSWORD在新项目中默认不会创建这样的对话框,并且 Windows 中也没有内置对话框。

您可以使用对话框编辑器(Visual Studio 的资源编辑器的一部分)自己创建此对话框,这很容易做到,因为它允许您在所见即所得的对话框上拖动控件。当您向项目资源添加新对话框时,您可以选择将其命名为您喜欢的任何名称。您可以IDD_PASSWORD根据需要使用或任何其他名称。将根据算法自动分配数字 ID;通常使用最低的可用数字。

您链接到的文章假设您已经使用符号名称向项目添加了一个对话框IDD_PASSWORD(这可能是作者的错误)。它向您展示的只是当它作为项目资源的一部分存在时如何显示该对话框。


仅通过阅读 MSDN 文档来学习 Win32 编程会有些困难。我强烈建议买一本解释得更清楚、更合乎逻辑的书。规范文本是 Charles Petzold 的Programming Windows, 5th Edition。请注意,您需要确保获得第 5 版,因为较新的版本偏离了它们的 Win32 根源并开始谈论完全不相关的东西,例如 C# 和 Silverlight

如果您绝对必须通过反复试验和 MSDN 来学习,请从此处开始阅读对话框资源。

于 2013-03-22T06:00:21.087 回答