我加了一段响应鼠标单击click时间之后,每次一点,总能看见变颜色的表格闪一下,感觉和excel差很远啊,各位大友,能否告知小的一二。
void CMAIN::OnClickMshflexgrid1() 
{
// TODO: Add your control notification handler code here
int row,col;
row=m_hflexgrid.GetRow();
col=m_hflexgrid.GetCol();
m_hflexgrid.SetCol(oldcol);
m_hflexgrid.SetRow(oldrow);
m_hflexgrid.SetCellBackColor(0x00FFFFFF);
if(col==6)
{
m_hflexgrid.SetCol(col);
m_hflexgrid.SetRow(row);
m_hflexgrid.SetCellBackColor(0xFFFF);
}
m_hflexgrid.Refresh();
oldcol=col;
oldrow=row;
}

解决方案 »

  1.   

    可能是SetCellBackColor本身就会把一个表格的背景颜色重刷一遍,而你又用Refresh再刷新一遍,这样短时间内的多次刷屏会导致闪烁。
    (纯属个人见解,没用过MSHFlexGrid)
      

  2.   

    我本来没加Refresh,但是看见它闪我就自作主张加上去了,但是还是和原来一样,没什么改善,郁闷!
      

  3.   

    你每次都进行setcol,setrow之类的操作,等每次重绘一下grid,
    有闪烁是很正常的.这些操作建议放在初始化里,非必要不再进行这些操作
      

  4.   

    你这么做肯定要闪的。你调用了多次SetCol和SetRow。等于每次点击你都重新布置grid的所有行和列。重画是需要时间的。而且如果有滚动的话,那就更慢了,
      

  5.   

    可是如果我每次响应鼠标点击事件时都要将原来的cell变回最初的颜色,而把正在点着的cell变成黄色,不setCol和setRow的话,我的m_hflexgrid.SetCellBackColor(0xFFFF);不是没办法准确将cell变色吗?
      

  6.   

    SetCol和SetRow是干什么的?不是SetColSel和SetRowSel吗?
      

  7.   

    :P我用SetCol和SetRow来指定cell的row和col
      

  8.   

    happyparrot(快乐鹦鹉) 的SetColSel和SetRowSel令有用途吧,诶,初学这个控件我也不是很清楚,稍微试了一下,发现根本不是我所要的
      

  9.   

    VCSQLVB(九龙.君威) 、zhucde(【风间苍月】)(MVP) 我知道问题不是很严重只是不太好看而已,但是不用setCol\Row,那用什么呢?我必须把鼠标正在点击的cell变成黄色,而其他cell则要保持原来的白色,也就是先前点击的cell也要从黄色变成白色,那么问题要解决也就是要记下oldcell的row和col,在把正在点击的cell变成黄色的之前把先前点击的cell也要从黄色变成白色,还要把m_hflexgrid.SetCellBackColor(0xFFFF);的row和col变成正在点击的cell的col和row.这样才能保证该黄的黄该白的白,并且cell的虚线边框也才能正确套在正在点击的cell上。我曾经试图加SetRedraw(FALSE);SetRedraw(TRUE);但是它把我先前的cell变成黄色,正在点击的cell变成白色,晕倒。