• 按数字


    //windows.h文件中包含应用程序中所需的数据类型和数据结构的定义
    #include <windows.h>
    #include <stdlib.h>
    #include <time.h>
    #include <string.h>
    #include <stdio.h>
    #include <math.h>
    #define PI acos(-1)
    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, hdc_old;
        HBITMAP hBmp;
        RECT rect;
        HBRUSH hBrush;
        PAINTSTRUCT Ps;
        TEXTMETRIC tm;
        HFONT hf;
        HPEN hPen;
        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 bool isright = false, isdown = false;
        static int num;
        char *textbuf[] = {
            "0","1","2","3","4","5","6","7","8","9"
        };
        HBITMAP hBkBmp;
        int i;
    
        switch (message)
        {
        case WM_CREATE:
            //建立计时器,每2秒发出wm_timer的消息
            SetTimer(hWnd, 1, 2000, NULL);
            srand(time(NULL));
            num = rand() % 10;
            return 0;
        case WM_KEYDOWN:
            isdown = true;
            return 0;
        case WM_KEYUP:
            InvalidateRect(hWnd, NULL, 1);
            return 0;
        case WM_ERASEBKGND:
            return 1;
        case WM_CHAR:
            if (wParam == num+'0')
            {
                isright = true;
            }
            return 0;
        case WM_PAINT:
            hDC = BeginPaint(hWnd, &Ps);
    
            GetClientRect(hWnd,&rect);
    
            hf = CreateFont( //创建自定义字体
                500, //字体的高度
                0,  //由系统根据高宽比选取字体最佳宽度值
                0,  //文本的倾斜度为0,表示水平
                0,  //字体的倾斜度为0
                FW_HEAVY,   //字体的粗度,FW_HEAVY为最粗
                0,  //非斜体字
                0,  //无下划线
                0,  //无删除线
                ANSI_CHARSET,   //表示所用的字符集为ANSI_CHARSET
                OUT_DEFAULT_PRECIS, //输出精度为缺省精度
                CLIP_DEFAULT_PRECIS,    //剪裁精度为缺省精度
                DEFAULT_QUALITY,        //输出质量为缺省值
                DEFAULT_PITCH |FF_DONTCARE,     //字间距和字体系列使用缺省值
                "粗体字");     //字体名称
                SelectObject(hDC, hf);
            if (!isdown)
            {
                SetTextColor(hDC, RGB(0,0,0));
    
            }
            else if (isright)
            {
                SetTextColor(hDC, color[0]);
            }
            else
            {
                SetTextColor(hDC, color[5]);
            }
            isdown = false;
            isright = false;
            DrawText(hDC, textbuf[num], -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
    
            DeleteObject(hBrush);
            DeleteObject(hf);
            DeleteObject(hPen);
    
            ReleaseDC(hWnd, hDC); //释放
            EndPaint(hWnd, &Ps); //结束缓制
            return 0;
        case WM_TIMER:
            num = rand() % 10;
            InvalidateRect(hWnd, NULL, 1);
            return 0;
        case WM_DESTROY:
            PostQuitMessage(0);                 //调用 PostQuitMessage 发出 WM_QUIT 消息
            return 0;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam); //默认时采用系统消息默认处理函数
    
        }
    
    }
  • 相关阅读:
    CS229 6.4 Neurons Networks Autoencoders and Sparsity
    CS229 6.3 Neurons Networks Gradient Checking
    【Leetcode】【Easy】Min Stack
    【Leetcode】【Easy】Merge Sorted Array
    【Leetcode】【Easy】ZigZag Conversion
    【Leetcode】【Easy】Valid Palindrome
    【Leetcode】【Easy】Reverse Integer
    【Leetcode】【Easy】Palindrome Number
    【Leetcode】【Easy】Length of Last Word
    【Leetcode】【Easy】Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/Vikyanite/p/12639037.html
Copyright © 2020-2023  润新知