导航
  • 主页
  • VC/MVC基础类
  • .NET 技术
  • VC/MFC界面
  • VC/MFC 进程
  • VC/MFC 数据库
  • VC/MFC&Web
  • Doc/View
  • VC++技术资源

combobox添加下拉项的问题

xidiancjw 2010-07-23 01:03:39
在ComboBox控件的dropdown()函数中写了如下代码:
CString strTemp;
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();
for(int i=1;i<=100;i++)
{
strTemp.Format("%d",i);
if(itoa(strTemp)>100)
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);
}
执行上述代码后,要对ComboBox控件中一行也没有添加的情况进行提示。如何对没有添加任何信息这种情况进行判断?
请教大虾们
...全文
214 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xidiancjw 2010-07-24
[Quote=引用 9 楼 visualeleven 的回复:]
类似这样

C/C++ code

BOOL CXXDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(WM_COMMAND == pMsg->message)
{
if(CB……
[/Quote]
加了这个函数好像没有效果啊。。。
回复
xidiancjw 2010-07-24
[Quote=引用 10 楼 hongya6088 的回复:]
判断一下如果没有添加,就转移一下焦点
比如还有一个Edit控件,((CEdit*)GetDlgItem(ID_EDIT))->SetFoucse();
[/Quote]
不行啊,焦点转移了,照样有下拉发生
回复
hongya6088 2010-07-23
strTemp.Format("%d",i);
if(itoa(strTemp)>100)

为什么转来转去的??转的还有问题
直接:
strTemp.Format("%d",i);
if(i>100)

判断一下如果没有添加,就转移一下焦点
比如还有一个Edit控件,((CEdit*)GetDlgItem(ID_EDIT))->SetFoucse();
回复
Eleven 2010-07-23
类似这样

BOOL CXXDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(WM_COMMAND == pMsg->message)
{
if(CBN_DROPDOWN == HIWORD(pMsg->wParam) && IDC_COMBO1 == LOWORD(pMsg->wParam))
{
AfxMessageBox(_T("DOWN"));
return TRUE;
}
}
return CDialog::PreTranslateMessage(pMsg);
}
回复
Eleven 2010-07-23
[Quote=引用 5 楼 xidiancjw 的回复:]
dropdown()函数中的代码
{
CString strTemp;
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();
for(int i=1;i<=100;i++)
{
strTemp.Format("%d",i);
if(itoa(strTemp)>100)
((CComboBox*……
[/Quote]
------------------
你不显示下拉框,可以在PreTranslateMessage中过滤CBN_DROPDOWN
回复
linsj585 2010-07-23
atoi
GetCount();
回复
Eleven 2010-07-23
if(itoa(strTemp)>100)
-------------------------
这写的什么?能通得过编译??
回复
xidiancjw 2010-07-23
dropdown()函数中的代码
{
CString strTemp;
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->ResetContent();
for(int i=1;i<=100;i++)
{
strTemp.Format("%d",i);
if(itoa(strTemp)>100)
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->AddString(strTemp);
}
if(m_box.getcount()==0) //m_box是关联ComboBox的控件类型变量
{
AfxMessageBox("空!");
}
}
怎么弹出对话框框后,界面上的控件还是会显示下拉。怎样处理能让它出提示后,不再出现下拉?
回复
blpluto 2010-07-23
GetCount()像这样~~~MSDN上的例子

// Add 10 items to the combo box.
CString strItem;
for (int i = 0; i < 10; i++)
{
strItem.Format(_T("item %d"), i);
m_pComboBox->AddString(strItem);
}

// Verify the 10 items were added to the combo box.
ASSERT(m_pComboBox->GetCount() == 10);



回复
梧桐126 2010-07-23
((CComboBox*)GetDlgItem(IDC_COMBO_CF))->GetSel()==-1
那个函数拼写好象错了,就是取得当前选择的项,-1表示没选的情况
回复
webipstin 2010-07-23
CComboBox::GetCount
int GetCount( ) const;

Return Value

The number of items. The returned count is one greater than the index value of the last item (the index is zero-based). It is CB_ERR if an error occurs.

Remarks

Call this member function to retrieve the number of items in the list-box portion of a combo box.

Example

// The pointer to my combo box.
extern CComboBox* pmyComboBox;

// Add 10 items to the combo box.
CString str;
for (int i=0;i < 10;i++)
{
str.Format(_T("item %d"), i);
pmyComboBox->AddString( str );
}

// Verify the 10 items were added to the combo box.
ASSERT(pmyComboBox->GetCount() == 10);


回复
blingpro 2010-07-23
getitemcount之类的函数吧,具体名称不清楚,查一下msdn
gl
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告
暂无公告