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

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

?? enummetafile.cpp

?? WINDOWS2000開發人員指南源代碼第五章的
?? CPP
字號:
// enummetafile.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "resource.h"

#define MAX_LOADSTRING 100

// Global Variables:
HINSTANCE hInst;                        // current instance
TCHAR szTitle[MAX_LOADSTRING];          // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];    // The title bar text

HENHMETAFILE g_hMetaFile = NULL;

// Foward declarations of functions included in this code module:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
void                ExitInstance();
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

HENHMETAFILE CreateEnhMetaFile(HWND hWnd);
void OnPaint(HWND hWnd);
int CALLBACK PlayMetaFileRecordProc(HDC hDC, HANDLETABLE* phTable,
    const ENHMETARECORD* pRecord, int numObjects, LPARAM lpClientData);


//
// WinMain: Entry point for the application
//
int APIENTRY WinMain
(
    HINSTANCE hInstance
   ,HINSTANCE /*hPrevInstance*/
   ,LPSTR     /*lpCmdLine*/
   ,int       nCmdShow
)
{
    MSG msg;
    HACCEL hAccelTable;

    // Initialize global strings
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_ENUMMETAFILE, szWindowClass, MAX_LOADSTRING);
    MyRegisterClass(hInstance);

    // Perform application initialization:
    if (!InitInstance (hInstance, nCmdShow)) 
    {
        return FALSE;
    }

    hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_ENUMMETAFILE);

    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0)) 
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) 
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

    ExitInstance();

    return msg.wParam;
}

//
// MyRegisterClass: registers the window class
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX); 

    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = (WNDPROC)WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, (LPCTSTR)IDI_ENUMMETAFILE);
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = (LPCSTR)IDC_ENUMMETAFILE;
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);

    return RegisterClassEx(&wcex);
}

//
// InitInstance: creates the window
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
    BOOL bReturn(FALSE);

    // Store instance handle in our global variable
    hInst = hInstance; 

    HWND hWnd = CreateWindow(szWindowClass, szTitle, 
        WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT,
        0, NULL, NULL, hInstance, NULL);
    if (hWnd)
    {
        g_hMetaFile = CreateEnhMetaFile(hWnd);

        ShowWindow(hWnd, nCmdShow);
        UpdateWindow(hWnd);
        bReturn = TRUE;     
    }

    return bReturn;
}

//
// ExitInstance: cleans up the resources created
//
void ExitInstance()
{
    if (g_hMetaFile != NULL)
    {
        DeleteEnhMetaFile(g_hMetaFile);
    }  
}

//
//  WndProc: main window window procedure
//
LRESULT CALLBACK WndProc
(
    HWND hWnd
   ,UINT message
   ,WPARAM wParam
   ,LPARAM lParam
)
{
    int wmId, wmEvent;

    switch (message) 
    {
        case WM_COMMAND:
            wmId    = LOWORD(wParam); 
            wmEvent = HIWORD(wParam); 
            // Parse the menu selections:
            switch (wmId)
            {
                case IDM_ABOUT:
                   DialogBox(hInst, (LPCTSTR)IDD_ABOUTBOX,
                       hWnd, (DLGPROC)About);
                   break;
                case IDM_EXIT:
                   DestroyWindow(hWnd);
                   break;
                default:
                   return DefWindowProc(
                       hWnd, message, wParam, lParam);
            }
        break;

        case WM_PAINT:
            OnPaint(hWnd);
        break;
        
        case WM_DESTROY:
            PostQuitMessage(0);
        break;
        
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
   }
   return 0;
}

