我自己派生了一个类
void CColorComboEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
CRect rc = lpDrawItemStruct->rcItem;
int nNumItem = lpDrawItemStruct->itemID;
CBrush bf;
if (nNumItem == -1)//可是很郁闷的是debug的时候这个地方总是-1,怪不得我看不到画出来的东西
return;
rc.bottom -= 2;
CString szFontName;
//class CColorComboEx:public CComboBox其中在资源中的COmboBox的属性为
Drop List
Owner draw Variable
Has String
V Vscroll实在不解,请大家帮帮忙·!
谢谢!
void CColorComboEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
CRect rc = lpDrawItemStruct->rcItem;
int nNumItem = lpDrawItemStruct->itemID;
CBrush bf;
if (nNumItem == -1)//可是很郁闷的是debug的时候这个地方总是-1,怪不得我看不到画出来的东西
return;
rc.bottom -= 2;
CString szFontName;
//class CColorComboEx:public CComboBox其中在资源中的COmboBox的属性为
Drop List
Owner draw Variable
Has String
V Vscroll实在不解,请大家帮帮忙·!
谢谢!
解决方案 »
- 27岁才转行进入软件行业,请求帮助
- 关于调用dll文件并输得到的值出到txt文件中
- TimeSetEvent函数调用了十多个后,开始返回NULL
- 为什么使用SetIconSpacing后不能滚动视图?
- 请问高手,我现在知道MM_HIMETRIC表示的一个width和height,如何转换成MM_TEXT的width和height?
- 怎么在子窗口将整个程序退出?
- mapi 的问题
- OpenGL超级宝典第五版例子编译通过 运行崩溃
- 模拟鼠标输入的问题
- 求助!关于Visual Studio创建项目出错的问题
- 菜鸟问题:基于document/view的project,运行弹出来的窗口,最最上面的一行的文字内容如何修改~?
- 反汇编 有些指令 看不懂
下拉之后还是这样的话,那就有问题了!或者执行SetCurSel,选中一个,然后看看结果怎么样?
For an empty list box or combo box, this member is a negative value
可是我保证我又向里面添加条目呀!
真是见鬼了呢!
哦!
我的程序是这样的!
// Dialog Data
//{{AFX_DATA(CEditCharConfigDlg)
enum { IDD = IDD_DIALOG_EDIT_CHAR_CONFIG };
CComboSize m_ComboSize;
CComboFont m_ComboFont;
CColorComboEx m_ComboColor;
//}}AFX_DATA其中
class CComboSize;
class CColorcComboEx;
class CComboFont;
都是派生自ComboBox
然后在一个对话框上面增加了3个ComboBox。把属性设置为
Drop List
Owner draw Variable
Has String
V Vscroll
再添加成员定义,并且改成如上所示。
难道这个样子,它就不调用我的派生类的Create函数了吗!
因为我的添加条目的DD都在OnCreate函数里面
OnCreate(LPCREATESTRUCT lpCreateStruct)
{
。
?????
如果没有那么在初始化对话框函数中加入如下代码!
((CColorComboEx*)GetDlgItem(IDC_XXXX))->ModifyStyle(0,CBS_OWNERDRAWFIXED);
我的数据初始化时在
ComboBox的OnCreate函数进行的
int CColorComboEx::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
。。
// TODO: Add your specialized creation code here
extern char gComboDummyChar;
//gComboDummyChar="";
for (int nColors = 0; nColors < colors.GetSize(); nColors++)
// Add a dummy string for every array item so that WM_DRAWITEM message is sent.
{
SendMessage(CB_ADDSTRING,0,(LPARAM)&gComboDummyChar);
}
// Select the first color when the control is created.
//在这里增加了一个变量
int Total=GetCount();
//调试的时候数据正确,total=15
SetCurSel(3);
return 0;
}
然后再在DrawItem函数里面在设置检验变量
void CColorComboEx::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
int Toltal=GetCount();//这个时候得到的Total=0;
//这个就是我想不通的地方,我明明添加了数据,并且在Oncreate函数中都是正确的
//为什么到了这个地方就不对了,一个数据都没有了!
if(lpDrawItemStruct->CtlType!=ODT_COMBOBOX)
return;麻烦大家了!
预祝大家是圣诞快乐!