我使用标准的CListCtrl 控件 .
建立在Dialog 上,在窗口缩放时无闪烁.
可在我继承的CWnd 的窗口上缩放是闪烁严重.我建立的 CEdit 窗口无闪烁.是不是缺少参数呀.帮忙看看:
m_Edit.Create(WS_VISIBLE|WS_CHILD,CRect(0,10,200,30),this,100); //无闪烁 if(m_ListSearchContent.Create (LVS_SHOWSELALWAYS|LVS_NOCOLUMNHEADER|LVS_REPORT|LVS_SHAREIMAGELISTS|WS_VISIBLE|WS_CHILD,
CRect(0,50,200,300),this,LISTSEARCHCONTENT) == -1)
return -1;
m_ListSearchContent.ModifyStyleEx(0,WS_EX_CLIENTEDGE );
m_ListSearchContent.SetExtendedStyle(LVS_EX_FULLROWSELECT);
建立在Dialog 上,在窗口缩放时无闪烁.
可在我继承的CWnd 的窗口上缩放是闪烁严重.我建立的 CEdit 窗口无闪烁.是不是缺少参数呀.帮忙看看:
m_Edit.Create(WS_VISIBLE|WS_CHILD,CRect(0,10,200,30),this,100); //无闪烁 if(m_ListSearchContent.Create (LVS_SHOWSELALWAYS|LVS_NOCOLUMNHEADER|LVS_REPORT|LVS_SHAREIMAGELISTS|WS_VISIBLE|WS_CHILD,
CRect(0,50,200,300),this,LISTSEARCHCONTENT) == -1)
return -1;
m_ListSearchContent.ModifyStyleEx(0,WS_EX_CLIENTEDGE );
m_ListSearchContent.SetExtendedStyle(LVS_EX_FULLROWSELECT);
我的OnPaint 画背景.什么也不做也不行
我加 WS_CLIPCHILDREN风格了.我试了.不行 .可在对话框上就没有问题呀
int CSearchTelHistory::Create(CRect& rect,CWnd* pParentWnd)
{
return CChildWndBase::Create(NULL,0,WS_CHILD | WS_CLIPCHILDREN , rect,pParentWnd);
}
int CSearchTelHistory::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CChildWndBase::OnCreate(lpCreateStruct) == -1)
return -1; // TODO: 在此添加您专用的创建代码 m_tree.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,100,100),this,101);
m_tree.InsertItem("sld");
if(m_ListSearchContent.Create(LVS_SHOWSELALWAYS|LVS_NOCOLUMNHEADER|LVS_REPORT|LVS_SHAREIMAGELISTS|WS_VISIBLE|WS_CHILD,
CRect(0,0,0,0),this,LISTSEARCHCONTENT) == -1)
return -1;
m_ListSearchContent.ModifyStyleEx(0,WS_EX_CLIENTEDGE |LVS_EX_DOUBLEBUFFER );
m_ListSearchContent.SetExtendedStyle(LVS_EX_FULLROWSELECT);
CBitmap pbmp; m_ImageSearchContent.Create(16,24,ILC_MASK|ILC_COLORDDB,4,1);
pbmp.Attach((HBITMAP)::LoadImage(NULL,".\\res\\CallState.bmp",
IMAGE_BITMAP,0,0,LR_LOADFROMFILE));
m_ImageSearchContent.Add(&pbmp,RGB(249,249,249));
m_ListSearchContent.SetImageList(&m_ImageSearchContent,LVSIL_SMALL); m_ListSearchContent.InsertColumn(0,"",0,100);
RefurbishContent();
return 0;
}void CSearchTelHistory::OnSize(UINT nType, int cx, int cy)
{
CChildWndBase::OnSize(nType, cx, cy);
// TODO: 在此处添加消息处理程序代码
m_rcListSearchContent.SetRect(0,50,cx,cy); if(::IsWindow(m_ListSearchContent.m_hWnd))
{
m_ListSearchContent.MoveWindow(m_rcListSearchContent,0);
m_ListSearchContent.SetColumnWidth(0,m_rcListSearchContent.Width()-6);
}
}
//基类的Create
int CChildWndBase::Create(LPCTSTR sCatpion,DWORD dwStyleEx,DWORD dwStyle,CRect rect,CWnd* pParentWnd)
{
HWND hWnd;
CString strWndClass=AfxRegisterWndClass(0,AfxGetApp()->LoadStandardCursor(IDC_ARROW),GetSysColorBrush(COLOR_WINDOW),NULL); if(pParentWnd==NULL)
{
hWnd=NULL;
}
else
hWnd=pParentWnd->GetSafeHwnd(); return CreateEx(0,strWndClass,NULL,dwStyle,rect.left,rect.top,rect.Width(),
rect.Height(),hWnd,NULL,NULL);}
{
m_ListSearchContent.MoveWindow(m_rcListSearchContent,0);
m_ListSearchContent.SetColumnWidth(0,m_rcListSearchContent.Width()-6);
}
m_ListSearchContent就是CListCtrl的对象吧?这段代码就会引起ListCtrl刷新,可以加上判断,需要调整大小的时候再执行这段代码,以减少刷新次数。
m_ListSearchContent.ModifyStyleEx(0,WS_EX_CLIENTEDGE |LVS_EX_DOUBLEBUFFER );
m_ListSearchContent.SetExtendedStyle(LVS_EX_FULLROWSELECT);
改成这样写:
m_ListSearchContent.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_DOUBLEBUFFER);
m_ListSearchContent.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
CTreeCtrl控件加什么风格呀.我马上给分
WS_CLIPCHILDREN风格不加,就不闪烁了.???