//
//  CreateEnhMetaFile: creates a metafile
//
HENHMETAFILE CreateEnhMetaFile(HWND hWnd)
{
    HENHMETAFILE hMetaFile(NULL);

    // get a dc for the window
    HDC hDC = GetDC(hWnd);
   
    // set the mapping mode to himetric since metafiles
    // are created in .01 mm units
    int mapmodeOld = SetMapMode(hDC, MM_HIMETRIC); 

    // get the client rect and convert to logical units
    RECT rectClientDC;
    GetClientRect(hWnd, &rectClientDC); 
    DPtoLP(hDC, (LPPOINT)&rectClientDC, 2);
    
    // normalize rect, the bottom coordinate will be negative
    // in the himetric mapping mode
    rectClientDC.bottom *= -1;

    // restore the mapping mode
    SetMapMode(hDC, mapmodeOld);

    // create the enhanced metafile
    HDC hDCMeta = CreateEnhMetaFile(hDC, NULL, &rectClientDC, NULL);
    if (hDCMeta != NULL)
    {
        // get the metafile client window
        RECT rectClientMeta;
        GetClientRect(hWnd, &rectClientMeta); 
        DPtoLP(hDCMeta, (LPPOINT)&rectClientMeta, 2); 

        // draw a red line around the border
        HPEN hPenRedDot = CreatePen(PS_DOT, 1, RGB(255,0,0));
        HPEN hPenOld = (HPEN)SelectObject(hDCMeta, hPenRedDot);

        InflateRect(&rectClientMeta, -10, -10);
        Rectangle(hDCMeta, rectClientMeta.left, rectClientMeta.top,
            rectClientMeta.right, rectClientMeta.bottom);
    
        // draw an ellipse just inside the border with a dark
        // gray border and filled with a light gray brush
        InflateRect(&rectClientMeta, -10, -10);

        HPEN hPenGrey = CreatePen(PS_SOLID, 3, RGB(128,128,128));
        HBRUSH hBrush = (HBRUSH)GetStockObject(DC_BRUSH);
        SetDCBrushColor(hDCMeta, RGB(172,172,172));
        
        // select objects
        SelectObject(hDCMeta, hPenGrey);
        HBRUSH hBrushOld = (HBRUSH)SelectObject(hDCMeta, hBrush);

        // draw the ellipse
        Ellipse(hDCMeta, rectClientMeta.left, rectClientMeta.top,
            rectClientMeta.right, rectClientMeta.bottom);

        // select original objects
        SelectObject(hDCMeta, hBrushOld);
        SelectObject(hDCMeta, hPenOld);

        // close the metafile
        hMetaFile = CloseEnhMetaFile(hDCMeta);
    }

    ReleaseDC(hWnd, hDC);

    return hMetaFile;
}

//
// OnPaint:  handles the painting for the window
//
void OnPaint(HWND hWnd)
{
    PAINTSTRUCT ps;
    HDC hDC = BeginPaint(hWnd, &ps);
    
    if (g_hMetaFile != NULL)
    {
        RECT rectClient;
        GetClientRect(hWnd, &rectClient);
        EnumEnhMetaFile(hDC, g_hMetaFile,
            &PlayMetaFileRecordProc, NULL, &rectClient);
    }

    EndPaint(hWnd, &ps);
}

//
// PlayMetaFileRecordProc:  play the metafile record
//
int CALLBACK PlayMetaFileRecordProc
(
    HDC hDC
   ,HANDLETABLE* phTable
   ,const ENHMETARECORD* pRecord
   ,int numObjects
   ,LPARAM /*lpClientData*/
)
{
    switch (pRecord->iType)
    {
        case EMR_ELLIPSE:
        case EMR_RECTANGLE:
        case EMR_CREATEPEN:
        case EMR_CREATEBRUSHINDIRECT:
        default:
            PlayEnhMetaFileRecord(
                hDC, phTable, pRecord, numObjects);  
        break;
    }
    
    return 1;
}

