CInputBox 1.0






4.82/5 (45投票s)
一个基于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
以及能够指定窗口的大小和位置。我会在有时间的时候这样做。