【发布时间】:2012-06-19 10:09:55
【问题描述】:
我正在编写一个带有对话框窗口和一些按钮的简单 MFC 应用程序。 我还添加了一个编辑控件,以便用户插入文本字符串。
我想读取存在于编辑控件中的值并将其存储在字符串中,但我不知道该怎么做。
我没有编译错误,但我总是只读一个“。”标记。
我在文本编辑控件中添加了一个变量名filepath1,代码如下:
// CMFC_1Dlg dialog
class CMFC_1Dlg : public CDialogEx
{
// Construction
public:
CMFC_1Dlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
enum { IDD = IDD_MFC_1_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedButton1();
afx_msg void OnBnClickedButton2();
afx_msg void OnEnChangeEdit1();
CString filePath1;
}
//...
void CMFC_1Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}
CMFC_1Dlg::CMFC_1Dlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CMFC_1Dlg::IDD, pParent)
,filePath1(("..\\Experiments\\Dirs\\"))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CMFC_1Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, filePath1);
}
// then i try to get the string value with
CString txtname=filePath1;
_cprintf("Value %s\n", txtname); // but i always read just a "."
【问题讨论】:
-
首先需要添加控制编辑框的控制变量。这样你就可以使用变量来读取文本了。
-
是的,我已经按照主题中的说明添加了它。问题是这样我只能读取第一个字符而不是整个字符串。例如,如果我在文本框中写“Hello”,txtname 只包含“H”
-
我没有看到
CEdit变量。 -
说实话,我对 CEdit 变量不是很了解。当我将变量添加到文本控件时,VS 将 CEdit 变量添加到我,但它不是字符串变量,那么我必须如何使用它?
标签: c++ visual-studio-2010 user-interface mfc