zoukankan      html  css  js  c++  java
  • 静态菜单

    //windows.h文件中包含应用程序中所需的数据类型和数据结构的定义
    #include <windows.h>
    #include <stdlib.h>
    #include <time.h>
    #include "menu_1.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 = "menu1" ; //窗口 中无菜单
        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;                  //程序终止时将信息返回系统
    }
    #define LR (rect.left+rect.right)
    #define TD (rect.bottom+rect.top)
    #define R 50
    #define PI acos(-1)
    
    //窗口函数
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        HDC hDC;
        HBRUSH hBrush;
        RECT rect;
        HPEN hPen;
        PAINTSTRUCT PtStr;
        POINT p;
        static bool isTria = false, isCir = false, isTex = false;
        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)};
    
        switch(message)
        {
        case WM_COMMAND:
            switch(LOWORD(wParam))
            {
            case IDM_DRAW_CIR:
                isCir = true;
                InvalidateRect(hWnd, NULL, 1);
                return 0;
            case IDM_DRAW_TRI:
                isTria = true;
                InvalidateRect(hWnd, NULL, 1);
                return 0;
            case IDM_DRAW_TEX:
                isTex = true;
                InvalidateRect(hWnd, NULL, 1);
                return 0;
            }
            return 0;
        case WM_CREATE:
            return 0;
        case WM_PAINT:
            GetClientRect(hWnd, &rect);
            hDC = BeginPaint(hWnd, &PtStr);
            GetClientRect(hWnd,&rect);
    
            if (isCir)
            {
                hPen = CreatePen(PS_SOLID, 5, color[2]);
                SelectObject(hDC, hPen);
                Ellipse(hDC, (rect.right+rect.left)/2-100, (rect.bottom+rect.top)/2-100, (rect.right+rect.left)/2+100, (rect.bottom+rect.top)/2+100);
                DeleteObject(hPen);
                isCir = false;
            }
            else if (isTria)
            {
                hPen = CreatePen(PS_SOLID, 5, color[5]);
                SelectObject(hDC, hPen);
                MoveToEx(hDC,  (rect.right+rect.left)/2, (rect.bottom+rect.top)/3,NULL);
                LineTo(hDC, (rect.right+rect.left)*2/3, (rect.bottom+rect.top)*2/3);
                LineTo(hDC, (rect.right+rect.left)/3, (rect.bottom+rect.top)*2/3);
                LineTo(hDC,(rect.right+rect.left)/2, (rect.bottom+rect.top)/3);
                DeleteObject(hPen);
                isTria = false;
            }
            else if (isTex)
            {
                SetTextColor(hDC, color[0]);
                DrawText(hDC, "我爱学VC++", -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);
                isTex = false;
            }
    
            EndPaint(hWnd, &PtStr);
    
            return 0;
    
        case WM_DESTROY:
            PostQuitMessage(0);                 //调用 PostQuitMessage 发出 WM_QUIT 消息
            return 0;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam); //默认时采用系统消息默认处理函数
    
        }
    
    }
  • 相关阅读:
    洛谷p1017 进制转换(2000noip提高组)
    Personal Training of RDC
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Eurasia
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Peterhof.
    Asia Hong Kong Regional Contest 2019
    XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Siberia
    XVIII Open Cup named after E.V. Pankratiev. Ukrainian Grand Prix.
    XVIII Open Cup named after E.V. Pankratiev. GP of SPb
    卜题仓库
    2014 ACM-ICPC Vietnam National First Round
  • 原文地址:https://www.cnblogs.com/Vikyanite/p/12654245.html
Copyright © 2011-2022 走看看