• 简单字母闪烁


    //windows.h文件中包含应用程序中所需的数据类型和数据结构的定义
    #include <windows.h>
    #include <stdlib.h>
    #include <time.h>
    #include <string.h>
    #include <math.h>
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//窗口函数说明
    //---------以下初始化窗口类--------------
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
    {
        HWND hwnd;
        MSG Msg;
        WNDCLASS wndclass;
        char lpszClassName[] = "窗口";     //窗口类名
        char lpszTitle[] = "My_Windows";    //窗口标题名
    
        //窗口类的定义
        wndclass.style = CS_HREDRAW | CS_VREDRAW;                  //窗口类型为默认类型
        wndclass.lpfnWndProc = WndProc;      //窗口处理函数为WndProc
        wndclass.cbClsExtra = 0;             //窗口类无扩展
        wndclass.cbWndExtra = 0;             //窗口实例无扩展
        wndclass.hInstance = hInstance;     //当前实例句柄
    
        wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);//窗口的最小化图标为默认图标
        wndclass.hCursor = LoadCursor( NULL, IDC_ARROW); //窗口 采用箭头光标
        wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); //窗口 背景为 白色
        wndclass.lpszMenuName = NULL ; //窗口 中无菜单
        wndclass.lpszClassName = lpszClassName; //窗口类名为“窗口示例”
    //-----------以下进行窗口类的注册
        if (!RegisterClass(&wndclass))//如果注册失败则发出警吿声音
        {
            MessageBeep (0);
            return FALSE;
        }
    
    //创建窗口
        hwnd = CreateWindow(
                            lpszClassName, //窗口类名
                            lpszTitle,      //窗口实例的标题名
                            WS_OVERLAPPEDWINDOW, //窗口 的风格
                            CW_USEDEFAULT,
                            CW_USEDEFAULT,  //窗口左上角坐标为默认值
                            CW_USEDEFAULT,
                            CW_USEDEFAULT,  //窗口的髙和宽为默认值
                            NULL,           //此窗口无父窗口
                            NULL,           //此窗口无主菜单
                            hInstance,      //创建此窗口应用程序的当前句柄
                            NULL            //不使用该值
                            );
    
    
    
        ShowWindow( hwnd, nCmdShow);        //显示窗口
        UpdateWindow(hwnd);                 //绘制用户区
        while( GetMessage(&Msg, NULL, 0, 0)) //消息循环
        {
            TranslateMessage(&Msg);
            DispatchMessage(&Msg);
        }
        return Msg.wParam;                  //程序终止时将信息返回系统
    }
    
    
    
    
    //窗口函数
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        HDC hDC;
        RECT rect;
        PAINTSTRUCT Ps;
        TEXTMETRIC tm;
        HFONT hf;
        SIZE Sz;
        COLORREF color[7] = {RGB(255,0,0), RGB(255,165,0), RGB(255,255,0), RGB(0,255,0), RGB(0,255,255), RGB(0,0,255), RGB(139,0,255)};
        static int x = 0, y = 0, i;
        static int nchar = 0;
        static int njump = 1;
        int temp;
        static bool isLeft = false, isRight = true, isDec = false, isInc = true, isLean = false;
        char textbuf[]= "abcdefghijklmnopqrstuvwxyz";
        int slen = strlen(textbuf);
    
    
        switch(message)
        {
        case WM_CREATE:
            //建立计时器,每0.3秒发出wm_timer的消息
            SetTimer(hWnd, 1, 300, NULL);
            srand(time(NULL));
            return 0;
        case WM_PAINT:
            hDC = BeginPaint(hWnd, &Ps); //处理绘图消息
            GetClientRect(hWnd, &rect); //获得设备环境变量
    
            hf = CreateFont( //创建自定义字体
                rand()%500+100, //字体的高度
                0,  //由系统根据高宽比选取字体最佳宽度值
                0,  //文本的倾斜度为0,表示水平
                0,  //字体的倾斜度为0
                FW_NORMAL,   //字体的粗度,FW_HEAVY为最粗
                0,  //非斜体字
                0,  //无下划线
                0,  //无删除线
                ANSI_CHARSET,   //表示所用的字符集为ANSI_CHARSET
                OUT_DEFAULT_PRECIS, //输出精度为缺省精度
                CLIP_DEFAULT_PRECIS,    //剪裁精度为缺省精度
                DEFAULT_QUALITY,        //输出质量为缺省值
                DEFAULT_PITCH |FF_DONTCARE,     //字间距和字体系列使用缺省值
                "粗体字");     //字体名称
    
            SetTextColor(hDC, RGB(rand()%256, rand()%256,rand()%256));
            SelectObject(hDC, hf);  //绑定字体
            GetTextMetrics(hDC, &tm);    //获取字体信息
            //GetTextExtentPoint32(hDC, textbuf, strlen(textbuf), &Sz);
            y = tm.tmExternalLeading*(rand()%14);
            x = rand() % (rect.right - tm.tmAveCharWidth);
            temp = rand()%26;
            TextOut(hDC, x, y, &textbuf[temp], 1);
    
            DeleteObject(hf);
            EndPaint(hWnd, &Ps);
            return 0;
        case WM_TIMER:
            InvalidateRect(hWnd, NULL, 1);
            return 0;
        case WM_DESTROY:
            PostQuitMessage(0);                 //调用 PostQuitMessage 发出 WM_QUIT 消息
            return 0;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam); //默认时采用系统消息默认处理函数
    
        }
    
    }
  • 相关阅读:
    mac c++编译出现segmentation fault :11错误
    ssh 连接缓慢解决方法
    237. Delete Node in a Linked List
    203. Remove Linked List Elements
    Inversion of Control Containers and the Dependency Injection pattern
    82. Remove Duplicates from Sorted List II
    83. Remove Duplicates from Sorted List
    SxsTrace
    使用CCleaner卸载chrome
    decimal and double ToString problem
  • 原文地址:https://www.cnblogs.com/Vikyanite/p/12497221.html
Copyright © 2020-2023  润新知