博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[游戏模版6] Win32 graph
阅读量:4881 次
发布时间:2019-06-11

本文共 8963 字,大约阅读时间需要 29 分钟。

 

>_<:there in the MyPaint(...) function respectively use Ellipse(...) draw ellipse, use RoundRect(...) draw rectangle whose angle is round, use Pie(...) draw sector also named fan shap, use Chord(...) draw  arch also named bow shaped.

>_<:the same with previous one, there I don't use message and just put the function of MyPaint(...) in the last of InitInstance(...)

1 //{
{NO_DEPENDENCIES}} 2 // Microsoft Visual C++ generated include file. 3 // Used by FE.RC 4 // 5 #define IDR_MAINFRAME 128 6 #define IDD_FE_DIALOG 102 7 #define IDD_ABOUTBOX 103 8 #define IDS_APP_TITLE 103 9 #define IDM_ABOUT 10410 #define IDM_EXIT 10511 #define IDS_HELLO 10612 #define IDI_FE 10713 #define IDI_SMALL 10814 #define IDC_FE 10915 #define IDC_MYICON 216 #define IDC_STATIC -117 // Next default values for new objects18 //19 #ifdef APSTUDIO_INVOKED20 #ifndef APSTUDIO_READONLY_SYMBOLS21 22 #define _APS_NEXT_RESOURCE_VALUE 12923 #define _APS_NEXT_COMMAND_VALUE 3277124 #define _APS_NEXT_CONTROL_VALUE 100025 #define _APS_NEXT_SYMED_VALUE 11026 #endif27 #endif
resourse.h
1 // stdafx.h : include file for standard system include files, 2 //  or project specific include files that are used frequently, but 3 //      are changed infrequently 4 // 5  6 #if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_) 7 #define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_ 8  9 #if _MSC_VER > 100010 #pragma once11 #endif // _MSC_VER > 100012 13 #define WIN32_LEAN_AND_MEAN        // Exclude rarely-used stuff from Windows headers14 15 16 // Windows Header Files:17 #include 
18 19 // C RunTime Header Files20 #include
21 #include
22 #include
23 #include
24 25 // Local Header Files26 27 // TODO: reference additional headers your program requires here28 29 //{
{AFX_INSERT_LOCATION}}30 // Microsoft Visual C++ will insert additional declarations immediately before the previous line.31 32 #endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
StdAfx.h

main.cpp