//
// Mesage handler for about box.
//
LRESULT CALLBACK About
(
    HWND hDlg
   ,UINT message
   ,WPARAM wParam
   ,LPARAM /*lParam*/
)
{
    switch (message)
    {
        case WM_INITDIALOG:
            return TRUE;

        case WM_COMMAND:
            if (LOWORD(wParam) == IDOK || 
                LOWORD(wParam) == IDCANCEL) 
            {
                EndDialog(hDlg, LOWORD(wParam));
                return TRUE;
            }
        break;
    }

    return FALSE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线日韩一区二区| 国产精品亚洲а∨天堂免在线| 91亚洲精品久久久蜜桃网站| 一区二区中文视频| 91免费在线看| 午夜久久久影院| 日韩欧美一二三| 国产成人午夜精品5599| 国产精品久久看| 欧美日韩视频不卡| 激情深爱一区二区| 日韩理论片在线| 制服视频三区第一页精品| 精品亚洲免费视频| 日韩一区在线免费观看| 欧美日韩色一区| 国产一区二区福利| 亚洲综合免费观看高清完整版在线| 欧美日韩一区二区电影| 久久99精品国产91久久来源| 国产精品网站一区| 欧美精品xxxxbbbb| 国产99久久久精品| 婷婷六月综合网| 久久亚洲一级片| 欧美系列一区二区| 国产很黄免费观看久久| 一区二区三区美女视频| 日韩欧美中文字幕精品| 99国产欧美久久久精品| 免费看精品久久片| 亚洲人精品午夜| 久久香蕉国产线看观看99| 欧美日韩一区高清| 成人黄页在线观看| 久久精品久久精品| 亚洲午夜激情网站| 久久精品人人做人人爽人人| 欧美男生操女生| 99精品视频一区| 国产美女精品一区二区三区| 午夜精品久久久久久久蜜桃app| 天天综合色天天综合| 国产精品女主播av| 日韩欧美国产系列| 欧美精品三级日韩久久| 成人sese在线| 国产精选一区二区三区| 天堂va蜜桃一区二区三区漫画版| 国产精品麻豆99久久久久久| 精品福利一二区| 欧美精品一级二级| 91麻豆免费视频| 成人av电影在线网| 久久99精品久久久久久动态图| 亚洲大片一区二区三区| 成人欧美一区二区三区视频网页| 精品国产第一区二区三区观看体验| 欧美色图免费看| 色综合久久66| 99re热视频精品| av在线不卡观看免费观看| 韩国欧美国产1区| 久久精品99国产精品| 午夜国产精品影院在线观看| 亚洲综合久久av| 一区二区三区中文在线| 亚洲人成人一区二区在线观看 | 久久丁香综合五月国产三级网站| 亚洲精品久久7777| 亚洲欧美日韩国产一区二区三区| 国产精品网站导航| 国产精品不卡在线| 亚洲欧洲另类国产综合| 国产精品视频看| 中文字幕日韩av资源站| 亚洲视频一区二区在线观看| 国产精品毛片a∨一区二区三区| 日本一区二区免费在线 | 国产精品福利在线播放| 欧美激情在线观看视频免费| 亚洲国产高清不卡| 最新成人av在线| 亚洲激情五月婷婷| 亚洲永久免费av| 视频在线在亚洲| 男女性色大片免费观看一区二区| 日韩国产欧美三级| 另类小说欧美激情| 国产suv一区二区三区88区| 成人深夜福利app| 94色蜜桃网一区二区三区| 91一区在线观看| 精品视频一区二区不卡| 欧美成人在线直播| 久久精品亚洲一区二区三区浴池| 国产精品视频观看| 亚洲精品第1页| 日韩高清不卡一区| 国产精品白丝av| 色婷婷av一区二区| 日韩一区二区三区三四区视频在线观看| 日韩三级在线观看| 亚洲国产精品成人综合色在线婷婷| 亚洲欧美一区二区在线观看| 偷偷要91色婷婷| 国产69精品久久久久毛片| 色综合欧美在线视频区| 欧美一区二区三区精品| 国产亚洲婷婷免费| 亚洲一区二区三区在线播放| 麻豆精品视频在线观看| 夜夜揉揉日日人人青青一国产精品 | 国产日韩欧美综合在线| 日韩久久一区二区| 亚洲天堂免费在线观看视频| 国产精品视频一二三区| 午夜成人在线视频| 一区二区三区丝袜| 美美哒免费高清在线观看视频一区二区 | 日韩专区在线视频| 国产在线视频一区二区| 91亚洲国产成人精品一区二三 | 一区二区三区高清| 麻豆精品在线视频| 91福利国产成人精品照片| 久久夜色精品国产噜噜av| 亚洲一区电影777| 国产成人精品一区二| 4438成人网| 亚洲激情自拍偷拍| 国产精品18久久久久久久久久久久 | 激情综合网av| 欧美日韩在线播放一区| 国产精品高清亚洲| 国产成人一级电影| 日韩午夜在线影院| 一级日本不卡的影视| 不卡视频免费播放| 久久久美女毛片| 男人操女人的视频在线观看欧美| 91成人在线精品| 亚洲天堂网中文字| 成人av集中营| 国产欧美日韩亚州综合| 久久99精品久久久久久动态图 | 美女视频网站久久| 欧美日韩视频第一区| 亚洲欧美一区二区三区久本道91| 成人综合婷婷国产精品久久| 欧美精品一区二区三区蜜桃| 免费成人av资源网| 6080yy午夜一二三区久久| 亚洲自拍偷拍综合| 日韩一区二区三区四区| 肉丝袜脚交视频一区二区| 在线视频综合导航| 亚洲女同女同女同女同女同69| 粉嫩13p一区二区三区| 久久久久久久综合日本| 精品一区二区在线看| 欧美成人一级视频| 极品美女销魂一区二区三区| 精品福利视频一区二区三区| 久久99国内精品| 精品精品国产高清a毛片牛牛| 美女视频黄a大片欧美| 日韩欧美激情四射| 九九精品视频在线看| 久久综合网色—综合色88| 狠狠色丁香久久婷婷综合_中| 日韩欧美成人午夜| 国产老女人精品毛片久久| 2024国产精品| www.日韩大片| 伊人夜夜躁av伊人久久| 91久久国产最好的精华液| 一区二区三区在线播| 欧美三级电影在线观看| 日韩成人精品在线| 精品91自产拍在线观看一区| 狠狠色丁香婷综合久久| 中文在线一区二区| 91在线视频在线| 亚洲成av人片观看| 日韩午夜中文字幕| 国产91富婆露脸刺激对白| 国产精品免费视频观看| 日本精品一区二区三区四区的功能| 一区二区三区蜜桃网| 日韩欧美在线影院| 懂色av中文字幕一区二区三区| 国产精品福利一区二区| 欧美怡红院视频| 久久国产三级精品| 一区在线中文字幕| 91精品国产欧美日韩| 成人午夜av影视| 天天综合天天综合色| 中日韩av电影|