为什么Combo Box动态绑定数据没有反应?

newtocsdn 2007-07-23 07:18:16
基本思路是打开某个路径并取一个名字
然后动态保存于ComboBox中。。。

似乎AddComboItem根本就没有把路径
加入到ComboBox中 但是路径却是得到了!
困扰很久。。。望达人指点。。。
PS 小弟才刚学习MFC 谢谢

具体实现如下:

void CVolumeLocation::OnBnClickedBtnFile()
{
HWND hComboBox = (HWND)GetDlgItem(IDC_COMBO_FILE);
AddComboItem(hComboBox, szFileName);
}

头文件:
void AddComboItem(HWND hComboBox, char *lpszFileName);

CPP文件:
void AddComboItem(HWND hComboBox, char *lpszFileName)
{
LPARAM nIndex;

/*Reset ComboBox Contents*/
SendMessage(hComboBox, CB_RESETCONTENT, 0, 0);
SetWindowText(hComboBox, lpszFileName);

/*Get nIndex*/
nIndex = SendMessage(hComboBox, CB_FINDSTRINGEXACT, (WPARAM) - 1, (LPARAM) & lpszFileName[0]);
/**
if(SetWindowText(hComboBox, lpszFileName))
{
MessageBox(GetParent(hComboBox),(LPCSTR)GetWindowText(hComboBox,lpszFileName,5),"Hello",MB_OK);
return;
}
else
{
AfxMessageBox("Error");
}
**/
/*The return value is the zero-based index of the matching item.
If the search is unsuccessful, it is CB_ERR. */

if(nIndex == CB_ERR && *lpszFileName)
{
time_t lTime = time(NULL);
nIndex = SendMessage(hComboBox, CB_ADDSTRING, 0, (LPARAM) & lpszFileName[0]);
if(nIndex != CB_ERR)
SendMessage(hComboBox, CB_SETITEMDATA, nIndex, (LPARAM) lTime);
}

if(nIndex != CB_ERR && *lpszFileName)
SendMessage(hComboBox, CB_ADDSTRING, 0, (LPARAM) & lpszFileName[0]);
nIndex = SendMessage(hComboBox, CB_SETCURSEL, nIndex, 0);

if(*lpszFileName == 0)
{
SendMessage(hComboBox, CB_SETCURSEL, (WPARAM) - 1, 0);
}

//AfxMessageBox("AddComboItem Invoked");
}
...全文
392 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
newtocsdn 2007-07-25
  • 打赏
  • 举报
回复
没有人指点 ???
newtocsdn 2007-07-24
  • 打赏
  • 举报
回复
自己 顶 顶 顶
newtocsdn 2007-07-24
  • 打赏
  • 举报
回复
谢谢阁下的指点!这样是可以的的...
但是我比较疑惑的就是为什么我发送消息
添加数据没有反应 ???
SendMessage(hComboBox, CB_ADDSTRING, 0, (LPARAM) & lpszFileName[0]);
这个根本就没有执行 ????
不知道为什么 望指点 谢谢!
sparkkendy 2007-07-23
  • 打赏
  • 举报
回复
你把它搞的太复杂化了,把
HWND hComboBox = (HWND)GetDlgItem(IDC_COMBO_FILE);
AddComboItem(hComboBox, szFileName);
改成:
CComboBox *pBox=(CComboBox*)GetDlgItem(IDC_COMBO_FILE);
pBox->AddString(szFileName);就行了,
要获取数据就用GetLBText方法,具体用法看一下MSDN

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