Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Тихомиров Ю. Программирование трёхмерной графики / Files / PixFrmtCheck / PixForm
.cpp// PixForm.cpp : implementation file
//
#include "stdafx.h"
#include "PixFrmt.h"
#include "PixForm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPixForm dialog
CPixForm::CPixForm(CWnd* pParent /*=NULL*/)
: CDialog(CPixForm::IDD, pParent)
{
//{{AFX_DATA_INIT(CPixForm)
m_bDrwBitmap = FALSE;
m_bDrwWindow = FALSE;
m_bDblBuffer = FALSE;
m_bSuppGDI = FALSE;
m_bSuppOpenGL = FALSE;
m_nTypeRGBA = -1;
m_bStereo = FALSE;
m_nAccumBits = 0;
m_nAlphaBits = 0;
m_nColorBits = 0;
m_nStencilBits = 0;
m_nDepthBits = 0;
m_nLayer = -1;
m_nIndex = 0;
m_bDblBuffDnCr = FALSE;
m_bNeedPal = FALSE;
m_bNeedSysPal = FALSE;
m_bStereoDnCr = FALSE;
m_nAuxBuffer = 0;
//}}AFX_DATA_INIT
}
void CPixForm::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPixForm)
DDX_Check(pDX, IDC_DRWBITMAP, m_bDrwBitmap);
DDX_Check(pDX, IDC_DRWWINDOW, m_bDrwWindow);
DDX_Check(pDX, IDC_DOUBLEBUFFER, m_bDblBuffer);
DDX_Check(pDX, IDC_SUPPORTGDI, m_bSuppGDI);
DDX_Check(pDX, IDC_SUPPORTOPENGL, m_bSuppOpenGL);
DDX_Radio(pDX, IDC_TYPERGBA, m_nTypeRGBA);
DDX_Check(pDX, IDC_STEREO, m_bStereo);
DDX_Text(pDX, IDC_ACCUMBITS, m_nAccumBits);
DDV_MinMaxInt(pDX, m_nAccumBits, 0, 64);
DDX_Text(pDX, IDC_ALPHABITS, m_nAlphaBits);
DDV_MinMaxInt(pDX, m_nAlphaBits, 0, 64);
DDX_Text(pDX, IDC_COLORBITS, m_nColorBits);
DDV_MinMaxInt(pDX, m_nColorBits, 0, 64);
DDX_Text(pDX, IDC_STENCILBITS, m_nStencilBits);
DDV_MinMaxInt(pDX, m_nStencilBits, 0, 64);
DDX_Text(pDX, IDC_DEPTHBITS, m_nDepthBits);
DDV_MinMaxInt(pDX, m_nDepthBits, 0, 64);
DDX_Radio(pDX, IDC_MAINPLANE, m_nLayer);
DDX_Text(pDX, IDC_INDEX, m_nIndex);
DDV_MinMaxInt(pDX, m_nIndex, 1, 24);
DDX_Check(pDX, IDC_DBUFFERDONTCARE, m_bDblBuffDnCr);
DDX_Check(pDX, IDC_NEEDPALETTE, m_bNeedPal);
DDX_Check(pDX, IDC_NEEDSYSTEMPALETTE, m_bNeedSysPal);
DDX_Check(pDX, IDC_STEREODONTCARE, m_bStereoDnCr);
DDX_Text(pDX, IDC_AUXBUFFERS, m_nAuxBuffer);
DDV_MinMaxInt(pDX, m_nAuxBuffer, 0, 64);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPixForm, CDialog)
//{{AFX_MSG_MAP(CPixForm)
ON_BN_CLICKED(IDC_MOREPFD, OnMorePFD)
ON_BN_CLICKED(IDC_FIRST_PFD, OnFirstPFD)
ON_BN_CLICKED(IDC_PREV_PFD, OnPrevPFD)
ON_BN_CLICKED(IDC_NEXT_PFD, OnNextPFD)
ON_BN_CLICKED(IDC_LAST_PFD, OnLastPFD)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPixForm message handlers
BOOL CPixForm::OnInitDialog()
{
PIXELFORMATDESCRIPTOR pfd;
CDialog::OnInitDialog();
CenterWindow();
m_nCurIndex = m_pOGL->m_hrc ?
::GetPixelFormat(m_pOGL->m_pdc->m_hDC) : 1;
if(::DescribePixelFormat(m_pOGL->m_pdc->m_hDC, m_nCurIndex,
sizeof(PIXELFORMATDESCRIPTOR), &pfd))
UpdateDlg(&pfd);
return TRUE;
}
void CPixForm::UpdateDlg(PIXELFORMATDESCRIPTOR *pfd)
{
CheckDlgButton(IDC_DRWWINDOW,
pfd->dwFlags & PFD_DRAW_TO_WINDOW ? 1 : 0) ;
CheckDlgButton(IDC_DRWBITMAP,
pfd->dwFlags & PFD_DRAW_TO_BITMAP ? 1 : 0) ;
CheckDlgButton(IDC_SUPPORTGDI,
pfd->dwFlags & PFD_SUPPORT_GDI ? 1 : 0) ;
CheckDlgButton(IDC_SUPPORTOPENGL,
pfd->dwFlags & PFD_SUPPORT_OPENGL ? 1 : 0) ;
CheckDlgButton(IDC_DOUBLEBUFFER,
pfd->dwFlags & PFD_DOUBLEBUFFER ? 1 : 0) ;
CheckDlgButton(IDC_STEREO,
pfd->dwFlags & PFD_STEREO ? 1 : 0) ;
CheckDlgButton(IDC_DBUFFERDONTCARE,
pfd->dwFlags & PFD_DOUBLEBUFFER_DONTCARE ? 1 : 0) ;
CheckDlgButton(IDC_STEREODONTCARE,
pfd->dwFlags & PFD_STEREO_DONTCARE ? 1 : 0) ;
CheckDlgButton(IDC_NEEDPALETTE,
pfd->dwFlags & PFD_NEED_PALETTE ? 1 : 0) ;
CheckDlgButton(IDC_NEEDSYSTEMPALETTE,
pfd->dwFlags & PFD_NEED_SYSTEM_PALETTE ? 1 : 0) ;
CheckDlgButton(IDC_DBUFFERDONTCARE,
pfd->dwFlags & PFD_DOUBLEBUFFER_DONTCARE ? 1 : 0);
CheckDlgButton(IDC_STEREODONTCARE,
pfd->dwFlags & PFD_STEREO_DONTCARE ? 1 : 0);
SetDlgItemInt(IDC_COLORBITS, pfd->cColorBits, TRUE);
SetDlgItemInt(IDC_ALPHABITS, pfd->cAlphaBits, TRUE);
SetDlgItemInt(IDC_ACCUMBITS, pfd->cAccumBits, TRUE);
SetDlgItemInt(IDC_DEPTHBITS, pfd->cDepthBits, TRUE);
SetDlgItemInt(IDC_STENCILBITS, pfd->cStencilBits, TRUE);
SetDlgItemInt(IDC_AUXBUFFERS, pfd->cAuxBuffers, TRUE);
int type = IDC_MAINPLANE;
switch(pfd->iLayerType){
case PFD_OVERLAY_PLANE : type = IDC_OVERLAYPLANE; break;
case PFD_UNDERLAY_PLANE: type = IDC_UNDERLAYPLANE; break;
}
CheckRadioButton(IDC_MAINPLANE, IDC_UNDERLAYPLANE, type);
type = IDC_TYPERGBA;
if(pfd->iPixelType != PFD_TYPE_RGBA)
type = IDC_TYPECOLORINDEX;
CheckRadioButton(IDC_TYPERGBA, IDC_TYPECOLORINDEX, type);
SetDlgItemInt(IDC_INDEX, m_nCurIndex, TRUE);
}
void CPixForm::OnFirstPFD()
{
PIXELFORMATDESCRIPTOR pfd;
m_nCurIndex = 1;
if(::DescribePixelFormat(m_pOGL->m_pdc->m_hDC, m_nCurIndex,
sizeof(PIXELFORMATDESCRIPTOR), &pfd))
UpdateDlg(&pfd);
}
void CPixForm::OnPrevPFD()
{
PIXELFORMATDESCRIPTOR pfd;
int nCurIndex = (m_nCurIndex > 1) ?
--m_nCurIndex : (m_nCurIndex = 1);
if(::DescribePixelFormat(m_pOGL->m_pdc->m_hDC, nCurIndex,
sizeof(PIXELFORMATDESCRIPTOR), &pfd))
UpdateDlg(&pfd);
}
void CPixForm::OnNextPFD()
{
PIXELFORMATDESCRIPTOR pfd;
int nCurIndex = (m_nCurIndex < 24) ?
++m_nCurIndex : (m_nCurIndex = 24);
if(::DescribePixelFormat(m_pOGL->m_pdc->m_hDC, nCurIndex,
sizeof(PIXELFORMATDESCRIPTOR), &pfd))
UpdateDlg(&pfd);
}
void CPixForm::OnLastPFD()
{
PIXELFORMATDESCRIPTOR pfd;
m_nCurIndex = 24;
if(::DescribePixelFormat(m_pOGL->m_pdc->m_hDC, m_nCurIndex,
sizeof(PIXELFORMATDESCRIPTOR), &pfd))
UpdateDlg(&pfd);
}
void CPixForm::OnMorePFD()
{
CMorePFD MorePFD;
PIXELFORMATDESCRIPTOR pfd;
if(::DescribePixelFormat(m_pOGL->m_pdc->m_hDC, m_nCurIndex,
sizeof(PIXELFORMATDESCRIPTOR), &pfd))
{
MorePFD.m_ppfd = (LPPIXELFORMATDESCRIPTOR)&pfd;
MorePFD.DoModal();
}
}
/////////////////////////////////////////////////////////////////////////////
// CMorePFD dialog
CMorePFD::CMorePFD(CWnd* pParent /*=NULL*/)
: CDialog(CMorePFD::IDD, pParent)
{
//{{AFX_DATA_INIT(CMorePFD)
m_accumalphabits = 0;
m_accumbluebits = 0;
m_accumgreenbits = 0;
m_accumredbits = 0;
m_alphabits = 0;
m_alphashift = 0;
m_bluebits = 0;
m_blueshift = 0;
m_damagemask = 0;
m_greenbits = 0;
m_greenshift = 0;
m_layermask = 0;
m_redbits = 0;
m_redshift = 0;
m_visiblemask = 0;
//}}AFX_DATA_INIT
}
void CMorePFD::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMorePFD)
DDX_Text(pDX, IDC_ACCUMALPHABITS, m_accumalphabits);
DDV_MinMaxInt(pDX, m_accumalphabits, 0, 32);
DDX_Text(pDX, IDC_ACCUMBLUEBITS, m_accumbluebits);
DDV_MinMaxInt(pDX, m_accumbluebits, 0, 32);
DDX_Text(pDX, IDC_ACCUMGREENBITS, m_accumgreenbits);
DDV_MinMaxInt(pDX, m_accumgreenbits, 0, 32);
DDX_Text(pDX, IDC_ACCUMREDBITS, m_accumredbits);
DDX_Text(pDX, IDC_ALPHABITS, m_alphabits);
DDV_MinMaxInt(pDX, m_alphabits, 0, 32);
DDX_Text(pDX, IDC_ALPHASHIFT, m_alphashift);
DDV_MinMaxInt(pDX, m_alphashift, 0, 32);
DDX_Text(pDX, IDC_BLUEBITS, m_bluebits);
DDV_MinMaxInt(pDX, m_bluebits, 0, 32);
DDX_Text(pDX, IDC_BLUESHIFT, m_blueshift);
DDV_MinMaxInt(pDX, m_blueshift, 0, 32);
DDX_Text(pDX, IDC_DAMAGEMASK, m_damagemask);
DDX_Text(pDX, IDC_GREENBITS, m_greenbits);
DDV_MinMaxInt(pDX, m_greenbits, 0, 32);
DDX_Text(pDX, IDC_GREENSHIFT, m_greenshift);
DDV_MinMaxInt(pDX, m_greenshift, 0, 32);
DDX_Text(pDX, IDC_LAYERMASK, m_layermask);
DDX_Text(pDX, IDC_REDBITS, m_redbits);
DDV_MinMaxInt(pDX, m_redbits, 0, 32);
DDX_Text(pDX, IDC_REDSHIFT, m_redshift);
DDV_MinMaxInt(pDX, m_redshift, 0, 32);
DDX_Text(pDX, IDC_VISIBLEMASK, m_visiblemask);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMorePFD, CDialog)
//{{AFX_MSG_MAP(CMorePFD)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMorePFD message handlers
BOOL CMorePFD::OnInitDialog()
{
CDialog::OnInitDialog();
LPPIXELFORMATDESCRIPTOR ppfd = (LPPIXELFORMATDESCRIPTOR)m_ppfd;
CenterWindow(NULL);
SetDlgItemInt(IDC_ACCUMALPHABITS, ppfd->cAccumAlphaBits, TRUE);
SetDlgItemInt(IDC_ACCUMBLUEBITS, ppfd->cAccumBlueBits, TRUE);
SetDlgItemInt(IDC_ACCUMGREENBITS, ppfd->cAccumGreenBits, TRUE);
SetDlgItemInt(IDC_ACCUMREDBITS, ppfd->cAccumRedBits, TRUE);
SetDlgItemInt(IDC_ALPHABITS, ppfd->cAlphaBits, TRUE);
SetDlgItemInt(IDC_ALPHASHIFT, ppfd->cAlphaShift, TRUE);
SetDlgItemInt(IDC_BLUEBITS, ppfd->cBlueBits, TRUE);
SetDlgItemInt(IDC_BLUESHIFT, ppfd->cBlueShift, TRUE);
SetDlgItemInt(IDC_DAMAGEMASK, ppfd->dwDamageMask, TRUE);
SetDlgItemInt(IDC_GREENBITS, ppfd->cGreenBits, TRUE);
SetDlgItemInt(IDC_GREENSHIFT, ppfd->cGreenShift, TRUE);
SetDlgItemInt(IDC_LAYERMASK, ppfd->dwLayerMask, TRUE);
SetDlgItemInt(IDC_REDBITS, ppfd->cRedBits, TRUE);
SetDlgItemInt(IDC_REDSHIFT, ppfd->cRedShift, TRUE);
SetDlgItemInt(IDC_VISIBLEMASK, ppfd->dwVisibleMask, TRUE);
return TRUE;
}
Соседние файлы в папке PixFrmtCheck