#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "identifiers.h"
#define CR_FIELD RGB(210, 226, 235)
#define CR_INFIELD RGB(0 , 0 , 0 )
#define CR_OUTFIELD RGB(215, 65 , 75 )
BOOL Init(HWND);
BOOL Gen (HWND);
BOOL Copy(HWND);
BOOL Exit(HWND);
BOOL CALLBACK DlgProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBACK InfoDlgProc(HWND, UINT, WPARAM, LPARAM);
BOOL EnableDlgItem(HWND, DWORD, BOOL);
BOOL SetStatusText(HWND, LPCTSTR);
#include "core.c"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {
return DialogBox(hInstance, MAKEINTRESOURCE(IDD_KEYGEN), NULL, DlgProc);
}
BOOL CALLBACK DlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
static HINSTANCE hInstance;
static HBRUSH hFieldColor;
static HFONT hBoldFont;
HICON hIcon;
LOGFONT BoldFont;
int nFieldId;
#if !AUTO_UPDATE
TCHAR sGen[] = TEXT("Hit Generate, please");
#endif
switch (uMsg) {
case WM_COMMAND:
switch(LOWORD(wParam)) {
case IDC_INFO:
DialogBox(hInstance, MAKEINTRESOURCE(IDD_INFO), hWnd, InfoDlgProc);
break;
case IDC_GEN:
if(Gen(hWnd)) {
#if !AUTO_UPDATE && !MULTI_SERIALS
EnableDlgItem(hWnd, IDC_GEN, FALSE);
#endif
EnableDlgItem(hWnd, IDC_COPY, TRUE);
}
else {
EnableDlgItem(hWnd, IDC_GEN, FALSE);
EnableDlgItem(hWnd, IDC_COPY, FALSE);
}
break;
case IDC_COPY:
if(Copy(hWnd))
EnableDlgItem(hWnd, IDC_COPY, FALSE);
break;
case IDC_EXIT:
SendMessage(hWnd, WM_CLOSE, 0, 0);
break;
default:
if(LOWORD(wParam) >= INFIELD_BEGIN && LOWORD(wParam) <= INFIELD_END && HIWORD(wParam) == EN_UPDATE) {
#if AUTO_UPDATE
if(Gen(hWnd)) {
#if MULTI_SERIALS
EnableDlgItem(hWnd, IDC_GEN, TRUE);
#endif
EnableDlgItem(hWnd, IDC_COPY, TRUE);
}
else {
#if MULTI_SERIALS
EnableDlgItem(hWnd, IDC_GEN, FALSE);
#endif
EnableDlgItem(hWnd, IDC_COPY, FALSE);
}
#else
EnableDlgItem(hWnd, IDC_GEN, TRUE);
EnableDlgItem(hWnd, IDC_COPY, FALSE);
SetStatusText(hWnd, sGen);
#endif
}
else
return FALSE;
}
break;
case WM_INITDIALOG:
hInstance = GetModuleHandle(NULL);
hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_KEYGEN));
SendMessage(hWnd, WM_SETICON, ICON_BIG, (LPARAM) hIcon);
SendMessage(hWnd, WM_SETICON, ICON_SMALL,(LPARAM) hIcon);
hFieldColor = CreateSolidBrush(CR_FIELD);
GetObject((HFONT) SendMessage(hWnd, WM_GETFONT, 0, 0), sizeof(LOGFONT), &BoldFont);
BoldFont.lfWeight = FW_BOLD;
hBoldFont = CreateFontIndirect(&BoldFont);
for(nFieldId = OUTFIELD_BEGIN; nFieldId <= OUTFIELD_END; nFieldId++)
if(GetDlgItem(hWnd, nFieldId) != NULL)
SendDlgItemMessage(hWnd, nFieldId, WM_SETFONT, (WPARAM) hBoldFont, TRUE);
else
break;
for(nFieldId = INFIELD_BEGIN; nFieldId <= INFIELD_END; nFieldId++)
if(GetDlgItem(hWnd, nFieldId) != NULL)
SendDlgItemMessage(hWnd, nFieldId, WM_SETFONT, (WPARAM) hBoldFont, TRUE);
else
break;
#ifdef TARGET_VERSION
SetWindowText(hWnd, TEXT(TARGET " " TARGET_VERSION " " TYPE));
#else
SetWindowText(hWnd, TEXT(TARGET " " TYPE));
#endif
if(!Init(hWnd)) {
SendMessage(hWnd, WM_CLOSE, 0, 0);
break;
}
#if AUTO_UPDATE
#if !MULTI_SERIALS
EnableDlgItem(hWnd, IDC_GEN, FALSE);
#endif
if(!Gen(hWnd)) {
#if MULTISERIALS
EnableDlgItem(hWnd, IDC_GEN, FALSE);
#endif
EnableDlgItem(hWnd, IDC_COPY, FALSE);
}
#else
EnableDlgItem(hWnd, IDC_COPY, FALSE);
SetDlgItemText(hWnd, IDC_STATUS, sGen);
#endif
break;
case WM_CLOSE:
Exit(hWnd);
DeleteObject(hBoldFont);
DeleteObject(hFieldColor);
EndDialog(hWnd, TRUE);
break;
case WM_CTLCOLORSTATIC:
nFieldId = GetDlgCtrlID((HWND) lParam);
if(nFieldId >= OUTFIELD_BEGIN && nFieldId <= OUTFIELD_END) {
SetBkColor((HDC) wParam, CR_FIELD);
SetTextColor((HDC) wParam, CR_OUTFIELD);
return (LRESULT) hFieldColor;
}
else
return FALSE;
case WM_CTLCOLOREDIT:
SetBkColor((HDC) wParam, CR_FIELD);
SetTextColor((HDC) wParam, CR_INFIELD);
return (LRESULT) hFieldColor;
default:
return FALSE;
}
return TRUE;
}
BOOL CALLBACK InfoDlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
switch(uMsg) {
case WM_COMMAND:
switch(LOWORD(wParam)) {
case IDOK:
EndDialog(hWnd, TRUE);
default:
return FALSE;
}
break;
case WM_INITDIALOG:
SetDlgItemText(hWnd, IDC_TITLE, TEXT("HexDecCharEditor 1.02 - Keygen"));
break;
default:
return FALSE;
}
return TRUE;
}
BOOL EnableDlgItem(HWND hWnd, DWORD nDlgItem, BOOL bEnable) {
return EnableWindow(GetDlgItem(hWnd, nDlgItem), bEnable);
}
BOOL SetStatusText(HWND hWnd, LPCTSTR sText) {
return SetDlgItemText(hWnd, IDC_STATUS, sText);
}