#include #include #include #include #include #include "hugetest.h" #include "resource.h" #include "macros.h" #ifndef NO_UI_IN_CNFG extern HINSTANCE hInstance; typedef BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM); DlgProc hugeBufferDlgProc; // buffers.cpp DlgProc hugeFogDlgProc; // fog.cpp DlgProc hugeLightDlgProc; // lighting.cpp DlgProc hugeRasterDlgProc; // raster.cpp DlgProc hugeTextureDlgProc; // texture.cpp DlgProc hugeDummyDlgProc; void VerifyEditboxFloat(HWND hDlg, int iControl) { char aBuf[20]; double d; GetDlgItemText(hDlg, iControl, aBuf, sizeof(aBuf)); d = atof(aBuf); sprintf(aBuf,"%g",d); SetDlgItemText(hDlg, iControl, aBuf); } void SetDlgFloatString(HWND hDlg, int iControl, GLfloat f) { char aBuf[20]; sprintf(aBuf,"%g",f); SetDlgItemText(hDlg, iControl, aBuf); } GLfloat GetDlgFloatString(HWND hDlg, int iControl) { char aBuf[20]; GetDlgItemText(hDlg, iControl, aBuf, sizeof(aBuf)); return (GLfloat) atof(aBuf); } void VerifyEditboxHex(HWND hDlg, int iControl) { char aBuf[20]; ushort us; GetDlgItemText(hDlg, iControl, aBuf, sizeof(aBuf)); us = (ushort) strtol(aBuf, NULL, 0); sprintf(aBuf,"0x%04X", us); SetDlgItemText(hDlg, iControl, aBuf); } void SetDlgHexString(HWND hDlg, int iControl, ushort us) { char aBuf[20]; sprintf(aBuf,"0x%04X",us); SetDlgItemText(hDlg, iControl, aBuf); } ushort GetDlgHexString(HWND hDlg, int iControl) { char aBuf[20]; GetDlgItemText(hDlg, iControl, aBuf, sizeof(aBuf)); return (ushort) strtol(aBuf, NULL, 0); } void HugeTest::UI_init() { PROPSHEETPAGE pspage[6]; // Zero out property PAGE data bzero (&pspage, sizeof(pspage)) ; pspage[0].dwSize = sizeof(PROPSHEETPAGE); pspage[0].dwFlags = PSP_USECALLBACK; pspage[0].hInstance = hInstance; pspage[0].pszTemplate = MAKEINTRESOURCE (IDD_BUFFERS); pspage[0].pfnDlgProc = (DLGPROC) hugeBufferDlgProc; pspage[0].lParam = (LPARAM) &bd; pspage[1].dwSize = sizeof(PROPSHEETPAGE); pspage[1].dwFlags = PSP_USECALLBACK; pspage[1].hInstance = hInstance; pspage[1].pszTemplate = MAKEINTRESOURCE (IDD_FOG); pspage[1].pfnDlgProc = (DLGPROC) hugeFogDlgProc; pspage[1].lParam = (LPARAM) &fd; pspage[2].dwSize = sizeof(PROPSHEETPAGE); pspage[2].dwFlags = PSP_USECALLBACK; pspage[2].hInstance = hInstance; pspage[2].pszTemplate = MAKEINTRESOURCE (IDD_LIGHTING); pspage[2].pfnDlgProc = (DLGPROC) hugeLightDlgProc; pspage[2].lParam = (LPARAM) &ld; pspage[3].dwSize = sizeof(PROPSHEETPAGE); pspage[3].dwFlags = PSP_USECALLBACK; pspage[3].hInstance = hInstance; pspage[3].pszTemplate = MAKEINTRESOURCE (IDD_RASTERIZATION); pspage[3].pfnDlgProc = (DLGPROC) hugeRasterDlgProc; pspage[3].lParam = (LPARAM) &rd; pspage[4].dwSize = sizeof(PROPSHEETPAGE); pspage[4].dwFlags = PSP_USECALLBACK; pspage[4].hInstance = hInstance; pspage[4].pszTemplate = MAKEINTRESOURCE (IDD_TEXTURING); pspage[4].pfnDlgProc = (DLGPROC) hugeTextureDlgProc; pspage[4].lParam = (LPARAM) &xd; AddPropertyPages(5, pspage); } BOOL CALLBACK hugeDummyDlgProc(HWND hDlg,UINT msg,WPARAM wParam,LPARAM lParam) { switch (msg) { case WM_INITDIALOG: return TRUE; case WM_COMMAND: { int iControl, iNote; iControl = LOWORD(wParam); iNote = HIWORD(wParam); // notification code for edit boxes switch (iControl) { case P_IDC_POINT1: case P_IDC_POINT2: case P_IDC_POINT3: if (EN_KILLFOCUS == iNote) { PropSheet_Changed(GetParent(hDlg),hDlg); VerifyEditboxFloat(hDlg,iControl); } break; default: PropSheet_Changed(GetParent(hDlg),hDlg); break; } } break; case WM_NOTIFY: { LPNMHDR pnmh = (LPNMHDR) lParam; switch (pnmh->code) { case PSN_APPLY: // user clicked on OK or Apply break; case PSN_RESET: // user clicked on Cancel break; case PSN_HELP: // user clicked help break; } } break; default: return FALSE; } return TRUE; } #else void HugeTest::UI_init() {}; #endif // NO_UI_IN_CNFG