2013-03-22 63 views
1

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

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

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

+0

它必须是C++吗?对于第一个GUI努力,我会推荐C#。这很容易,很多次。 – 2013-03-22 05:57:41

+0

是的,谢谢。除了我无法获得用户输入外,我已经能够解决这个问题了。 – ac3hole 2013-03-22 06:08:33

回答

3

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

您遇到的问题是,您实际上必须先创建这些资源,然后才会有数字意味着什么。当您创建一个新的Win32项目时,Visual Studio会自动创建一个关于对话框并给它一个符号ID IDD_ABOUTBOX。但是,在新项目中默认情况下不会创建此类对话框,并且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

+0

哇这真的很有帮助,谢谢科迪格雷。如果我已经付出足够的关注,唯一一次我看到一个GUI设计师是当我在资源视图中查看.rc文件。你一直很好的帮助。 – ac3hole 2013-03-22 06:12:18

+0

是的,如果双击资源视图窗口中的对话框资源,它会显示出来。在资源视图中右键单击您的项目以添加一个新的对话框(或任何其他资源)。 – 2013-03-22 06:12:52

+0

谢谢,通过本书和你提供的链接,有用的资源......我很快就要毕业了,申请了一份工作,然后他们给我发了一份需要win32代码和可执行文件的评估,但我没有经验。你的信息真的很有帮助 – ac3hole 2013-03-22 12:29:46