hur.cn - 华软网

 热门搜索

求大侠 关于控件上重绘的问题

  作者:未知    来源:网络    更新时间:2010/12/3
我将数值放入ARRAY数组中...在一个EDIT控件上画了一个坐标轴和矩状图 不过当我改变array里面的数值时候 图形并没有重绘
乞求列位大侠帮助解答...  
---华软 网友回答---
那你调用重绘没有啊???
---华软网友回复---
调用刷新:invalidate
---华软网友回复---
引用 1 楼 happyparrot 的回复:
那你调用重绘没有啊???

我直接在ONPAINT里面设置的啊。。
---华软网友回复---
RECT rc;
CWnd* BarView;
int cxGraph,cyGraph,cxBar,cxSpacing,x,y,i;
cxGraph =80;
cyGraph = 100;
BarView = GetDlgItem(IDC_EDIT_BAR);
CPaintDC dc(BarView);

CBrush Bursh(RGB(255,0,0));
CBrush* pOldBrush = dc.SelectObject(&Bursh);
CPen pen(PS_SOLID,1,RGB(255,0,0));
CPen* pOldPen = dc.SelectObject(&pen);

BarView->GetClientRect(&rc);
dc.SetMapMode(MM_ANISOTROPIC);
dc.SetWindowOrg(0,0);
dc.SetViewportOrg(10,rc.bottom-10);
dc.SetWindowExt(cxGraph,cyGraph);
dc.SetViewportExt(rc.right-20,-(rc.bottom-20));

cxBar =(3*cxGraph)/(4*DATENUM);
cxSpacing = cxBar/3;
dc.MoveTo(0,0);
dc.LineTo(0,cyGraph);
dc.MoveTo(0,0);
dc.LineTo(cxGraph,0);

for (x=0+cxSpacing,y=0,i=0;i<DATENUM;i++,x+=cxBar+cxSpacing)
{
dc.Rectangle(x,y,x+cxBar,y+m_intArray[i]*10);
}
dc.SelectObject(pOldBrush);
dc.SelectObject(pOldPen);
CDialogEx::OnPaint();
}
---华软网友回复---
关头是你改Array数据时,窗口是不知道要刷新的。总之数据转变时,需要你主动去调用刷新才行。
---华软网友回复---
为什么要在edit里重绘
这类需求最好直接重载CWnd
这有个例子
http://download.csdn.net/source/2308688
---华软网友回复---
引用 5 楼 happyparrot 的回复:
关头是你改Array数据时,窗口是不知道要刷新的。总之数据转变时,需要你主动去调用刷新才行。

额 能不能说详细点 怎么改 加什么函数?

---华软网友回复---
晕啊。我咋知道你怎么改的啊。是你说Array数据转变时,显示没有转变啊。你只需在Array数据转变的代码处,主动调用Invalidate之类的函数,让控件刷新就好了。
---华软网友回复---
数据转变了,需要主动调Invalidate以发出重绘消息,由于它排在消息行列里其实不一定马上执行,所以还需要调用UpdateWindow以立即执行重绘消息.所以

Invalidate();
UpdateWindow();

---华软网友回复---
引用 8 楼 happyparrot 的回复:
晕啊。我咋知道你怎么改的啊。是你说Array数据转变时,显示没有转变啊。你只需在Array数据转变的代码处,主动调用Invalidate之类的函数,让控件刷新就好了。

啊 谢谢 解决了
---华软网友回复---
引用 10 楼 sd5242100 的回复:
引用 8 楼 happyparrot 的回复:

晕啊。我咋知道你怎么改的啊。是你说Array数据转变时,显示没有转变啊。你只需在Array数据转变的代码处,主动调用Invalidate之类的函数,让控件刷新就好了。

啊 谢谢 解决了

居然一分都没给......
---华软网友回复---
引用 11 楼 happyparrot 的回复:
引用 10 楼 sd5242100 的回复:
引用 8 楼 happyparrot 的回复:

晕啊。我咋知道你怎么改的啊。是你说Array数据转变时,显示没有转变啊。你只需在Array数据转变的代码处,主动调用Invalidate之类的函数,让控件刷新就好了。

啊 谢谢 解决了

居然一分都没给......

晕 给错人了...我哭。。。咋样追加啊      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。