65.9K
CodeProject 正在变化。 阅读更多。
Home

CInputBox 1.0

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.82/5 (45投票s)

2001年12月1日

CPOL

2分钟阅读

viewsIcon

133220

downloadIcon

1388

一个基于CFrameWnd的类,提供类似于VB InputBox函数的功能。您不需要对话框资源即可使用该类!

该类为您做什么?

我看到很多人经常询问C++中是否有类似于Visual Basic中InputBox函数的东西。我想简单的方法是创建您自己的对话框类。但我认为一个更简单的方法是编写一个不依赖于资源的类。CInputBox可以在不创建对话框资源的情况下使用。它允许您设置输入框的标题、提示文本以及默认文本。

除了构造函数之外,只有两个公共函数。构造函数需要传递一个CWnd*。通常您可以将this作为该参数传递。

主要的成员函数是ShowInputBox,其声明如下

int ShowInputBox(CString,CString,CString);

第一个CString是要显示的提示文本。第二个CString是输入框的标题文本,第三个CString是默认文本。所有三个都可以是空字符串。虽然我不认为前两个参数经常会这样。

始终,始终在显示输入框后调用CloseBox。您只能显示一次该框。如果您想再次显示它,则必须调用CloseBox,然后从对象构造开始重新开始。

如何使用该类?

  • 首先创建您的CInputBox对象
    CInputBox *m_inputbox = new CInputBox(this);
  • 现在调用ShowInputBox函数,传递提示文本、标题文本和默认文本
    int rv = m_inputbox->ShowInputBox("Enter your age","Age box","");
  • 确定他们是否取消了该框,或者他们是否单击了“确定”
    if(rv==IDCANCEL)
        MessageBox("","You cancelled");
  • 如果他们单击了“确定”,您可以使用公共成员变量InputText检索输入的文本
    if(rv==IDOK)
        MessageBox(m_inputbox->InputText,"the text you entered");
  • 现在调用CloseBox以避免内存泄漏
    m_inputbox->CloseBox();

您应该记住的一些要点

  • 您只能在每个对象生命周期内调用ShowInputBox一次。这意味着您只需执行三个步骤即可。创建对象,显示框,关闭对象。如果您需要多次显示输入框,则每次都需要遵循所有三个步骤。
  • 出于某种奇怪且目前未知的原因,在一次情况下,使用该类的示例程序没有终止,并停留在内存中。我还没有追踪这个问题。但如果您遇到类似的问题,请告诉我

结论

这只是版本1。我想它需要很多增强功能,例如能够重复调用ShowInputBox以及能够指定窗口的大小和位置。我会在有时间的时候这样做。

© . All rights reserved.