等待对话框
1. 首先从CWnd继承一个类命名为CmyWaitWin,添加了属性:
int m_nWidth; //动画窗口的宽度
int m_nHeight; //动画窗口的高度
HANDLE m_hThread;//新建线程的句柄
HANDLE m_StopEvent;//事件句柄
BOOL m_ThreadActive ;
BOOL m_ThreadEnd;
CString m_StringText;//动画窗口上显示的字
2. 在初始化函数中为属性赋初始值。
CMyWaitWin::CMyWaitWin() {
m_ThreadEnd = FALSE;
m_ThreadActive = FALSE;
m_StopEvent = NULL;
m_StringText = "";
}
3. 添加操作建立窗口并新建一个线程。新建窗口:
BOOL nHwnd = CreateEx(0,AfxRegisterWndClass(0,
AfxGetApp()->LoadStandardCursor(IDC_ARROW)),
NULL,WS_POPUP,0,0,weight,height,NULL,NULL,NULL);
SetWindowPos(&wndTopMost,0,0,m_nWidth,m_nHeight,SWP_NOMOVE | SWP_SHOWWINDOW);
创建一个线程进行重画窗口
m_hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)OnThreadFun,this,0,&dwThreadID);
OnThreadFun 为线程要处理的函数 新建一个事件,通知线程结束
m_StopEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
4. 重写OnPaint()函数,为窗口进行装饰,初始化用。
//画边框
DrawRectangle(&dc,CRect(1,1,m_nWidth,m_nHeight));
//为矩形窗口填充颜色,用刷子。
DrawRectFull(&dc, CRect(0,0,m_nWidth,m_nHeight));
//画边线
DrawRectBorder(&dc,CRect(2,2,m_nWidth-1,m_nHeight-1));
//写要显示的提示文字
SetWinText(&dc, CRect(40,22,m_nWidth-1,m_nHeight-1),m_StringText);
// 画动态的动画效果。
DrawSetpBlock(&dc, CRect(0,0,m_nWidth,m_nHeight));
5. 写重画函数,作为线程调用即调用OnPaint()中的函数。
6. 写OnThreadFun函数,线程过程函数。
CMyWaitWin* pWaitWnd = (CMyWaitWin*)lpParam;
pWaitWnd->m_ThreadActive = TRUE;
DWORD dwReturn;
while(1) {
if(pWaitWnd->m_ThreadEnd == TRUE)
{
pWaitWnd->m_ThreadActive = FALSE;
DWORD dwExitCode;
GetExitCodeThread(pWaitWnd->m_hThread,&dwExitCode);
ExitThread(dwExitCode);
break;
}
dwReturn = ::WaitForSingleObject(pWaitWnd->m_StopEvent,THREADMAXTIME); //等待threadEnd事件有信号,无信号时线程在这里悬停 switch(dwReturn)
{
case WAIT_OBJECT_0:
{
pWaitWnd->m_ThreadActive = FALSE;
DWORD dwExitCode;
GetExitCodeThread(pWaitWnd->m_hThread,&dwExitCode);
ExitThread(dwExitCode);
break;
}
default:
pWaitWnd->ReDrawWindow();
break;
}
}
WaitForSingleObject 作用,如果有返回信号,如果为WAIT_OBJECT_0,杀掉线程,消除窗口,进行其他的操作,如果不是就调用ReDrawWindow();重画,达到动画效果。如果超时THREADMAXTIME,也停止。
7. 写关闭函数,给线程信号杀掉线程。
this->m_ThreadEnd = TRUE;
if(m_hThread )
{
m_hThread = NULL;
this->SendMessage(WM_CLOSE);
// MessageBox("创建刷新线程失败!","提示信息",MB_ICONINFORMATION);
// return FALSE;
}
OnDestroy();
8. 重写OnDestroy()函数,发送事件消息。
this->m_ThreadEnd = TRUE;
if(m_ThreadActive)
{
SetEvent(m_StopEvent);
}
CWnd::OnDestroy();
北窑10路车站 慈民甜牛肉汤 白果牛肉汤 新街转盘老婆米线 北关机床厂对面白记豆腐汤 东车站10路车站 陕西泡馍馆(以前在北窑开)10年老店,炒菜,烩馍都不赖 义勇街席记烩菜 莲汤肉片 西关不着啥路 孙记大锅炖牛杂 道北三路小小鱼庄 北大街丹尼斯对面路里头 甏肉干饭 吃着也可以 主要是吃着过瘾 还有就是旁边的老街锅贴也不错 中心医院后面,唐宫路上的全驴汤 启明东路马杰山牛肉汤 启明南路建伟羊肉汤不错 启明西路夹马营路交叉口糊涂面浆面条 夹马营路陈记驴肉汤 爽明街北头的金记豆腐汤好喝 新区长兴街与翠云路交叉口,田湖羊肉汤 涧西区丽新路叶氏猪蹄对面的东辉大排档 纱厂东路老丹牛肉汤对面的喜庆饺子馆,饺子做得挺好的 健康西路上的果木烤鸭,36一只,18半只,物美价廉 健康东路上的中原东北菜,价格实惠量又足 新区的七品牛汤,汤和牛肉面都很好,就是有点贵 王城大道上的威海小厨,主打海鲜 西工饭庄,卖锅贴那家的牡丹烧麦也很好吃 凯旋路上的湘什么米粉 联盟路【熏肉大饼 新区龙兴街口与凝碧北街交叉口往东有个龙兴水席园,那家的炒扁垛很好吃,就是往建业高尔夫那个方向去的 新区政和路东头快到龙门大道的地方路北有个司马家驴肉汤 西工消防队边上的小尾羊很好吃,而且不管火锅还是要的烤肉,绝对是羊肉的,非常推荐 汉城之约 九都路岁岁羊,我喜欢吃他家的那盘芝麻小饼加羊肉丝,忘了店里的正规叫法了,南瓜汤这一家做的也不错 七一路有家百岁鱼吧,我觉得挺好吃 香榭丽那一带净是饭店,南侧有一家咸淡江湖,里面的店小二都跟水浒里的似的 烧鹅皇的烧鹅味道不错,在一楼大厅就餐价格还算公道 如果是岁岁羊,应该是九都路和玻璃厂南路交叉口的百岁鸡,最初是百岁鸡,后小肥羊兴起时有了岁岁羊,再一年后有了金淑鱼。再后在七一路开了家百岁酒店,里面除了这三样,还有其它菜可以点。昨天晚上在此吃的金淑鱼。
咸淡江湖九都路上另一家饭店,名字取的挺好,不过我没有进去吃过,因为没有人推荐过,离的也比较近。 香榭里这两排除了信阳菜馆和素缘外没有什么好吃的,还贼贵 咸淡江湖本在长春路 后在九都路上开了分店 现在感觉一般 不如以前了 百岁酒店里的苏帮菜非常不错 金淑鱼更是一绝 比大丰收鱼庄什么的好多了 西湖春天
凯旋路上有一家湘家乡米粉。推荐麻辣牛肉干拌粉! 原来凯旋路上有一家单锅鸡汤米线也是我的最爱! 忘了说小街有一家丹珍汤圆。夹饼和汤圆都不错。 时代广场有一家悠仙美地环境没得说!价格也不贵。 万达我就不再推荐了。只有二楼的拿渡和百味王还可以。不过小街也有百味王,在新华书店旁边。万达外面有很多好吃的。 轴一中后面有一家家乐谷,上次小银龙也去了,不过他班长说不好吃。。。轴一中门口我就不细说了,都还可以。 上海市场我到没发现什么特别好吃的。有一家脆皮臭豆腐,以前吃着还可以,现在觉得也就那样。 西关有一家牛肉汤特别好喝!在快到黄梅路教育学院的位置。特别特别好喝!极力推荐!!!! 还有轴一中的豆腐汤。建议6点半到轴一中,第一个窗口就是。可以买饭票的。 丹尼斯的游记泡馍 蒙古君王烤肉,在廛河桥西头。 还有一家机车工厂大盘鸡也很棒。坐9路到终点站〈往东的方向。别坐反了〉
浙公网安备 33010602011771号