GetText 为 MFC 程序中的列表框返回空字符串
GetText is returning a null string for a list box in a MFC program
GetText 正在为 MFC 程序中的列表框返回空字符串:
void CMainDlg::OnLbnSelchangeLiPt()
{
CListBox* lb;
int idx, cnt;
char* cstr;
lb = (CListBox*)GetDlgItem(IDC_LI_PT);
idx = lb->GetCurSel();
cnt = lb->GetCount();
if ((idx != LB_ERR) && (cnt > 0))
{
cstr = NULL;
lb->GetText(idx, cstr);
...
列表框已选中一项。这有什么问题吗?
我发现我需要声明一个具有足够 space 的字符数组来存储字符串:
void CMainDlg::OnLbnSelchangeLiPt()
{
CListBox* lb;
int idx, cnt;
char cstr[32];
lb = (CListBox*)GetDlgItem(IDC_LI_PT);
idx = lb->GetCurSel();
cnt = lb->GetCount();
if ((idx != LB_ERR) && (cnt > 0))
{
lb->GetText(idx, cstr);
...
不要使用 char a[32];
这样的东西
您应该使用:
CString sData;
int nSel = m_NameListBox.GetCurSel();
if (nSel != LB_ERR)
{
m_NameListBox.GetText(nSel, sData);
}
你也可以打电话给m_NameListBox.GetWindowText(sData);
还请使用 DataExchange MFC 机制将您的控件映射到 class 变量:
void CSettingsGeneralPage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_NAME_LISTBOX, m_NameListBox);
}
GetText 正在为 MFC 程序中的列表框返回空字符串:
void CMainDlg::OnLbnSelchangeLiPt()
{
CListBox* lb;
int idx, cnt;
char* cstr;
lb = (CListBox*)GetDlgItem(IDC_LI_PT);
idx = lb->GetCurSel();
cnt = lb->GetCount();
if ((idx != LB_ERR) && (cnt > 0))
{
cstr = NULL;
lb->GetText(idx, cstr);
...
列表框已选中一项。这有什么问题吗?
我发现我需要声明一个具有足够 space 的字符数组来存储字符串:
void CMainDlg::OnLbnSelchangeLiPt()
{
CListBox* lb;
int idx, cnt;
char cstr[32];
lb = (CListBox*)GetDlgItem(IDC_LI_PT);
idx = lb->GetCurSel();
cnt = lb->GetCount();
if ((idx != LB_ERR) && (cnt > 0))
{
lb->GetText(idx, cstr);
...
不要使用 char a[32];
您应该使用:
CString sData;
int nSel = m_NameListBox.GetCurSel();
if (nSel != LB_ERR)
{
m_NameListBox.GetText(nSel, sData);
}
你也可以打电话给m_NameListBox.GetWindowText(sData);
还请使用 DataExchange MFC 机制将您的控件映射到 class 变量:
void CSettingsGeneralPage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_NAME_LISTBOX, m_NameListBox);
}