Added LoadAndSetImage instruction
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@7078 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
b9c8d57bb2
commit
797e745de5
8 changed files with 76 additions and 29 deletions
|
@ -831,28 +831,17 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
|||
SetWindowLongPtr(GetHwndFromParm(0), GWLP_USERDATA, (LONG_PTR) c);
|
||||
}
|
||||
break;
|
||||
case EW_SETBRANDINGIMAGE:
|
||||
case EW_LOADANDSETIMAGE:
|
||||
{
|
||||
RECT r;
|
||||
HANDLE hImage;
|
||||
HWND hwImage=GetDlgItem(g_hwnd, parm1);
|
||||
GetClientRect(hwImage, &r);
|
||||
hImage=LoadImage(
|
||||
0,
|
||||
GetStringFromParm(0x00),
|
||||
IMAGE_BITMAP,
|
||||
parm2*r.right,
|
||||
parm2*r.bottom,
|
||||
LR_LOADFROMFILE
|
||||
);
|
||||
hImage = (HANDLE)SendMessage(
|
||||
hwImage,
|
||||
STM_SETIMAGE,
|
||||
IMAGE_BITMAP,
|
||||
(LPARAM)hImage
|
||||
);
|
||||
// delete old image
|
||||
if (hImage) DeleteObject(hImage);
|
||||
HWND hCtl=(parm2 & LASIF_HWND) ? GetHwndFromParm(1) : GetDlgItem(g_hwnd, parm1);
|
||||
UINT it=parm2 & LASIM_IMAGE, exeres=parm2 & LASIF_EXERES, fitw=(UINT)parm2 >> LASIS_FITCTLW, fith=(parm2 & LASIF_FITCTLH) != 0;
|
||||
LPCTSTR imgname = (parm2 & LASIF_STRID) ? GetStringFromParm(0x00) : MAKEINTRESOURCE(parm0);
|
||||
GetClientRect(hCtl, &r);
|
||||
hImage=LoadImage(exeres ? g_hInstance : NULL, imgname, it, fitw*r.right, fith*r.bottom, parm2 & LASIM_LR);
|
||||
hImage=(HANDLE)SendMessage(hCtl, STM_SETIMAGE, it, (LPARAM)hImage);
|
||||
if (hImage && IMAGE_BITMAP == it) DeleteObject(hImage); // Delete the old image
|
||||
}
|
||||
break;
|
||||
case EW_CREATEFONT:
|
||||
|
|
|
@ -174,6 +174,8 @@ const TCHAR * NSISCALL loadHeaders(int cl_flags)
|
|||
#ifdef C_ASSERT
|
||||
{C_ASSERT(sizeof(firstheader) == sizeof(int) * 7);}
|
||||
{C_ASSERT(sizeof(struct block_header) == sizeof(UINT_PTR) + sizeof(int));}
|
||||
{C_ASSERT(LASIF_FITCTLW >> LASIS_FITCTLW == 1);}
|
||||
{C_ASSERT(LASIF_LR_LOADFROMFILE == LR_LOADFROMFILE);}
|
||||
#endif
|
||||
|
||||
#ifdef NSIS_CONFIG_CRC_SUPPORT
|
||||
|
|
|
@ -112,7 +112,7 @@ enum
|
|||
#ifdef NSIS_CONFIG_ENHANCEDUI_SUPPORT
|
||||
EW_GETDLGITEM, // GetDlgItem: 3: [outputvar, dialog, item_id]
|
||||
EW_SETCTLCOLORS, // SerCtlColors: 3: [hwnd, pointer to struct colors]
|
||||
EW_SETBRANDINGIMAGE, // SetBrandingImage: 1: [Bitmap file]
|
||||
EW_LOADANDSETIMAGE, // SetBrandingImage/LoadAndSetImage: 3: [imgid ctl flags]
|
||||
EW_CREATEFONT, // CreateFont: 5: [handle output, face name, height, weight, flags]
|
||||
EW_SHOWWINDOW, // ShowWindow: 2: [hwnd, show state]
|
||||
#endif
|
||||
|
@ -467,6 +467,19 @@ typedef struct
|
|||
int parms[5];
|
||||
} page;
|
||||
|
||||
|
||||
// EW_LOADANDSETIMAGE flags, masks and shifts
|
||||
#define LASIS_FITCTLW 31 // Top bit because it MUST shift to a value of 0 or 1
|
||||
#define LASIF_FITCTLW ( (unsigned int)1 << LASIS_FITCTLW )
|
||||
#define LASIF_FITCTLH ( (unsigned int)1 << 30 )
|
||||
#define LASIM_IMAGE 0x00000003 // IMAGE_*
|
||||
#define LASIF_EXERES 0x00000004 // GetModuleHandle(NULL).
|
||||
#define LASIF_HWND 0x00000100 // Don't call GetDlgItem.
|
||||
#define LASIF_STRID 0x00010000
|
||||
#define LASIM_LR ( 0x0000fff0 & ~(LASIM_IMAGE|LASIF_EXERES|LASIF_HWND|LASIF_STRID) )
|
||||
#define LASIF_LR_LOADFROMFILE 0x00000010
|
||||
|
||||
|
||||
// ctlcolors text/bg color flags
|
||||
#define CC_TEXT 1
|
||||
#define CC_TEXT_SYS 2
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue