⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ddcaps.cpp

📁 DDCAPS For WinCE use under X86
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
//=========================================================================
//
//  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
//  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
//  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
//  PURPOSE.
//
//
//=========================================================================

#ifndef STRICT
#define STRICT
#endif


#include "stdafx.h"
#include <WINDOWS.H>
#include <WINDOWSX.H>
#include <commctrl.h>

#pragma pack(4)

#include "DDCAPS.H"
#include "RESOURCE.H"
#include "DDRAWI.H"
#include "lbprintf.h"

#pragma pack()
//#define UNDER_CE
//
//  Constants
//
#define MAX_MODES   256         // 256 display modes maximum
#define MAX_BOXES   32
#define MAX_DRIVERS 32          // 32 drivers maximum


//
//  Function prototypes
//
LRESULT CALLBACK AboutDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
static void ReadDDrawCaps(void);

//
//  Structures
//
struct _modes
{
    DWORD dwWidth;
    DWORD dwHeight;
    DWORD dwBPP;
    DWORD dwRefreshRate;
} Modes[MAX_MODES];

typedef struct capsDef          // hold caps definitions
{
    TCHAR *szName;
    DWORD dwPos;
}
CAPSDEFSTYPE, *LPCAPSDEFSTYPE;

struct _gcaps
{
    LPDWORD caps;
    LPCAPSDEFSTYPE defs;

} gCaps[10];

struct
{
    TCHAR       szDescription[128];
    TCHAR       szName[128];
    GUID        *pGUID;
    GUID        GUIDcopy;
    HMONITOR    hm;
} Drivers[MAX_DRIVERS];


//
//  Global data
//
int Which = 0;
int ModeCnt = 0;                // keeps track of number of modes

HINSTANCE ghInstance;
TCHAR szClassName[] = TEXT("DdrawCaps");
TCHAR szAppName[]   = TEXT("Direct Draw Caps");

int gDriverCnt = 0;             // keeps track of number of drivers
GUID *gpSelectedDriverGUID;

LPDIRECTDRAW lpDD;              // DirectDraw object

// Map caps bits to readable strings
CAPSDEFSTYPE ddCapsDefs[MAX_BOXES] =
{
    {TEXT("3D"), DDCAPS_3D},
    {TEXT("ALIGNBOUNDARYDEST"), DDCAPS_ALIGNBOUNDARYDEST},
    {TEXT("ALIGNSIZEDEST"), DDCAPS_ALIGNSIZEDEST},
    {TEXT("ALIGNBOUNDARYSRC"), DDCAPS_ALIGNBOUNDARYSRC},
    {TEXT("ALIGNSIZESRC"), DDCAPS_ALIGNSIZESRC},
    {TEXT("ALIGNSTRIDE"), DDCAPS_ALIGNSTRIDE},
    {TEXT("BLT"), DDCAPS_BLT},
    {TEXT("BLTQUEUE"), DDCAPS_BLTQUEUE},
    {TEXT("BLTFOURCC"), DDCAPS_BLTFOURCC},
    {TEXT("BLTSTRETCH"), DDCAPS_BLTSTRETCH},
    {TEXT("GDI"), DDCAPS_GDI},
    {TEXT("OVERLAY"), DDCAPS_OVERLAY},
    {TEXT("OVERLAYCANTCLIP"), DDCAPS_OVERLAYCANTCLIP},
    {TEXT("OVERLAYFOURCC"), DDCAPS_OVERLAYFOURCC},
    {TEXT("OVERLAYSTRETCH"), DDCAPS_OVERLAYSTRETCH},
    {TEXT("PALETTE"), DDCAPS_PALETTE},
    {TEXT("PALETTEVSYNC"), DDCAPS_PALETTEVSYNC},
    {TEXT("READSCANLINE"), DDCAPS_READSCANLINE},
    {TEXT("STEREOVIEW"), DDCAPS_STEREOVIEW},
    {TEXT("VBI"), DDCAPS_VBI},
    {TEXT("ZBLTS"), DDCAPS_ZBLTS},
    {TEXT("ZOVERLAYS"), DDCAPS_ZOVERLAYS},
    {TEXT("COLORKEY"), DDCAPS_COLORKEY},
    {TEXT("ALPHA"), DDCAPS_ALPHA},
    {TEXT("CKEYHWASSIST"), DDCAPS_COLORKEYHWASSIST},
    {TEXT("NOHARDWARE"), DDCAPS_NOHARDWARE},
    {TEXT("BLTCOLORFILL"), DDCAPS_BLTCOLORFILL},
    {TEXT("BANKSWITCHED"), DDCAPS_BANKSWITCHED},
    {TEXT("BLTDEPTHFILL"), DDCAPS_BLTDEPTHFILL},
    {TEXT("CANCLIP"), DDCAPS_CANCLIP},
    {TEXT("CANCLIPSTRETCHED"), DDCAPS_CANCLIPSTRETCHED},
};

