使用对话框以图形方式检索用户输入

ac3*_*ole 2 c++ winapi dialog visual-studio visual-c++

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

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

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

Cod*_*ray 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,第 5 版。请注意,您需要确保获得第 5 版,因为较新的版本偏离了它们的 Win32 根源,并开始谈论完全不相关的内容,例如 C# 和 Silverlight

如果您绝对必须通过反复试验和 MSDN 来学习,请在此处开始阅读有关对话框资源的信息