亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.cpp

?? 《游戲編程中的人工智能技術》書中源代碼和可執行文件
?? CPP
字號:
//-----------------------------------------------------------------------
//  
//  Name: GDI_Polygon example project
//  
//  Author: Mat Buckland 2002
//
//  Desc: Code demonstrating the creation and use of Polygons

//------------------------------------------------------------------------

#include <windows.h>
#include <time.h>

#include "defines.h"
#include "utils.h"



//--------------------------------- Globals ------------------------------
//
//------------------------------------------------------------------------

char* g_szApplicationName = "The Groovy GDI - Polygons";
char*	g_szWindowClassName = "MyWindowClass";

//---------------------------- WindowProc ---------------------------------
//	
//	This is the callback function which handles all the windows messages
//-------------------------------------------------------------------------

LRESULT CALLBACK WindowProc (HWND   hwnd,
                             UINT   msg,
                             WPARAM wParam,
                             LPARAM lParam)
{
    //create some pens to use for drawing
    static HPEN BluePen  = CreatePen(PS_SOLID, 1, RGB(0, 0, 255));
    static HPEN OldPen   = NULL;

    //create a solid brush
    static HBRUSH RedBrush = CreateSolidBrush(RGB(255, 0, 0));
    static HBRUSH OldBrush = NULL;
  
    //these hold the dimensions of the client window area
	  static int cxClient, cyClient;

    //this will hold the vertices of the polygons we create
    static POINT verts[NUM_VERTS];

    static int iNumVerts = NUM_VERTS;
    
    switch (msg)
    {
	
		//A WM_CREATE msg is sent when your application window is first
		//created
    case WM_CREATE:
      {
         //to get get the size of the client window first we need  to create
         //a RECT and then ask Windows to fill in our RECT structure with
         //the client window size. Then we assign to cxClient and cyClient 
         //accordingly
			   RECT rect;

			   GetClientRect(hwnd, &rect);

			   cxClient = rect.right;
			   cyClient = rect.bottom;

         //seed random number generator
         srand((unsigned) time(NULL));

         //now lets create some random vertices
         for (int v=0; v<iNumVerts; ++v)
         {
           verts[v].x = RandInt(0, cxClient);
           verts[v].y = RandInt(0, cyClient);
         }

      }

      break;

    case WM_KEYUP:
      {
        switch(wParam)
        {
        case VK_SPACE:
          {
            //create some new points for our polygon
            //now lets create some random vertices
            for (int v=0; v<iNumVerts; ++v)
            {
              verts[v].x = RandInt(0, cxClient);
              verts[v].y = RandInt(0, cyClient);
            }

             //refresh the display so we can see our
              //new polygon
              InvalidateRect(hwnd, NULL, TRUE);
              UpdateWindow(hwnd);
          }
          
          break;

        case VK_ESCAPE:
          {
            PostQuitMessage(0);
          }
          
          break;
        }
      }
    
    case WM_PAINT:
      {
 				 PAINTSTRUCT ps;
          
         BeginPaint (hwnd, &ps);
          
         //first select a pen to draw with and store a copy
         //of the pen we are swapping it with
         OldPen = (HPEN)SelectObject(ps.hdc, BluePen);

         //do the same for our brush
         OldBrush = (HBRUSH)SelectObject(ps.hdc, RedBrush);

         //draw the polygon
         Polygon(ps.hdc, verts, iNumVerts);
         
         //replace the original pen
         SelectObject(ps.hdc, OldPen);
         //and brush
         SelectObject(ps.hdc, OldBrush);
          
         EndPaint (hwnd, &ps);
      }

      break;

    //has the user resized the client area?
		case WM_SIZE:
		  {
        //if so we need to update our variables so that any drawing
        //we do using cxClient and cyClient is scaled accordingly
			  cxClient = LOWORD(lParam);
			  cyClient = HIWORD(lParam);

        //create a new polygon
        for (int v=0; v<iNumVerts; ++v)
        {
           verts[v].x = RandInt(0, cxClient);
           verts[v].y = RandInt(0, cyClient);
        }
      }

      break;
          
		 case WM_DESTROY:
			 {
				 //delete the pens        
         DeleteObject(BluePen);
         DeleteObject(OldPen);

         //and the brushes
         DeleteObject(RedBrush);
         DeleteObject(OldBrush);
         
         // kill the application, this sends a WM_QUIT message  
				 PostQuitMessage (0);
			 }

       break;

     }//end switch

     //this is where all the messages not specifically handled by our 
		 //winproc are sent to be processed
		 return DefWindowProc (hwnd, msg, wParam, lParam);
}

