Files
Hellfire/Uisrc/UI/COPYPROT.CPP
T
Justin Marshall 7806bb8ef8 Added uisrc.
2026-04-27 10:37:37 -07:00

185 lines
4.4 KiB
C++

//****************************************************************************
// CopyProt.cpp
// Diablo UI copy protection dialog
//
// By Frank Pearce
// created 11.18.96
//****************************************************************************
#include "pch.h"
#include "uisnd.h"
//****************************************************************************
//****************************************************************************
static HGLOBAL sghBgRes;
static HGLOBAL sghBtnRes;
static HGLOBAL sghPalRes;
//****************************************************************************
//****************************************************************************
static void CopyProtDestroy(HWND window) {
// free the art resources
if (sghPalRes) {
FreeResource(sghPalRes);
sghPalRes = NULL;
}
if (sghBtnRes) {
FreeResource(sghBtnRes);
sghBtnRes = NULL;
}
if (sghBgRes) {
FreeResource(sghBgRes);
sghBgRes = NULL;
}
}
//****************************************************************************
//****************************************************************************
static BOOL CopyProtInit(HWND window, LPCSTR copyprottext) {
LPBYTE BgBmp;
LPBYTE BtnBmp;
PALETTEENTRY * BgPal;
PALETTEENTRY LoadedPal[PALETTE_REGISTERS];
SIZE BgSize = { 284, 148 };
SIZE BtnSize = { 112, 140 };
int BtnIDs[] = { IDC_OK, IDCANCEL, 0 };
LPCTSTR srpopup = TEXT("ui_art\\srpopup.pcx");
HWND child;
// load the art resources
sghBgRes = LoadResource(
global_hinstance,
FindResource(global_hinstance, TEXT("IDR_POPUPART"), TEXT("ART_FILES"))
);
sghBtnRes = LoadResource(
global_hinstance,
FindResource(global_hinstance, TEXT("IDR_BTNART"), TEXT("ART_FILES"))
);
sghPalRes = LoadResource(
global_hinstance,
FindResource(global_hinstance, TEXT("IDR_ARTPAL"), TEXT("ART_FILES"))
);
// lock the loaded resources
BgBmp = (LPBYTE) LockResource(sghBgRes);
BtnBmp = (LPBYTE) LockResource(sghBtnRes);
BgPal = (PALETTEENTRY *) LockResource(sghPalRes);
// register the images
if (BgBmp) {
SDlgSetBitmap(
window,
NULL,
TEXT(""),
SDLG_STYLE_ANY,
SDLG_USAGE_BACKGROUND,
BgBmp,
NULL,
BgSize.cx,
BgSize.cy
);
}
ShowCursor(TRUE);
UiAltFadeInit(window);
if (BtnBmp)
UiSetButtonBitmaps(window, BtnIDs, BtnBmp, &BtnSize);
// load the palette
if (BgPal) {
memcpy(LoadedPal, BgPal, sizeof(PALETTEENTRY) * PALETTE_REGISTERS);
SDrawUpdatePalette(0, PALETTE_REGISTERS, LoadedPal, TRUE);
}
child = GetDlgItem(window, IDC_OKCANCEL_TEXT);
SetWindowText(child, copyprottext);
return 1;
}
//****************************************************************************
//****************************************************************************
static void CopyProtAbort(HWND window, int retval) {
ShowCursor(FALSE);
SDlgEndDialog(window, retval);
}
//****************************************************************************
//****************************************************************************
static BOOL CALLBACK CopyProtDialogProc (HWND window,
UINT message,
WPARAM wparam,
LPARAM lparam) {
switch (message) {
case WM_DESTROY:
CopyProtDestroy(window);
UiVidFadeOut(DEFAULT_STEPS*2);
break;
case WM_INITDIALOG:
CopyProtInit(window, (LPCSTR)lparam);
return 1;
case WM_COMMAND:
switch (LOWORD(wparam)) {
case IDOK:
switch (GetWindowLong(GetFocus(), GWL_ID)) {
case IDC_OK:
CopyProtAbort(window, IDOK);
break;
default:
CopyProtAbort(window, IDCANCEL);
break;
}
break;
case IDC_OK:
CopyProtAbort(window, IDOK);
break;
case IDCANCEL:
CopyProtAbort(window, IDCANCEL);
break;
}
break;
case WM_SYSKEYUP:
case WM_SYSKEYDOWN:
SendMessage(SDrawGetFrameWindow(), message, wparam, lparam);
break;
}
return SDlgDefDialogProc(window,message,wparam,lparam);
}
//****************************************************************************
//****************************************************************************
BOOL APIENTRY UiCopyProtError(DWORD *result) {
TCHAR copyproterror[128];
DWORD dwResult;
if (! UiIsSpawned())
LoadString(global_hinstance, IDS_COPYPROT_ERR, copyproterror, 127);
else
LoadString(global_hinstance, IDS_SPAWNDATA_ERR, copyproterror, 127);
dwResult = SDlgDialogBoxParam(
global_hinstance,
TEXT("OKCANCEL_DIALOG"),
SDrawGetFrameWindow(),
CopyProtDialogProc,
(LPARAM)copyproterror
);
if (result)
*result = dwResult;
return 1;
}