一个小动画(源代码)

#include "windows.h"
#include "stdlib.h"
#include "string.h"
long WINAPI WndProc(HWND hwnd,UINT message,UINT wParam,LONG lParam);
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);


//主函数
int WINAPI WinMain(HINSTANCE hInstance,
       HINSTANCE hPrevInstance,
       LPSTR lpCmdLine,
       int nCmdShow
       )
{
 MSG Msg;
 if (!InitWindowsClass(hInstance)) {
  return FALSE;
 }
 if (!InitWindows(hInstance,nCmdShow)) {
  return FALSE;
 }
 while (GetMessage(&Msg,0,0,0)) {
  TranslateMessage(&Msg);
  DispatchMessage(&Msg);
 }
 return Msg.wParam;
}

//消息处理程序
long WINAPI WndProc(HWND hwnd,UINT message,UINT wParam,LONG lParam)
{
 HDC hDC;
 static int flag=0;
 static int i=0;
 TEXTMETRIC tm;
 PAINTSTRUCT PtStr;
 HFONT hf;
 char textbuf[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 switch(message) {
 case WM_PAINT:
  hDC=BeginPaint(hwnd,&PtStr);
  hf=CreateFont(30,20,0,0,FW_HEAVY,0,0,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
         DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,"粗体字");
  
  SetTextColor(hDC,RGB(255,0,0));
  SetBkColor(hDC,BLACK_BRUSH);
  SelectObject(hDC,hf);
  if (flag==0) {
  for(;i<=25;i++){
   if (i%4==0) {
  SetTextColor(hDC,RGB(255,50,10));
    TextOut(hDC,i*30,0,&textbuf[i],1);
   }
   if (i%4==1) {
  SetTextColor(hDC,RGB(255,255,0));
    TextOut(hDC,i*30,20,&textbuf[i],1);
   }
   if (i%4==2) {
  SetTextColor(hDC,RGB(0,255,10));
    TextOut(hDC,i*30,40,&textbuf[i],1);
   }
   if (i%4==3) {
  SetTextColor(hDC,RGB(255,0,255));
    TextOut(hDC,i*30,20,&textbuf[i],1);
   }
  }
  InvalidateRect(hwnd,NULL,1);
  }
  if (flag==1) {
  for(;i<=25;i++){
   if (i%4==0) {
  SetTextColor(hDC,RGB(0,255,50));
    TextOut(hDC,i*30,20,&textbuf[i],1);
   }
   if (i%4==1) {
  SetTextColor(hDC,RGB(60,255,0));
    TextOut(hDC,i*30,40,&textbuf[i],1);
   }
   if (i%4==2) {
  SetTextColor(hDC,RGB(255,0,0));
    TextOut(hDC,i*30,20,&textbuf[i],1);
   }
   if (i%4==3) {
  SetTextColor(hDC,RGB(255,80,100));
    TextOut(hDC,i*30,0,&textbuf[i],1);
   }
  }
  InvalidateRect(hwnd,NULL,1);
  }
  if (flag==2) {
  for(;i<=25;i++){
   if (i%4==0) {
  SetTextColor(hDC,RGB(0,255,255));
    TextOut(hDC,i*30,40,&textbuf[i],1);
   }
   if (i%4==1) {
  SetTextColor(hDC,RGB(255,0,0));
    TextOut(hDC,i*30,20,&textbuf[i],1);
   }
   if (i%4==2) {
  SetTextColor(hDC,RGB(30,80,255));
    TextOut(hDC,i*30,0,&textbuf[i],1);
   }
   if (i%4==3) {
  SetTextColor(hDC,RGB(90,200,30));
    TextOut(hDC,i*30,20,&textbuf[i],1);
   }
  }
  InvalidateRect(hwnd,NULL,1);
  }
  if (flag==3) {
  for(;i<=25;i++){
   if (i%4==0) {
  SetTextColor(hDC,RGB(20,80,66));
    TextOut(hDC,i*30,20,&textbuf[i],1);
   }
   if (i%4==1) {
  SetTextColor(hDC,RGB(55,80,255));
    TextOut(hDC,i*30,0,&textbuf[i],1);
   }
   if (i%4==2) {
  SetTextColor(hDC,RGB(80,80,80));
    TextOut(hDC,i*30,20,&textbuf[i],1);
   }
   if (i%4==3) {
  SetTextColor(hDC,RGB(255,100,20));
    TextOut(hDC,i*30,40,&textbuf[i],1);
   }
  }
  InvalidateRect(hwnd,NULL,1);
  }
  i=0;
  flag++;
  flag=flag%4;

  Sleep(200);
  // InvalidateRect(hwnd,NULL,1);
  
  
  EndPaint(hwnd,&PtStr);
  return 0;
  break;
 case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
 default:
  return(DefWindowProc(hwnd,message,wParam,lParam));
 }
}
//初始化窗口
BOOL InitWindowsClass(HINSTANCE hInstance)
{
 WNDCLASS WndClass;
 WndClass.cbClsExtra=0;
 WndClass.cbWndExtra=0;
 WndClass.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
 WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
 WndClass.hIcon=LoadIcon(NULL,"END");
 WndClass.hInstance=hInstance;
 WndClass.lpfnWndProc=WndProc;
 WndClass.lpszClassName="我的窗口";
 WndClass.lpszMenuName=NULL;
 WndClass.style=CS_HREDRAW|CS_VREDRAW;
 return RegisterClass(&WndClass);
}
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
 HWND hwnd;
 hwnd=CreateWindow(
       "我的窗口",
       "文本显示例程序",
       WS_OVERLAPPEDWINDOW,
       0,
       0,
       800,
       500,
       NULL,
       NULL,
       hInstance,
       NULL);
 if (!hwnd) {
  return FALSE;
 }
  
  ShowWindow(hwnd,nCmdShow);
  UpdateWindow(hwnd);
  return TRUE;

 
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值