CAPSDEFSTYPE CKeyCapsDefs[MAX_BOXES] =
{
    {TEXT("DESTBLT"), DDCKEYCAPS_DESTBLT},
    {TEXT("DESTBLTCLRSPACE"), DDCKEYCAPS_DESTBLTCLRSPACE},
    {TEXT("DESTBLTCLRSPACEYUV"), DDCKEYCAPS_DESTBLTCLRSPACEYUV},
    {TEXT("DESTBLTYUV"), DDCKEYCAPS_DESTBLTYUV},
    {TEXT("DESTOVERLAY"), DDCKEYCAPS_DESTOVERLAY},
    {TEXT("DESTOVERLAYCLRSPACE"), DDCKEYCAPS_DESTOVERLAYCLRSPACE},
    {TEXT("DESTOVERLAYCLRSPACEYUV"), DDCKEYCAPS_DESTOVERLAYCLRSPACEYUV},
    {TEXT("DESTOVERLAYONEACTIVE"), DDCKEYCAPS_DESTOVERLAYONEACTIVE},
    {TEXT("DESTOVERLAYYUV"), DDCKEYCAPS_DESTOVERLAYYUV},
    {TEXT("SRCBLT"), DDCKEYCAPS_SRCBLT},
    {TEXT("SRCBLTCLRSPACE"), DDCKEYCAPS_SRCBLTCLRSPACE},
    {TEXT("SRCBLTCLRSPACEYUV"), DDCKEYCAPS_SRCBLTCLRSPACEYUV},
    {TEXT("SRCBLTYUV"), DDCKEYCAPS_SRCBLTYUV},
    {TEXT("SRCOVERLAY"), DDCKEYCAPS_SRCOVERLAY},
    {TEXT("SRCOVERLAYCLRSPACE"), DDCKEYCAPS_SRCOVERLAYCLRSPACE},
    {TEXT("SRCOVERLAYCLRSPACEYUV"), DDCKEYCAPS_SRCOVERLAYCLRSPACEYUV},
    {TEXT("SRCOVERLAYONEACTIVE"), DDCKEYCAPS_SRCOVERLAYONEACTIVE},
    {TEXT("SRCOVERLAYYUV"), DDCKEYCAPS_SRCOVERLAYYUV}
};

