我在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)
{
}
答案 0 :(得分:6)
您可以使用 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);
}