1 #include "stdafx.h"  2 #include "resourse.h"  3   4 #define MAX_LOADSTRING 100  5   6 // Global Variables:  7 HINSTANCE hInst;                                // current instance  8 TCHAR szTitle[MAX_LOADSTRING];                                // The title bar text  9 TCHAR szWindowClass[MAX_LOADSTRING];                                // The title bar text 10 HPEN hPen; 11 HBRUSH hBru[4]; 12 int sBru[7]={HS_VERTICAL,HS_HORIZONTAL,HS_CROSS,HS_DIAGCROSS,HS_FDIAGONAL,HS_BDIAGONAL}; 13 // Foward declarations of functions included in this code module: 14 ATOM                MyRegisterClass(HINSTANCE hInstance); 15 BOOL                InitInstance(HINSTANCE, int); 16 LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM); 17 LRESULT CALLBACK    About(HWND, UINT, WPARAM, LPARAM); 18 void                MyPaint(HDC hdc); 19 //======================================================================================== 20 int APIENTRY WinMain(HINSTANCE hInstance, 21                      HINSTANCE hPrevInstance, 22                      LPSTR     lpCmdLine, 23                      int       nCmdShow) 24 { 25      // TODO: Place code here. 26     MSG msg; 27  28     MyRegisterClass(hInstance);//调用函数向系统注册窗口类别,输入参数hInstance是目前运行程序的对象代码; 29  30     // 调用InitInstance函数,进行初始化操作; 31     if (!InitInstance (hInstance, nCmdShow)) 32     { 33         return FALSE; 34     } 35  36     // 消息循环(通过消息循环来获取信息, 37     //进行必要的键盘信息转换而后将控制权交给操作系统, 38     //有操作系统决定哪个程序的消息处理函数处理消息 39     while (GetMessage(&msg, NULL, 0, 0)) //获取程序消息 40     { 41             TranslateMessage(&msg);//转换伪码及字符 42             DispatchMessage(&msg);//将控制权交给系统,再有系统决定负责处理消息的程序; 43     } 44  45     return msg.wParam; 46 } 47 //===================================================================================== 48  49  50  51 //============================================================================================= 52 //在建立程序窗口实体之前,必须先定义一个窗口类别,其中包含所要建立窗口的信息, 53 //并向系统注册,这里的MyRegisterClass函数就是进行定义及注册窗口类别的函数。 54 //============================================================================================== 55 ATOM MyRegisterClass(HINSTANCE hInstance) 56 { 57     WNDCLASSEX wcex;            //申请一个窗口类别“WNDCLASSEX”和结构”wcex“ 58                                 //-------------------------------------------------------------- 59                                 //定义vcex结构的各项信息,其中设定信息处理函数(lpfnWndProc) 60                                 //为WNDPROC,类别名称为(lpszClassName)为”fe"; 61                                 //-------------------------------------------------------------- 62     wcex.cbSize = sizeof(WNDCLASSEX); 63  64     wcex.style            = CS_HREDRAW | CS_VREDRAW; 65     wcex.lpfnWndProc    = (WNDPROC)WndProc; 66     wcex.cbClsExtra        = 0; 67     wcex.cbWndExtra        = 0; 68     wcex.hInstance        = hInstance; 69     wcex.hIcon            = NULL; 70     wcex.hCursor        = NULL; 71     wcex.hCursor        = LoadCursor(NULL,IDC_ARROW); 72     wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1); 73     wcex.lpszMenuName    = NULL; 74     wcex.lpszClassName    = "fe"; 75     wcex.hIconSm        = NULL; 76  77     return RegisterClassEx(&wcex);//调用RegisterClassEx函数注册类别,返回一个“ATOM"形态的字符串 78                                   //此字符串即为类别名称”fe"; 79 } 80 //============================================================================================ 81  82  83 //============================================================================================ 84 //按照前面所定义的窗口类别来建立并显示实际的程序窗口 85 //============================================================================================ 86 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) 87 { 88    HWND hWnd; 89    HDC  hdc; 90    int i; 91    hInst = hInstance; // 把instance handle 储存在全局变量中; 92  93    hWnd = CreateWindow("fe","绘图窗口",WS_OVERLAPPEDWINDOW, 94       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); 95                       //----------------------------------------------- 96                       //调用CreateWindow函数来建立一个窗口对象 97                       //第一个参数就是窗口建立依据的类别名称 98                       //----------------------------------------------- 99    if (!hWnd)100    {101       return FALSE;102    }103    //------------------------------------------------104    //设定窗口的位置及窗口的大小,然后绘制显示在设备上105    //-------------------------------------------------106    MoveWindow(hWnd,10,10,600,450,true);//位置及大小107    ShowWindow(hWnd, nCmdShow);//改定窗口显示时的状态108    UpdateWindow(hWnd);//将窗口绘制在显示设备上109 110    hPen=CreatePen(PS_SOLID,3,RGB(0,255,0));111    for(i=0;i<=3;i++)112    {113        hBru[i]=CreateHatchBrush(sBru[i],RGB(234,34,125));114    }115 116    hdc=GetDC(hWnd);117    MyPaint(hdc);118    ReleaseDC(hWnd,hdc);119 120    return TRUE;121 }122 //============================================================================================123 124 125 //============================================================================================126 void MyPaint(HDC hdc)127 {128     SelectObject(hdc,hPen);129 130     SelectObject(hdc,hBru[0]);131     Ellipse(hdc,20,20,270,150);132     TextOut(hdc,120,160,"椭圆形",strlen("椭圆形"));133 134     SelectObject(hdc,hBru[1]);135     RoundRect(hdc,300,20,550,150,30,30);136     TextOut(hdc,400,160,"圆角矩形",strlen("圆角矩形"));137 138     SelectObject(hdc,hBru[2]);139     Pie(hdc,20,210,270,340,50,50,300,300);140     TextOut(hdc,120,350,"扇形",strlen("扇形"));141 142     SelectObject(hdc,hBru[3]);143     Chord(hdc,300,210,550,340,50,50,600,300);144     TextOut(hdc,400,350,"弓形",strlen("弓形"));145 }146 147 148 //============================================================================================149 //在前面定义类别的时候把WndProc定义为消息处理函数(当某些外部消息发生时,会按消息的类型150 //来决定该如何进行处理。此外该函数也是一个回叫函数(CALLBACK)(windows系统函数)每一个151 //程序都会接收信息,选择性接受、处理;152 //============================================================================================153 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)154 {155     PAINTSTRUCT ps;156     HDC hdc;157 158     switch (message)                   //判断消息类型159     {160         case WM_PAINT:                //窗口重绘制161             hdc = BeginPaint(hWnd, &ps);162             EndPaint(hWnd, &ps);163             break;164         case WM_DESTROY:              //处理窗口结束消息165             PostQuitMessage(0);166             break;167         default:168             return DefWindowProc(hWnd, message, wParam, lParam);169    }170    return 0;171 }172 //============================================================================================

 

转载于:https://www.cnblogs.com/zjutlitao/p/3732666.html

你可能感兴趣的文章
ora-12899解决方法
查看>>
(8)关于flexbox的一些想法。
查看>>
一台机子同时启动两个相同版本的tomcat
查看>>
剑指offer——python【第29题】最小的K个数
查看>>
带你入门代理模式/SpringAop的运行机制
查看>>
eclipse对离线python的环境搭建
查看>>
OpenCV imshow无法显示图片
查看>>
js线程&定时器
查看>>
java.lang.IllegalStateException: getOutputStream() has already been cal
查看>>
Ubuntu下搜狗输入法乱码
查看>>
计算机网络●通信协议
查看>>
在EditPlus里配置编译和运行java代码的方法
查看>>
gson所需jar包
查看>>
最干净的pyinstaller打包成exe应用程序方法
查看>>
Python中的数据类型
查看>>
讲给普通人听的分布式数据存储【转载】
查看>>
关于最短路
查看>>
Hbase记录-zookeeper部署
查看>>
Python pexpect出现错误‘module have no attribute "spawn" 解决办法
查看>>
vs2008 C# 怎么调试C++ dll[转]
查看>>