CAPSDEFSTYPE FXCapsDefs[MAX_BOXES] =
{
    { TEXT("BLTARITHSTRETCHY"), DDFXCAPS_BLTARITHSTRETCHY },
    { TEXT("BLTARITHSTRETCHYN"), DDFXCAPS_BLTARITHSTRETCHYN },
    { TEXT("BLTMIRRORLEFTRIGHT"), DDFXCAPS_BLTMIRRORLEFTRIGHT },
    { TEXT("BLTMIRRORUPDOWN"), DDFXCAPS_BLTMIRRORUPDOWN },
    { TEXT("BLTROTATION"), DDFXCAPS_BLTROTATION },
    { TEXT("BLTROTATION90"), DDFXCAPS_BLTROTATION90 },
    { TEXT("BLTSHRINKX"), DDFXCAPS_BLTSHRINKX },
    { TEXT("BLTSHRINKXN"), DDFXCAPS_BLTSHRINKXN },
    { TEXT("BLTSHRINKY"), DDFXCAPS_BLTSHRINKY },
    { TEXT("BLTSHRINKYN"), DDFXCAPS_BLTSHRINKYN },
    { TEXT("BLTSTRETCHX"), DDFXCAPS_BLTSTRETCHX },
    { TEXT("BLTSTRETCHXN"), DDFXCAPS_BLTSTRETCHXN },
    { TEXT("BLTSTRETCHY"), DDFXCAPS_BLTSTRETCHY },
    { TEXT("BLTSTRETCHYN"), DDFXCAPS_BLTSTRETCHYN },
    { TEXT("OVERLAYARITHSTRETCHY"), DDFXCAPS_OVERLAYARITHSTRETCHY },
    { TEXT("OVERLAYARITHSTRETCHYN"), DDFXCAPS_OVERLAYARITHSTRETCHYN },
    { TEXT("OVERLAYSHRINKX"), DDFXCAPS_OVERLAYSHRINKX },
    { TEXT("OVERLAYSHRINKXN"), DDFXCAPS_OVERLAYSHRINKXN },
    { TEXT("OVERLAYSHRINKY"), DDFXCAPS_OVERLAYSHRINKY },
    { TEXT("OVERLAYSHRINKYN"), DDFXCAPS_OVERLAYSHRINKYN },
    { TEXT("OVERLAYSTRETCHX"), DDFXCAPS_OVERLAYSTRETCHX },
    { TEXT("OVERLAYSTRETCHXN"), DDFXCAPS_OVERLAYSTRETCHXN },
    { TEXT("OVERLAYSTRETCHY"), DDFXCAPS_OVERLAYSTRETCHY },
    { TEXT("OVERLAYSTRETCHYN"), DDFXCAPS_OVERLAYSTRETCHYN },
    { TEXT("OVERLAYMIRRORLEFTRIGHT"), DDFXCAPS_OVERLAYMIRRORLEFTRIGHT },
    { TEXT("OVERLAYMIRRORUPDOWN"), DDFXCAPS_OVERLAYMIRRORUPDOWN },
};

CAPSDEFSTYPE PalCapsDefs[MAX_BOXES] =
{
    {TEXT("1BIT"), DDPCAPS_1BIT},
    {TEXT("2BIT"), DDPCAPS_2BIT},
    {TEXT("4BIT"), DDPCAPS_4BIT},
    {TEXT("8BITENTRIES"), DDPCAPS_8BITENTRIES},
    {TEXT("8BIT"), DDPCAPS_8BIT},
    {TEXT("ALLOW256"), DDPCAPS_ALLOW256},
    {TEXT("INITIALIZE"), DDPCAPS_INITIALIZE},
    {TEXT("PRIMARYSURFACE"), DDPCAPS_PRIMARYSURFACE},
    {TEXT("PRIMARYSURFACELEFT"), DDPCAPS_PRIMARYSURFACELEFT},
    {TEXT("VSYNC"), DDPCAPS_VSYNC}
};

