更新时间:2015-12-26 17:49:54浏览次数:1+次
1.最常见的点号提示等待的动态效果图:
2.横杠原地旋转的等待动态效果图:
InvalidateRect(hwnd,NULL,TRUE);//让客户区重绘,并且要先擦除背景
擦除背景就是因为之前的输出不能还在本次输出中出现,因为那样留下的痕迹,会干扰本次输出的效果。点的输出方式是不断的增加点数,然而之前如果都输出了所有的点,然后后面的循环就始终看不到动态的增加点的效果。因为背景没有被擦除,你看到的点是之前已经输出来的。所以需要重绘将之前输出的东西都擦掉。#include "windows.h"
#include <tchar.h>
// - 项目是Unicode字符集
LRESULT CALLBACK WinProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
PAINTSTRUCT ps;
switch (message)
{
case WM_CREATE:
SetTimer(hwnd,0,100,NULL);
return 0;
case WM_PAINT:
{
#define COUNT 9
static int iCount=0;
static TCHAR Dot[COUNT][10]={_T("."),_T(".."),_T("..."),_T("...."),_T("....."),_T("......"),_T("......."),_T("........"),_T("........")};
//static TCHAR Dot[COUNT][10]={_T("-"),_T("/"),_T("|"),_T("\\")};
//static TCHAR Dot[COUNT][10]={_T("╱"),_T("┊"),_T("╲"),_T("┈")};
//static TCHAR Dot[COUNT][10]={_T("①"),_T("②"),_T("③"),_T("④"),_T("⑤"),_T("⑥")};
//static TCHAR Dot[COUNT][10]={_T("┹"),_T("┩"),_T("┱"),_T("┢")};
//static TCHAR Dot[COUNT][10]={_T("卍"),_T("卐")};
//输出提示
HDC hdc = BeginPaint(hwnd,&ps);
SelectObject(hdc,GetStockObject(SYSTEM_FIXED_FONT));
TCHAR Tip[100]=_T("");
wsprintf(Tip,_T("正在扫描病毒%s"),Dot[iCount++%COUNT]);
TextOut(hdc,10,20,Tip,lstrlen(Tip));
EndPaint(hwnd,&ps);
}
return 0;
case WM_TIMER:
InvalidateRect(hwnd,NULL,TRUE);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrev,LPSTR lpCmd,int iShow)
{
TCHAR ClassName[] = _T("MyClass");
TCHAR title1[] = _T("C++技术网http://www.cjjjs.com");
WNDCLASS wndClass;
wndClass.cbClsExtra=0;
wndClass.cbWndExtra=0;
wndClass.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH);
wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndClass.hInstance = hInstance;
wndClass.lpfnWndProc = WinProc;
wndClass.lpszClassName = ClassName;
wndClass.lpszMenuName=NULL;
wndClass.style=CS_HREDRAW|CS_VREDRAW;
if(!RegisterClass(&wndClass)) return 0;
HWND hwnd = CreateWindow(ClassName,title1,WS_OVERLAPPEDWINDOW,0,0,600,500,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,SW_SHOWNORMAL);
MSG msg;
while (TRUE)
{
if(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
相关资讯