reactos/dll/cpl/sysdm/licence.c
Thamatip Chitpong 9cc9a26392
[SYSDM] Improve license dialog icon (#4773)
- Use `mimetypes/application-certificate` icon
  from Tango Icon Theme 0.8.90 instead of `IDI_CPLSYSTEM`
- Set large icon correctly
- Add NULL check for DestroyIcon
- Minor code formatting
2022-10-13 17:52:14 +03:00

116 lines
3.3 KiB
C

/*
* PROJECT: ReactOS System Control Panel Applet
* LICENSE: GPL - See COPYING in the top level directory
* FILE: dll/cpl/sysdm/licence.c
* PURPOSE: Licence dialog box message handler
* COPYRIGHT: Copyright 2006 Ged Murphy <gedmurphy@gmail.com>
*
*/
#include "precomp.h"
typedef struct _LIC_CONTEXT
{
HICON hIcon;
HICON hIconSm;
} LIC_CONTEXT, *PLIC_CONTEXT;
static BOOL
OnInitDialog(HWND hDlg, PLIC_CONTEXT pLicInfo)
{
HRSRC hResInfo;
HGLOBAL hResMem;
PCSTR LicenseText;
pLicInfo->hIcon = LoadImage(hApplet,
MAKEINTRESOURCE(IDI_LICENSE),
IMAGE_ICON,
GetSystemMetrics(SM_CXICON),
GetSystemMetrics(SM_CYICON),
LR_DEFAULTCOLOR);
pLicInfo->hIconSm = LoadImage(hApplet,
MAKEINTRESOURCE(IDI_LICENSE),
IMAGE_ICON,
GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON),
LR_DEFAULTCOLOR);
SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)pLicInfo->hIcon);
SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)pLicInfo->hIconSm);
/* Load license from resource */
if (!(hResInfo = FindResource(hApplet,
MAKEINTRESOURCE(RC_LICENSE),
MAKEINTRESOURCE(RTDATA))) ||
!(hResMem = LoadResource(hApplet, hResInfo)) ||
!(LicenseText = LockResource(hResMem)))
{
ShowLastWin32Error(hDlg);
return FALSE;
}
/* Insert the license into the edit control */
SetDlgItemTextA(hDlg,
IDC_LICENCEEDIT,
LicenseText);
PostMessage(GetDlgItem(hDlg, IDC_LICENCEEDIT),
EM_SETSEL,
-1,
0);
PostMessage(GetDlgItem(hDlg, IDC_LICENCEEDIT), WM_VSCROLL, SB_TOP, 0);
return TRUE;
}
INT_PTR CALLBACK
LicenceDlgProc(HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
PLIC_CONTEXT pLicInfo;
UNREFERENCED_PARAMETER(lParam);
pLicInfo = (PLIC_CONTEXT)GetWindowLongPtr(hDlg, DWLP_USER);
switch (uMsg)
{
case WM_INITDIALOG:
pLicInfo = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(LIC_CONTEXT));
if (pLicInfo == NULL)
{
EndDialog(hDlg, 0);
return FALSE;
}
SetWindowLongPtr(hDlg, DWLP_USER, (LONG_PTR)pLicInfo);
return OnInitDialog(hDlg, pLicInfo);
case WM_DESTROY:
if (pLicInfo)
{
if (pLicInfo->hIconSm)
DestroyIcon(pLicInfo->hIconSm);
if (pLicInfo->hIcon)
DestroyIcon(pLicInfo->hIcon);
HeapFree(GetProcessHeap(), 0, pLicInfo);
}
break;
case WM_COMMAND:
if ((LOWORD(wParam) == IDOK) || (LOWORD(wParam) == IDCANCEL))
{
EndDialog(hDlg,
LOWORD(wParam));
return TRUE;
}
break;
}
return FALSE;
}