CAPSDEFSTYPE SurfCapsDefs[MAX_BOXES] =
{
    {TEXT("3DDEVICE"), DDSCAPS_3DDEVICE},
    {TEXT("ALPHA"), DDSCAPS_ALPHA},
    {TEXT("BACKBUFFER"), DDSCAPS_BACKBUFFER},
    {TEXT("COMPLEX"), DDSCAPS_COMPLEX},
    {TEXT("FLIP"), DDSCAPS_FLIP},
    {TEXT("FRONTBUFFER"), DDSCAPS_FRONTBUFFER},
    {TEXT("MIPMAP"), DDSCAPS_MIPMAP},
    {TEXT("OFFSCREENPLAIN"), DDSCAPS_OFFSCREENPLAIN},
    {TEXT("OVERLAY"), DDSCAPS_OVERLAY},
    {TEXT("PALETTE"), DDSCAPS_PALETTE},
    {TEXT("PRIMARYSURFACE"), DDSCAPS_PRIMARYSURFACE},
    {TEXT("PRIMARYSURFACELEFT"), DDSCAPS_PRIMARYSURFACELEFT},
    {TEXT("SYSTEMMEMORY"), DDSCAPS_SYSTEMMEMORY},
    {TEXT("TEXTURE"), DDSCAPS_TEXTURE},
    {TEXT("VIDEOMEMORY"), DDSCAPS_VIDEOMEMORY},
    {TEXT("VISIBLE"), DDSCAPS_VISIBLE},
    {TEXT("WRITEONLY"), DDSCAPS_WRITEONLY},
    {TEXT("ZBUFFER"), DDSCAPS_ZBUFFER}
};



//*------------------------------------------------------------------------
//| Dlg_OnCommand
//*------------------------------------------------------------------------
BOOL
Dlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch (id)
    {
        case IDCANCEL:
        case IDC_EXIT:
            DestroyWindow(hwnd);
            break;
    }

    return TRUE;
}


//*------------------------------------------------------------------------
//| Dlg_OnInitDialog
//*------------------------------------------------------------------------
BOOL
Dlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    int i;
    TCHAR szTitle[256];
    static TCHAR *rgszCaps[] = {
        TEXT("Direct Draw Caps Bits"),
        TEXT("Direct Draw Color Key Caps Bits"),
        TEXT("Direct Draw FX Caps Bits"),
        TEXT("Direct Draw Palette Caps Bits"),
        TEXT("Direct Draw Surface Caps Bits")};

    wsprintf(szTitle, TEXT("%s (%s)"), rgszCaps[Which%5],
            (Which < 5) ? TEXT("HAL") : TEXT("HEL"));
    SetWindowText(hwnd, szTitle);

    ShowWindow(GetDlgItem(hwnd, IDC_RESTORE), SW_HIDE);
    ShowWindow(GetDlgItem(hwnd, IDC_REFRESH), SW_HIDE);

    for (i = 0; i < MAX_BOXES; i++)
    {
        if (gCaps[Which].defs[i].szName == NULL)
        {
            SetDlgItemText(hwnd, i + IDC_CHECK1, TEXT(""));
            ShowWindow( GetDlgItem(hwnd, i + IDC_CHECK1), SW_HIDE );
        }
        else
        {
            SetDlgItemText(hwnd, i + IDC_CHECK1, gCaps[Which].defs[i].szName);
            ShowWindow( GetDlgItem(hwnd, i + IDC_CHECK1), SW_SHOW );
        }
        CheckDlgButton(hwnd, i + IDC_CHECK1,
                       (gCaps[Which].defs[i].dwPos & *gCaps[Which].caps) != 0);
    }
    return TRUE;
}

//*------------------------------------------------------------------------
//| ddCapsDlg_Proc
//*------------------------------------------------------------------------
BOOL CALLBACK
ddCapsDlg_Proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    BOOL fProcessed = TRUE;

    Which = 0;
    switch (uMsg)
    {
        HANDLE_MSG(hDlg, WM_INITDIALOG, Dlg_OnInitDialog);
        HANDLE_MSG(hDlg, WM_COMMAND, Dlg_OnCommand);

        default:
            fProcessed = FALSE;
            break;
    }
    return (fProcessed);
}

