我想通过SetTimer对view不断重绘,
可是如果我把程序最小化,又最大化后
,怎样才能使最大化保持原来的值,而且获得最新得值?意思就是 最小化后绘图程序仍然在执行,
是不是要用线程控制??
可是如果我把程序最小化,又最大化后
,怎样才能使最大化保持原来的值,而且获得最新得值?意思就是 最小化后绘图程序仍然在执行,
是不是要用线程控制??
解决方案 »
- 网络客户端程序如何断开才能使服务器的TIME_WAIT少点???
- IT职位大讨论:高级开发工程师,高级软件架构师,高级软件工程师区别
- 很简单的一个问题,左键按下一个BUTTON按钮,然后在一个Edit Box里面的数字一直从0开始增加,第次增加1.当我放开BUTTON按钮时就停止增加
- listbox控件问题
- 明天我要坐汽车去深圳一趟,大家说说有什么地方要注意吗?
- 用Odbc无法打开CRecordSet?
- 如何注册热键
- 怎么获得当前目录?
- ADO中用_ConnectionPtr建立的连接可以使用多久。
- 是不是IDL的BUG?
- 提一条建议就给50分!(另外开贴给分!!!)
- unresolved external symbol _WinMain@16 请问如何解决这个东东
SetTimer()本身就是子线程了。
定义了背景),
但要在这个背景表面绘图,比如a时刻会的图是从(0,0)到(8,8)了
,b时刻最小化,c时刻最大化,可以看到图是(9,9)到(10,10)了,
也就是前面的被刷掉了。怎么办?
没变化,不论最小化最大化。
我在OnTimer里面进行自定义绘画,问题是最大化时自定义绘画(0,0)(8,8)没有了。
是不是可以通过双缓冲,每个时刻都把自己当前的“模样“copy到
缓冲区,然后最大化时把缓冲区显示,同时进行自定义绘画呢?
可是这样好像少了实时。
是的,你自己绘制,但在最大化时系统自动又调用了OnDraw()函数,把你以前的全部又重画了,则覆盖了。我提一个建议给你,你可以用一个数组,把你的(0,0)(8,8)等等全部放在那里,然后SetTeimr()就全部执行一遍,同时把你的画圆代码写在画背景的语句后面,就是放在OnDraw()函数里面,这样或许可以解决你的问题。
和实时一点关系都没有.OnTime()
{
memDc.LineTo(..);
...
}OnDraw()
{
dc.BitBlt(0, 0, cx, cy, &memDc, 0, 0, SRCCOPY);
}就可以了,从来没有程序会去记录点的数据.
就对memDc进行操作.在OnDraw中重新通过BitBlt就可以.
{
CDC* pDc = GetDC();
m_memDc.CreateCompatibleDC(pDc);
m_memBitmap.CreateCompatibleBitmap(pDc, 1024, 768);
m_memDc.SelectObject(&m_memBitmap);
.....
}CMyDialog::OnMouseMove(...)
{
m_memDc.MoveTo(x1, y1);
m_memDc.LineTo(x2, y2);
...
}CMyDialog::OnPaint()
{
...
dc.BitBlt(0, 0, 1024, 768, &m_memDc, 0, 0, SRCCOPY);
...
}