手工listbox操作崩溃

野生大猫 2014-04-17 02:00:55
wince里手工创建了一个listbox,并提供了接口供大家插入数据并限制最大为100条数据。
当调用时间大概10多个小时之后,整个系统变得非常卡顿,内存消耗剧增,测试发现当屏蔽这个listbox模块之后系统变得稳定。
以下提供下代码:

extern "C" __declspec(dllexport) int FL_SetValue(TCHAR *pBufValue)
{
if (g_bifPause)
{
return 0;
}
if (h_wnd)
{
//判断当前最大数量
int nCount = ListBox_GetCount(h_wnd);
if (nCount == g_nMaxCount /*&& b_ifNext==FALSE*/)
{
ListBox_DeleteString(h_wnd,0);
}
if (pBufValue == NULL)
{
TCHAR ch[] = _T("");
ListBox_AddString(h_wnd,ch);
}
else
ListBox_AddString(h_wnd,pBufValue);
}
return 0;
}

求教这玩意有什么问题?现在的疑问是这个delete宏难道不删除其中的内存数据?
...全文
147 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
野生大猫 2014-04-22
  • 打赏
  • 举报
回复
先结贴了,已经转移其他处理方式...... 这蛋疼
schlafenhamster 2014-04-18
  • 打赏
  • 举报
回复
那用 LockWindowUpdate 试试
野生大猫 2014-04-18
  • 打赏
  • 举报
回复
疑似滚动条到了最下之后,焦点在最下面然后无限重绘,拖动滚动条到顶端改变焦点之后不再卡。。。。我去
schlafenhamster 2014-04-18
  • 打赏
  • 举报
回复
int nCount = ListBox_GetCount(h_wnd); afxDump << int nCount << "\n"; 看看到底 有 多少 ?
野生大猫 2014-04-18
  • 打赏
  • 举报
回复
昨天又跑了15个小时,现在是内存并没有快速增长,但是仍然在添加删除数据的时候发生严重卡顿,这是为什么??? 难道listbox有什么特殊的操作要处理???
野生大猫 2014-04-17
  • 打赏
  • 举报
回复
引用 5 楼 zhoujielunzhimi 的回复:
逻辑是不是有点小问题 //判断当前最大数量 int nCount = ListBox_GetCount(h_wnd); int n = nCount - g_nMaxCount; while(n--) ListBox_DeleteString(h_wnd,0); if (pBufValue == NULL) { TCHAR ch[] = _T(""); ListBox_AddString(h_wnd,ch); } else ListBox_AddString(h_wnd,pBufValue);
没有太多差别吧。。。另外n小于0的时候会怎么样?
sumos 2014-04-17
  • 打赏
  • 举报
回复
逻辑是不是有点小问题 //判断当前最大数量 int nCount = ListBox_GetCount(h_wnd); int n = nCount - g_nMaxCount; while(n--) ListBox_DeleteString(h_wnd,0); if (pBufValue == NULL) { TCHAR ch[] = _T(""); ListBox_AddString(h_wnd,ch); } else ListBox_AddString(h_wnd,pBufValue);
野生大猫 2014-04-17
  • 打赏
  • 举报
回复
引用 3 楼 schlafenhamster 的回复:
100条以后, 是 删除 一条 加 一条 ?
删除第一条,再ADD一条
schlafenhamster 2014-04-17
  • 打赏
  • 举报
回复
100条以后, 是 删除 一条 加 一条 ?
野生大猫 2014-04-17
  • 打赏
  • 举报
回复
引用 1 楼 xiaohuh421 的回复:
查看内存增长情况, 一般都是资源未释放造成的.
这个晓得,主要是5小时以内不会出问题,大概10小时左右开始爆发性的卡。 另外听说listbox上限32767? 属性:WS_BORDER|LBS_NOTIFY|WS_HSCROLL|WS_VSCROLL|WS_CAPTION 是不是必须加上 LBS_HASSTRING ??
xiaohuh421 2014-04-17
  • 打赏
  • 举报
回复
查看内存增长情况, 一般都是资源未释放造成的.

15,471

社区成员

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

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