//*------------------------------------------------------------------------
//| CKeyCapsDlg_Proc
//*------------------------------------------------------------------------
BOOL CALLBACK
CKeyCapsDlg_Proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    BOOL fProcessed = TRUE;

    Which = 1;
    switch (uMsg)
    {
        HANDLE_MSG(hDlg, WM_INITDIALOG, Dlg_OnInitDialog);
        HANDLE_MSG(hDlg, WM_COMMAND, Dlg_OnCommand);

        default:
            fProcessed = FALSE;
            break;
    }
    return (fProcessed);
}

//*------------------------------------------------------------------------
//| SurfCapsDlg_Proc
//*------------------------------------------------------------------------
BOOL CALLBACK
SurfCapsDlg_Proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    BOOL fProcessed = TRUE;

    Which = 4;
    switch (uMsg)
    {
        HANDLE_MSG(hDlg, WM_INITDIALOG, Dlg_OnInitDialog);
        HANDLE_MSG(hDlg, WM_COMMAND, Dlg_OnCommand);

        default:
            fProcessed = FALSE;
            break;
    }
    return (fProcessed);
}

//*------------------------------------------------------------------------
//| FXCapsDlg_Proc
//*------------------------------------------------------------------------
BOOL CALLBACK
FXCapsDlg_Proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    BOOL fProcessed = TRUE;

    Which = 2;
    switch (uMsg)
    {
        HANDLE_MSG(hDlg, WM_INITDIALOG, Dlg_OnInitDialog);
        HANDLE_MSG(hDlg, WM_COMMAND, Dlg_OnCommand);

        default:
            fProcessed = FALSE;
            break;
    }
    return (fProcessed);
}


//*------------------------------------------------------------------------
//| PalCapsDlg_Proc
//*------------------------------------------------------------------------
BOOL CALLBACK
PalCapsDlg_Proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    BOOL fProcessed = TRUE;

    Which = 3;
    switch (uMsg)
    {
        HANDLE_MSG(hDlg, WM_INITDIALOG, Dlg_OnInitDialog);
        HANDLE_MSG(hDlg, WM_COMMAND, Dlg_OnCommand);

        default:
            fProcessed = FALSE;
            break;
    }
    return (fProcessed);
}


//*------------------------------------------------------------------------
//| HELddCapsDlg_Proc
//*------------------------------------------------------------------------
BOOL CALLBACK
HELddCapsDlg_Proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    BOOL fProcessed = TRUE;

    Which = 5;
    switch (uMsg)
    {
        HANDLE_MSG(hDlg, WM_INITDIALOG, Dlg_OnInitDialog);
        HANDLE_MSG(hDlg, WM_COMMAND, Dlg_OnCommand);

        default:
            fProcessed = FALSE;
            break;
    }
    return (fProcessed);
}

//*------------------------------------------------------------------------
//| HELCKeyCapsDlg_Proc
//*------------------------------------------------------------------------
BOOL CALLBACK
HELCKeyCapsDlg_Proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    BOOL fProcessed = TRUE;

    Which = 6;
    switch (uMsg)
    {
        HANDLE_MSG(hDlg, WM_INITDIALOG, Dlg_OnInitDialog);
        HANDLE_MSG(hDlg, WM_COMMAND, Dlg_OnCommand);

        default:
            fProcessed = FALSE;
            break;
    }
    return (fProcessed);
}

//*------------------------------------------------------------------------
//| HELSurfCapsDlg_Proc
//*------------------------------------------------------------------------
BOOL CALLBACK
HELSurfCapsDlg_Proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    BOOL fProcessed = TRUE;

    Which = 9;
    switch (uMsg)
    {
        HANDLE_MSG(hDlg, WM_INITDIALOG, Dlg_OnInitDialog);
        HANDLE_MSG(hDlg, WM_COMMAND, Dlg_OnCommand);

        default:
            fProcessed = FALSE;
            break;
    }
    return (fProcessed);
}

//*------------------------------------------------------------------------
//| HELFXCapsDlg_Proc
//*------------------------------------------------------------------------
BOOL CALLBACK
HELFXCapsDlg_Proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -