UCGUI LISTBOX里调用_CallOwnerDraw时出现的问题
UCGUI 3.94
虽然很少出现,操作中也没有出现这样的情况,但我跑几个线程,测试程序时。
偶尔程序运行,调用_CallOwnerDraw过程时,如果调用pObj->pfDrawItem会出现非法指令的错误,查看代码,似乎一直都没有设置这个指针,怎么会调用到呢?
查看产生的core文件,pObj->pfDrawItem这个已经不是NULL了,搜索了所有用到这个指针的地方,除了调用设它他的方法外,没有地方变更过它的值呀!
调用的代码如下的:当调用的到 pObj->pfDrawItem 就出错了
static int _CallOwnerDraw(LISTBOX_Handle hObj, const LISTBOX_Obj* pObj, int Cmd, int ItemIndex) {
WIDGET_ITEM_DRAW_INFO ItemInfo;
int r;
ItemInfo.Cmd = Cmd;
ItemInfo.hWin = hObj;
ItemInfo.ItemIndex = ItemIndex;
if (pObj->pfDrawItem) {
r = pObj->pfDrawItem(&ItemInfo);
} else {
r = LISTBOX_OwnerDraw(&ItemInfo);
}
return r;
}
估计还是UCGUI的堆管理的地方出现的问题!! 如果使用其的dropbox和lixtbox可能会出现
记录一下,是否有其它的同志,也见着过?