我建了一个类,继承自CListBox,在Create时只要加上LBS_OWNERDRAWVARIABLE再InsertString执行时就报错,源代码如下:
int CMyCustomView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
MyList.Create(WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|LBS_OWNERDRAWVARIABLE,
CRect(0,0,100,160),this,0);
MyList.InsertString(0,"aaa");//如果去掉这句话就可以运行
return 0;
}MyList是建立的类,在CMyCustomView声明为成员变量
CCustomListBox MyList;
如果声明为
CListBox MyList;
也出现同样的问题,看来不是我建立的类的代码的问题,那是哪里的问题?
int CMyCustomView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
MyList.Create(WS_CHILD|WS_VISIBLE|WS_HSCROLL|WS_VSCROLL|LBS_OWNERDRAWVARIABLE,
CRect(0,0,100,160),this,0);
MyList.InsertString(0,"aaa");//如果去掉这句话就可以运行
return 0;
}MyList是建立的类,在CMyCustomView声明为成员变量
CCustomListBox MyList;
如果声明为
CListBox MyList;
也出现同样的问题,看来不是我建立的类的代码的问题,那是哪里的问题?
解决方案 »
- 如果在WIN7的credential provider中修改当前要登录的用户的注册表键值?
- 关于OpenGL,我怎么也找不到视点处于室内的感觉 ?
- 如何在主程序中定义全局变量问题,在动态库调用?
- 如何软关机,立刻关掉电源,没有系统注销关机步骤?
- 请教: _variant_t 转换成 CString 错误。(只能显示第一个字符)
- CToolBarCtrl一问,高人请进。
- 为什么在写文件时不能将写入的值按列对齐?
- vc++6.0和vc++2005.net学习那个更好呢?
- 有谁了解拨号上网的具体过程?
- 大家现在能上绿色兵团和天网不?
- 寻在CScrollView中用双缓冲绘图的例程!!
- 一个很菜的问题——在调用ocx控件时,怎么控制哪些函数可以被使用
而你没有重载CListBox的DrawItem虚函数,导致ListBox在绘制Item时出错。在这种情况下,就算你不调用InsertString,只要你在ListBox上鼠标单击一下同样会报错的。解决办法是:
或者去掉LBS_OWNERDRAWVARIABLE属性,
或者在你的CCustomListBox类中重载CListBox的DrawItem虚函数
我觉得可能是不应该把InsertString 写OnCreate里,应该写在OnInitialUpdate()中吧