listctrl 插入多条数据时避免闪烁
来源:互联网 发布:用jsp简单游戏编程 编辑:程序博客网 时间:2024/06/05 10:37
SetRedraw(false); //...SetRedraw(true);
自绘或者使用其他库的时候如果条目数过多需要滚动条的时候可能会不显示滚动条。解决方法如下:
void CListCtrlMy::MyEnsureVisible(int iSize){ CRect rct; GetWindowRect(&rct); //减去列表头,然后除以单个的自设列表的高度, int iItem = (rct.Height()-25)/26; if (iSize >= iItem) { EnsureVisible(iItem,FALSE); EnsureVisible(0,TRUE); }}
//2015.3.6 编辑
LockWindowUpdate(); UnlockWindowUpdate();
LockWindowUpdate不但闪烁,而且有可能引起桌面闪烁。因为LockWindowUpdate并不忽略消息,只是暂时不响应,
所以有可能积聚多个重画消息,并在使用LockWindowUpdate(0)之后依次响应。
而使用SendMessage(ClientHandle,WM_SETREDRAW,0,0)之后,控件根本不接收重画消息,除非使用SendMessage(ClientHandle,WM_SETREDRAW,1,0)之后;
LockWindowUpdate的意思是暂时禁止某控件或窗口所在的区域更新(这个区域可能有多个窗口),LockWindowUpdate(0)的意思是有更新消息就更新屏幕上所有该更新的窗口吧。所以LockWindowUpdate(0)之后,若此前有重画消息积聚,会立刻重画。所以使用LockWindowUpdate会在不同的时候有不同的表现,比如屏幕上窗口多少、堆放情况等等,所以有时不闪有时却闪个不停。
SendMessage(ClientHandle,WM_SETREDRAW,0,0)的意思是不接收任何重画消息;
SendMessage(ClientHandle,WM_SETREDRAW,1,0)的意思是可以接收并响应重画消息了,但并不立即重画,所以必须附加 ReDrawWindow(ClientHandle,nil,0,RDW_INVALIDATE or RDW_ALLCHILDREN);
0 0
- listctrl 插入多条数据时避免闪烁
- CListCtrl插入大数据量时避免闪烁的有效方法
- CListCtrl插入大数据量时避免闪烁的有效方法
- CListCtrl插入大数据量时避免闪烁的有效方法
- CListCtrl插入大数据量时避免闪烁的有效方法
- CListCtrl插入大数据量时避免闪烁的有效方法
- CListCtrl插入大数据量时避免闪烁的有效方法
- 多条数据插入
- 数据插入多条
- SQL表单条数据插入与多条数据插入
- sql插入数据时,避免插入重复数据
- 一次插入多条数据
- 怎样插入多条数据
- SqlServer 插入多条数据
- sqllite插入多条数据
- 一次插入多条数据
- yii 插入多条数据
- sql插入多条数据
- 机器学习与深度学习资料
- Android AIDL理解
- Android程序:TimePicker和DatePicker的两种实现案例
- Facebook POP 进阶指南
- Android nfc模块读写MifareClassic卡50
- listctrl 插入多条数据时避免闪烁
- PHP的静态变量介绍
- C++ 版 Longest Common Prefix leetcode提交正确。
- JUnit结果重跑失败用例(支持Mvn和Ant)
- make编译报错 "Makefile", line 10: make: Dependency line needs colon or double colon operator.
- 三消游戏的一个重要帮助函数
- Axure RP快速入门
- python11:函数
- Android如何引用其他工程