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

时间:2013-03-22 05:54:59

标签: c++ visual-studio winapi visual-c++ dialog

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

我已阅读this topic on MSDN并认为它有用,但我收到的错误是IDD_PASSWORDIDE_PASSWORD未定义。在resource.h中声明它们并给出任意值(如110,111)不会产生任何结果。我尝试修改自动生成的约框的其他尝试,修改后也没有产生任何结果,我注意到如果我从103更改IDD_ABOUTBOXresource.h的值,这也不起作用。我也尝试在资源视图下使用.rc,但仍然没有结果。

所以我想知道资源盒模板是否具有我必须使用的预定义常量数,如果是这样,因为我也搜索了它,或者是否有另一种方法来获取窗口化应用程序中的用户输入。我只是想获得一个整数,就是这样。

1 个答案:

答案 0 :(得分:4)

分配给资源的数字没有任何魔力。这些数字是代码实际用于识别资源的数字。 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版,the newer editions digress from their Win32 roots and start talking about completely unrelated things like C# and Silverlight

如果您必须通过反复试验和MSDN学习,请开始阅读对话框资源here