如何在添加到MFC Doc / Frame项目的对话框中为“编辑控件框”设置默认值

时间:2014-02-18 20:51:41

标签: visual-c++ mfc

我在MFC doc / frame项目中添加了一个额外的Dialog(TestDialog)(单个doc,MFC,VC ++ 2010项目)该对话框有一个“EDIT Control”(IDC_EDIT1, m_EditBox1 etc)框。从DOC / frame菜单启动MFC程序后,我选择了testdialog然后弹出或启动。

但是,当我启动Testdialog时,EDIT控制框显示为空,我必须输入一个起始值(比如说100),这样我就可以按下一个按钮(在testdialog中)运行一个接受100作为输入的程序。 / p>

我如何以及在哪里可以为此Edit控件添加一个起始值100,这样当testdialog打开时,EDIT控件盒已经具有该默认值(i,e 100)。

TestDialog.cpp文件显示

CTestDialog::CTestDialog(CWnd* pParent /*=NULL*/)
: CDialogEx(CTestDialog::IDD, pParent)
, testdlg(0)

{
}

5 个答案:

答案 0 :(得分:6)

您可以使用 OnInitDialog()在对话框显示之前设置任何对话框值。有多种方法可以实现它。这是两个......

  1. 您可以使用 SetWindowText 将字符串值插入控件。
  2. 使用接受CString值的成员变量定义控件。为变量分配默认值。 OnInitDialog应该处理更新字段。

答案 1 :(得分:5)

转到测试对话框类的InitDialog函数(如果Initdialog()尚未存在,则覆盖它。)

然后,这样做:

GetDlgItem(IDC_EDIT1)->SetWindowTextA("100");

答案 2 :(得分:0)

感谢大家!我终于这样做了 a)在CtestDialog类的Testdialog.h文件中,我添加了我通过添加一行来声明OnInitDialog() - > virtual BOOL OnInitDialog()

    class CTestDialog : public CDialogEx
    {

    DECLARE_DYNAMIC(CTestDialog)

    virtual BOOL OnInitDialog( );

    public:

    CTestDialog(CWnd* pParent = NULL);   // standard constructor
    virtual ~CTestDialog();

    public:

    Private:
}

然后在TestDialog.cpp中我添加了

BOOL CTestDialog::OnInitDialog()
{
   CDialog::OnInitDialog();

   m_EditBox1.SetWindowText(_T("100"));

  //  GetDlgItem(IDC_EDIT1)->SetWindowTextA("100");


     return TRUE;
}

然后一切正常。

答案 3 :(得分:0)

我是一个新手,但这是我发现工作的方法......(不知道它是多么正确..) 我将一个变量添加到“EDIT控件”并使用构造函数成员初始化列表(此处i_num_days(91)i_num_days设置为91:

CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
  : CDialogEx(CMyDlg::IDD, pParent)
  , i_num_days(91)
  , ..
{
  m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

然后在下面它连接到“编辑控件”:

void CMyDlg::DoDataExchange(CDataExchange* pDX)
{
  CDialogEx::DoDataExchange(pDX);
  DDX_Text(pDX, IDC_EDIT_NUMBER_OF_DAYS, i_num_days);
  DDV_MinMaxInt(pDX, i_num_days, 1, 366);
  ..
}

如果有人知道这是错的,请纠正我......

答案 4 :(得分:0)

如果使用setwindowtext(L“”);然后仍然会在空格后显示编辑控件的插入符号...为了摆脱这种情况..可以使用此选项..将此代码放在编辑控件的事件处理程序中

CString name=L" ";
GetDlgItem(IDC_Editname,name);

if(name==L" ")
{
    CEdit* pname=(CEdit*)GetDlgItem(IDC_EDITNAME);
    pname->SetFocus();
    pname->SetSel(0,-1);
    pname->SetSel(0);
}