CComboBox控件问题

sanshao27 2009-05-23 11:44:09
EVC中,如何通过CComboBox控件来显示图片,有点像以前的QQ那样,点击下拉框时,可以把装载进去的图片显示出来,供用户选择。(在EVC中,没有Owner draw属性,也没有CComboBoxEx这个扩展类)

或者实现在EVC中把一些图片展现在界面上,能让用户选择的功能也行。在线等……
...全文
206 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanshao27 2009-05-31
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 j8daxue 的回复:]
EVC没听过,如果只是VC自绘实现的话就做过。
主要代码:
[/Quote]

谢谢楼上的兄弟,我参考参考,可以的话,马上结贴
j8daxue 2009-05-31
  • 打赏
  • 举报
回复
EVC没听过,如果只是VC自绘实现的话就做过。
主要代码:

void CIconComBox::DrawItem(LPDRAWITEMSTRUCT lpDIS)
{
CDC *pDC = CDC::FromHandle(lpDIS->hDC);
CString szItemText;
HICON hiItemIcon = NULL;
CRect rcItem = lpDIS->rcItem;
TEXTMETRIC TextMetric;
pDC->GetTextMetrics(&TextMetric);
if(lpDIS->itemID != -1)
{
GetLBText(lpDIS->itemID,szItemText);
hiItemIcon = (HICON)lpDIS->itemData;
}
else szItemText = "select!";
//selected state
if((lpDIS->itemState & ODS_SELECTED)&& (lpDIS->itemAction&(ODA_SELECT | ODA_DRAWENTIRE)))
{
aniHeight = TextMetric.tmHeight;
anihIcon = hiItemIcon;
aniRc = rcItem;
aniText = szItemText;
pPaintDC = CDC::FromHandle(lpDIS->hDC);
DrawSelectItem(pPaintDC,aniRc,anihIcon,aniText,aniHeight);
}
// normal
else if(lpDIS->itemAction &(ODA_SELECT | ODA_DRAWENTIRE))
{
pDC->FillSolidRect(rcItem,::GetSysColor(COLOR_WINDOW));
pDC->SetBkColor(::GetSysColor(COLOR_WINDOW));
pDC->SetTextColor(::GetSysColor(COLOR_WINDOWTEXT));
pDC->TextOut(rcItem.left + SIZE_ICON + 1 ,rcItem.top + (SIZE_ICON + 2 - TextMetric.tmHeight)/2,szItemText);
if(hiItemIcon)
{
DrawIconEx(pDC->GetSafeHdc(),rcItem.left,rcItem.top + 2,hiItemIcon,SIZE_ICON,SIZE_ICON,NULL,(HBRUSH)NULL,DI_NORMAL);
}
}

if(lpDIS->itemState & ODA_FOCUS)
{
pDC->DrawFocusRect(rcItem);
}
}
int CIconComBox::InsertItem(int nIndex, HICON ItemIcon,const CString szItemText)
{
int n = CComboBox::InsertString(nIndex,szItemText);
if(n != CB_ERR && n != CB_ERRSPACE)
{
SetItemData(n,(DWORD)ItemIcon);
}
return n;
}

样式为CBS_DROPDOWNLIST | CBS_OWNERDRAWVARIABLE | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP
sanshao27 2009-05-30
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 ly830817 的回复:]
evc,建议你先好好学习一下。这个东西网上有很多例子的。
[/Quote]
兄弟,也是我关键字搜索错了,我找了很多,不管是百度上的,还是Google上的,也看了很多,都没看到。
你说网上很多例子,能否给个路径。真的是想你说的那样,我可以把分全部奉献上,可以的话,还可以给你加分。
xuxingok 2009-05-30
  • 打赏
  • 举报
回复
up
zhangzhibiao 2009-05-30
  • 打赏
  • 举报
回复
evc没有听过也没有做过 飘过~
jian_tian_yang 2009-05-30
  • 打赏
  • 举报
回复
帮楼主顶一下
sanshao27 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 Fireway2008 的回复:]
引用 9 楼 sanshao27 的回复:
CComboBox控件中没有Owner draw属性,如何去做才可以实现属性的功能,它的原理是什么??????
今天高手都放假了吗?


自己去写一个基础于CComboBox的子类吧。
响应里边的OnPaint 和 Select相关消息看看,

因为平时用得很少,如果可以,你把写好的响应代码贴出,
让大家帮你看看还缺什么。
[/Quote]

谢谢楼上的,其实也没实现什么代码,无非就是CComboBox控件的一般使用而已,
我根你一样,平时一般用的也跟少,尤其是在EVC中,就更少了,希望能给点demo,就更好了。
ly830817 2009-05-27
  • 打赏
  • 举报
回复
evc,建议你先好好学习一下。这个东西网上有很多例子的。
yearn520 2009-05-27
  • 打赏
  • 举报
回复
sanshao27 2009-05-27
  • 打赏
  • 举报
回复
现在看帖子的人是不是很少了
Fireway2008 2009-05-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sanshao27 的回复:]
CComboBox控件中没有Owner draw属性,如何去做才可以实现属性的功能,它的原理是什么??????
今天高手都放假了吗?
[/Quote]

自己去写一个基础于CComboBox的子类吧。
响应里边的OnPaint 和 Select相关消息看看,


因为平时用得很少,如果可以,你把写好的响应代码贴出,
让大家帮你看看还缺什么。
sanshao27 2009-05-25
  • 打赏
  • 举报
回复
还是没人给出答案,真的是EVC用的人太少了???
s393658806 2009-05-24
  • 打赏
  • 举报
回复

UP
biweilun 2009-05-23
  • 打赏
  • 举报
回复
只能自己自绘实现了
hurryboylqs 2009-05-23
  • 打赏
  • 举报
回复
不一定非要用comboBox实现,自己实现个控件即可
Fireway2008 2009-05-23
  • 打赏
  • 举报
回复
一定要用CComboBox去实现吗?

利用一个CPicture控件 + 一个按钮,做为图片文件选择的功能,应该也可以实现吧。
fengrx 2009-05-23
  • 打赏
  • 举报
回复
估计需要自己实现扩展类了。
EVC和VC相比是少了许多方便,但在原来基础上肯定可以实现需要的功能。和展示相关的都需要重载ondraw、onpaint之类的函数。
  • 打赏
  • 举报
回复
学习...
fleiou2008 2009-05-23
  • 打赏
  • 举报
回复
关注中
sanshao27 2009-05-23
  • 打赏
  • 举报
回复
没有Owner draw属性,加载进去的图片,在界面就直接显示出加载图片的路径了,郁闷啊
加载更多回复(5)

15,979

社区成员

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

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