久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

防止CListCtrl閃爍的幾種方法

 MarkG 2010-12-10
1.使用SetRedraw禁止窗口重繪,操作完成后,再恢復(fù)窗口重繪
m_ctlList.SetRedraw(FALSE);
//以下為更新數(shù)據(jù)操作
//……
//恢復(fù)窗口重繪
m_ctlList.SetRedraw(TRUE);
2.使用LockWindowUpdate禁止窗口重繪,,操作完成后,,用UnlockWindowUpdate恢復(fù)窗口重繪
m_ctlList.LockWindowUpdate();
//以下為更新數(shù)據(jù)操作
//……
//恢復(fù)窗口重繪
m_ctlList.UnlockWindowUpdate();
3.使用ListCtrl的內(nèi)部雙緩沖
m_ctlLisit.SetExtendedStyle(m_ctlLisit.GetExtendedStyle()|LVS_EX_DOUBLEBUFFER);
VC6未定義LVS_EX_DOUBLEBUFFER宏,,使用者可以自定義,如下:
#define LVS_EX_DOUBLEBUFFER 0×00010000
4.Virtual List
首先要設(shè)置ListCtrl風(fēng)格為LVS_REPORT | LVS_OWNERDATA或在ListCtrl屬里中的More Styles頁面中選中Owner data復(fù)選框。
其次要向應(yīng)LVN_GETDISPINFO消息;
void OnGetdispinfoList(NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
LV_ITEM *pItem = &(pDispInfo)->item;
char szText[128] = {0};
if (pItem->mask & LVIF_TEXT)
{
//使緩沖區(qū)數(shù)據(jù)與表格子項對應(yīng)
//m_ArrayBuff為二維數(shù)組
//定義如下 int m_ArrayBuff[2048][4];
_stprintf(szText,_T(“%d”),m_ArrayBuff[pItem->iItem][pItem->iSubItem]);
pItem->pszText = szText;
}
*pResult = 0;
}
最后便是生成緩沖區(qū)數(shù)據(jù)
void Insertdata()
{
//刪除之前的數(shù)據(jù)
m_ctlList.SetItemCountEx(0);
m_ctlList.Invalidate();
m_ctlList.UpdateWindow();
srand( (unsigned)time( NULL ));
//生成新的數(shù)據(jù)緩沖區(qū)
int nItemCount = 2048;
for (int i = 0;i < nItemCount; i ++)
{
for (int k = 0;k < 4;k ++)
{
m_ArrayBuff[i][k] = rand()%2048 + 1;
}
}
if (nItemCount < 2)
m_ctlList.SetItemCountEx(1);
else
m_ctlList.SetItemCountEx(nItemCount);
m_ctlList.Invalidate();
}
若要修改數(shù)據(jù),只要修改緩沖區(qū)m_ArrayBuff的數(shù)據(jù)即可以
5.Custom Redraw
既然是自繪,,首先當然是重載CListCtrl類,并接管WM_ERASEBKGND消息,,去掉默認的處理,,改為不處理
BOOL CListCtrlEx::OnEraseBkgnd(CDC* pDC)
{
//響應(yīng)WM_ERASEBKGND消息
return false;
//屏蔽默認處理
//return CListCtrl::OnEraseBkgnd(pDC);
}
void CListCtrlEx::OnPaint()
{
//響應(yīng)WM_PAINT消息
CPaintDC dc(this); // device context for painting
CRect rect;
CRect headerRect;
CDC MenDC;//內(nèi)存ID表
CBitmap MemMap;
GetClientRect(&rect);
GetDlgItem(0)->GetWindowRect(&headerRect);
MenDC.CreateCompatibleDC(&dc);
MemMap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
MenDC.SelectObject(&MemMap);
MenDC.FillSolidRect(&rect,RGB(228,236,243));
//這一句是調(diào)用默認的OnPaint(),把圖形畫在內(nèi)存DC表上
DefWindowProc(WM_PAINT,(WPARAM)MenDC.m_hDC,(LPARAM)0);
//輸出
dc.BitBlt(0,headerRect.Height(),rect.Width(), rect.Height(),&MenDC,0, headerRect.Height(),SRCCOPY);
MenDC.DeleteDC();
MemMap.DeleteObject();
}
 
本文來自CSDN博客,轉(zhuǎn)載請標明出處:http://blog.csdn.net/zw0558/archive/2010/09/12/5879315.aspx
 
本文來自CSDN博客,,轉(zhuǎn)載請標明出處:http://blog.csdn.net/zw0558/archive/2010/09/12/5879315.aspx

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多