关于界面控件动画效果用了sleep后办面无法输入问题。
请看代码:
有一个button控件重写了他的DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)。也就是我要控制他的绘制。
代码:
Move *m
void Move::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{ CBrush brush;
CRect rect;
M = this;
CClientDC dc(this);
GetClientRect(rect);
int width = rect.Width();
int height = rect.Height();
if(state == 0 || atFloor == 1)
{
brush.CreateSolidBrush(RGB(0,222,0));
dc.SelectObject(&brush);
dc.Rectangle(0,height*5/6,width,height);
brush.DeleteObject();
}
if(state == 1)
{
for(int i=1; i<height/6; i++)
{
brush.CreateSolidBrush(RGB(255,0,0));
dc.SelectObject(&brush);
dc.Rectangle(0,height*(6-atFloor)/6-i,width,height*(7-atFloor)/6-i);
brush.DeleteObject();
Sleep(30);
}
}
然后通过
void Move::goUp(int atFloor)
{
this->atFloor = atFloor-1;
this->state = 1;
this->SetRedraw(true);
this->RedrawWindow();
}
在CmyElevatorDlg类中
void CMyElevatorDlg::OnButton1()
{
pThread = AfxBeginThread(ThreadFunc,NULL,0);
}
//线程控制涵数。
UINT ThreadFunc(LPVOID lpParam)
{
//創建CMyElevatorDlg指針;
Move *m
m -> goUp (2);
//運行完後把標記設為true.
return 0;
}
问题是我在运行时界面无法响应别的事件了。请帮我看一下有什么好的办法。本人新手请详细说一下。问题就是那个sleep那里原因我也知道。要怎么解决???