//-------------------------------- WinMain -------------------------------
//
//	The entry point of the windows program
//------------------------------------------------------------------------
int WINAPI WinMain (HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR     szCmdLine, 
                    int       iCmdShow)
{
     //handle to our window
		 HWND						hWnd;
    
		 //our window class structure
		 WNDCLASSEX     winclass;
		 
     // first fill in the window class stucture
	   winclass.cbSize        = sizeof(WNDCLASSEX);
	   winclass.style         = CS_HREDRAW | CS_VREDRAW;
     winclass.lpfnWndProc   = WindowProc;
     winclass.cbClsExtra    = 0;
     winclass.cbWndExtra    = 0;
     winclass.hInstance     = hInstance;
     winclass.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
     winclass.hCursor       = LoadCursor(NULL, IDC_ARROW);
     winclass.hbrBackground = (HBRUSH)GetStockObject (WHITE_BRUSH);
     winclass.lpszMenuName  = NULL;
     winclass.lpszClassName = g_szWindowClassName;
	   winclass.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

		 //register the window class
		if (!RegisterClassEx(&winclass))
		{
			MessageBox(NULL, "Registration Failed!", "Error", 0);

			//exit the application
			return 0;
		}

		 //create the window and assign its ID to hwnd    
     hWnd = CreateWindowEx (NULL,                 // extended style
                            g_szWindowClassName,  // window class name
                            g_szApplicationName,  // window caption
                            WS_OVERLAPPEDWINDOW,  // window style
                            0,                    // initial x position
                            0,                    // initial y position
                            WINDOW_WIDTH,         // initial x size
                            WINDOW_HEIGHT,        // initial y size
                            NULL,                 // parent window handle
                            NULL,                 // window menu handle
                            hInstance,            // program instance handle
                            NULL);                // creation parameters

     //make sure the window creation has gone OK
     if(!hWnd)
     {
       MessageBox(NULL, "CreateWindowEx Failed!", "Error!", 0);
     }
         
     //make the window visible
		 ShowWindow (hWnd, iCmdShow);
     UpdateWindow (hWnd);

     //this will hold any windows messages
		 MSG msg;
     
 		 //entry point of our message handler
		 while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg);
          DispatchMessage (&msg);
     }

     UnregisterClass( g_szWindowClassName, winclass.hInstance );
     return msg.wParam;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91啦中文在线观看| 91麻豆精品91久久久久久清纯| 日韩一区有码在线| 欧美影院精品一区| 日韩欧美中文字幕精品| 欧美大胆一级视频| 中文一区二区在线观看| 中文字幕久久午夜不卡| 香蕉久久一区二区不卡无毒影院 | 日日噜噜夜夜狠狠视频欧美人| 免费观看一级特黄欧美大片| 色成年激情久久综合| 精品免费一区二区三区| 91精品国产综合久久精品app| 欧美自拍丝袜亚洲| 精品对白一区国产伦| 亚洲视频网在线直播| 色婷婷一区二区| 欧美变态凌虐bdsm| 2014亚洲片线观看视频免费| 欧美一区二区日韩一区二区| 日韩欧美www| 欧美午夜片在线观看| 日韩免费视频一区| 亚洲色图清纯唯美| 一卡二卡三卡日韩欧美| 免费久久精品视频| 风间由美一区二区av101| 成人毛片视频在线观看| 国产91精品欧美| 国产性做久久久久久| 色综合久久综合网欧美综合网 | 国产高清不卡一区二区| 狠狠色狠狠色综合系列| 美女看a上一区| 亚洲va韩国va欧美va| 亚洲黄色免费网站| 91在线播放网址| 一区二区视频免费在线观看| 欧美日韩在线直播| 亚洲综合免费观看高清完整版| 国内外精品视频| 国产女主播视频一区二区| 精品亚洲成a人| 久久久精品免费免费| 国产精品久久一卡二卡| 天堂va蜜桃一区二区三区漫画版| 色婷婷综合五月| 麻豆成人综合网| 国产人伦精品一区二区| 91日韩一区二区三区| 亚洲午夜视频在线| 国产三级精品三级| 3751色影院一区二区三区| 国产精品一色哟哟哟| 婷婷六月综合亚洲| 日韩天堂在线观看| 国产精品亚洲成人| 亚洲国产中文字幕在线视频综合| 欧美二区乱c少妇| 色综合久久中文综合久久牛| 国内国产精品久久| 国产在线日韩欧美| 日本在线不卡视频| 轻轻草成人在线| 亚洲第一主播视频| 99久精品国产| 99久久99久久精品免费看蜜桃| 国产做a爰片久久毛片| 久草热8精品视频在线观看| 免费在线成人网| 日韩高清欧美激情| 日韩高清电影一区| 国产麻豆日韩欧美久久| 国产九色sp调教91| va亚洲va日韩不卡在线观看| 成人av网址在线| 欧美日韩www| 26uuuu精品一区二区| 亚洲天天做日日做天天谢日日欢| 国产精品久久久久影院亚瑟 | 97精品超碰一区二区三区| 成人激情小说乱人伦| 欧美影视一区二区三区| 91精品国产综合久久精品性色| 久久日韩粉嫩一区二区三区| 日韩一区日韩二区| 蓝色福利精品导航| 色综合久久久久综合体桃花网| 精品少妇一区二区三区| 亚洲最新视频在线观看| 国产aⅴ精品一区二区三区色成熟| 91美女片黄在线观看91美女| 91精品国产综合久久久久久| 亚洲男同1069视频| 高清不卡在线观看| 国产午夜亚洲精品羞羞网站| 午夜天堂影视香蕉久久| 在线观看91视频| 国产精品美女久久福利网站| 韩国av一区二区三区在线观看| 欧美另类变人与禽xxxxx| 亚洲成av人片一区二区| 欧美图片一区二区三区| 亚洲精品国产精华液| 色哟哟一区二区在线观看| 亚洲久草在线视频| 欧美三级韩国三级日本三斤| 亚洲国产视频在线| 在线播放中文一区| 青青草国产精品97视觉盛宴| 欧美一区二区三区的| 亚洲人成网站精品片在线观看| 5566中文字幕一区二区电影| 国产一区在线视频| 亚洲黄色性网站| 欧美一级在线免费| 国产一区福利在线| 国产精品对白交换视频| 欧美电影一区二区三区| 成人午夜又粗又硬又大| 一区二区成人在线视频| ww亚洲ww在线观看国产| 在线观看日韩国产| 国产精品996| 久久国产人妖系列| 亚洲综合成人网| 久久精品无码一区二区三区| 欧美丝袜自拍制服另类| 国产精品一区二区不卡| 蜜桃av一区二区在线观看| 亚洲va欧美va人人爽| 调教+趴+乳夹+国产+精品| 中文字幕欧美一区| 中文字幕日韩av资源站| 久久久噜噜噜久久人人看| 91精品国产欧美一区二区成人| 在线观看一区二区精品视频| 欧美伊人久久久久久久久影院| 国产成人精品影视| 国产高清不卡二三区| 99久久国产免费看| 欧美精选在线播放| 91在线porny国产在线看| 欧美日韩高清一区二区三区| 欧美性生活久久| 日韩精品影音先锋| 国产亚洲一本大道中文在线| 国产日韩欧美电影| 中文字幕中文乱码欧美一区二区| 亚洲精品水蜜桃| 美女视频免费一区| 成人午夜碰碰视频| 欧美高清视频在线高清观看mv色露露十八 | 亚洲成a人v欧美综合天堂下载 | 欧美日韩国产a| 国产精品欧美久久久久无广告| 亚洲九九爱视频| 成人av在线电影| 91麻豆精品国产| 国产精品久久久久久久蜜臀 | 26uuu精品一区二区| 欧美v日韩v国产v| 亚洲伦理在线免费看| 韩国成人福利片在线播放| 成年人国产精品| 精品国产区一区| 午夜影院久久久| 91女厕偷拍女厕偷拍高清| 中文字幕制服丝袜一区二区三区| 国产一区二区不卡在线| 91.com视频| 亚洲风情在线资源站| 国产精品91xxx| 国产日韩欧美麻豆| 国产精品白丝av| 久久婷婷色综合| 狠狠色丁香婷婷综合| 精品奇米国产一区二区三区| 亚洲国产视频a| 欧美一二三四区在线| 麻豆成人免费电影| 精品国产伦一区二区三区免费| 美女国产一区二区三区| 欧美丰满嫩嫩电影| 国产传媒欧美日韩成人| 亚洲欧美日韩系列| 欧美精品少妇一区二区三区 | 日韩经典一区二区| 欧美人狂配大交3d怪物一区| 丝袜国产日韩另类美女| 精品国产91洋老外米糕| 国产成人综合自拍| 中文字幕日韩欧美一区二区三区| 欧美性大战久久久久久久蜜臀 | ...av二区三区久久精品| 欧美一区午夜视频在线观看| 精品夜夜嗨av一区二区三区| 国产午夜精品一区二区 | 美女网站视频久久|