Structure MENUITEMINFO declared in PB has to be updated, the very last item is lacking (since Windows 2000)
	WINVER = 0x500 = Windows 2000
		WINVER = 0x501 = Windows XP
		WINVER = 0x600 = Windows Vista
		WINVER = 0x601 = Windows 7
		WINVER = 0x602 = Windows 8
		WINVER = 0x603 = Windows Blue
		WINVER = 0xA00 = Windows 10
	
added The lacking item, hbmpItem
C/C++ Structure using Visual Studio Community 2022 Version 17.5.1 (use hfile declarations 10.0.22621.0) 
Declaration MS
winuser.h  line 7866
typedef struct tagMENUITEMINFOW
{
	UINT     cbSize;
	UINT     fMask;
	UINT     fType;         // used if MIIM_TYPE (4.0) or MIIM_FTYPE (>4.0)
	UINT     fState;        // used if MIIM_STATE
	UINT     wID;           // used if MIIM_ID
	HMENU    hSubMenu;      // used if MIIM_SUBMENU
	HBITMAP  hbmpChecked;   // used if MIIM_CHECKMARKS
	HBITMAP  hbmpUnchecked; // used if MIIM_CHECKMARKS
	ULONG_PTR dwItemData;   // used if MIIM_DATA
	LPWSTR   dwTypeData;    // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
	UINT     cch;           // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
#if(WINVER >= 0x0500)
	HBITMAP  hbmpItem;      // used if MIIM_BITMAP
#endif /* WINVER >= 0x0500 
}   MENUITEMINFOW, FAR* LPMENUITEMINFOW;
C/C++ code using Visual Studio 2019 Version 16.7.6 (use declarations 10.0.18362.0) 
Code: Select all
#include <iostream>
#include <windows.h>
#include <commCtrl.h>
#include <winuser.h>
#define PRINTF_SIZEOF(type) printf("  SizeOf( "  #type  " ) = %zu\n", sizeof(type))
#define PRINTF_OffsetOf(type,member) printf("  OffsetOf( "  #member  " ) = %zu\n", offsetof(type,member))
#define PRINTF_Normal(type) printf("  IS_INTRESOURCE( "  #type  " ) = %zu\n", (type))
int main()
{
#ifdef UNICODE
#if defined(_WIN64)
	printf("\n");
	printf("\n");
	printf("  Compilation Window 64 bit - mode unicode\n");
#else
	printf("\n");
	printf("\n");
	printf("  Compilation Window 32 bit - mode unicode\n");
#endif
	/*
#if(WINVER >= 0x0500)
		WINVER = 0x500 = Windows 2000
		WINVER = 0x501 = Windows XP
		WINVER = 0x600 = Windows Vista
		WINVER = 0x601 = Windows 7
		WINVER = 0x602 = Windows 8
		WINVER = 0x603 = Windows Blue
		WINVER = 0xA00 = Windows 10
		winuser.h  line 7866  version  Visual Studio 2022  10.0.22621.0
typedef struct tagMENUITEMINFOW
{
	UINT     cbSize;
	UINT     fMask;
	UINT     fType;         // used if MIIM_TYPE (4.0) or MIIM_FTYPE (>4.0)
	UINT     fState;        // used if MIIM_STATE
	UINT     wID;           // used if MIIM_ID
	HMENU    hSubMenu;      // used if MIIM_SUBMENU
	HBITMAP  hbmpChecked;   // used if MIIM_CHECKMARKS
	HBITMAP  hbmpUnchecked; // used if MIIM_CHECKMARKS
	ULONG_PTR dwItemData;   // used if MIIM_DATA
	LPWSTR   dwTypeData;    // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
	UINT     cch;           // used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
#if(WINVER >= 0x0500)
	HBITMAP  hbmpItem;      // used if MIIM_BITMAP
#endif /* WINVER >= 0x0500 
}   MENUITEMINFOW, FAR* LPMENUITEMINFOW;
*/
	printf("\n");
	printf("  Structure MENUITEMINFO\n");
	printf("  -----------------\n");
	PRINTF_SIZEOF(MENUITEMINFO);
	printf("\n");
	PRINTF_OffsetOf(MENUITEMINFO, cbSize);
	PRINTF_OffsetOf(MENUITEMINFO, fMask);
	PRINTF_OffsetOf(MENUITEMINFO, fType);
	PRINTF_OffsetOf(MENUITEMINFO, fState);
	PRINTF_OffsetOf(MENUITEMINFO, wID);
	PRINTF_OffsetOf(MENUITEMINFO, hSubMenu);
	PRINTF_OffsetOf(MENUITEMINFO, hbmpChecked);
	PRINTF_OffsetOf(MENUITEMINFO, hbmpUnchecked);
	PRINTF_OffsetOf(MENUITEMINFO, dwItemData);
	PRINTF_OffsetOf(MENUITEMINFO, dwTypeData);
	PRINTF_OffsetOf(MENUITEMINFO, cch);
	PRINTF_OffsetOf(MENUITEMINFO, hbmpItem);
#else
	printf("You must compile in unicode mode!\n");
#endif
	return 0;
}
 
PB 6.02 b2  code
Code: Select all
CompilerSelect #PB_Compiler_Processor
      CompilerCase #PB_Processor_x86
            
            Structure My_MENUITEMINFO
                  cbSize.l
                  fMask.l
                  fType.l
                  fState.l
                  wID.l
                  hSubMenu.i
                  hbmpChecked.i
                  hbmpUnchecked.i
                  dwItemData.i
                  *dwTypeData
                  cch.l
                  hbmpItem.i
            EndStructure
            
      CompilerCase #PB_Processor_x64
            
            Structure My_MENUITEMINFO
                  cbSize.l
                  fMask.l
                  fType.l
                  fState.l
                  wID.l
                  PB_Alignment1.b[4]
                  hSubMenu.i
                  hbmpChecked.i
                  hbmpUnchecked.i
                  dwItemData.i
                  *dwTypeData
                  cch.l
                  PB_Alignment2.b[4]
                  hbmpItem.i
            EndStructure
            
CompilerEndSelect
CompilerSelect #PB_Compiler_Processor
      CompilerCase #PB_Processor_x86
            Debug ""
            Debug ""
            Debug "Compilation Window 32 bit - mode Unicode "
            Debug "---------------------------"
            Debug ""
            
            Debug "SizeOf(My_MENUITEMINFO)   = " + Str(SizeOf(My_MENUITEMINFO))
            Debug ""
            
            Debug "OffsetOf( cbSize )        = " + Str(OffsetOf( My_MENUITEMINFO\cbSize ))
            Debug "OffsetOf( fMask )         = " + Str(OffsetOf( My_MENUITEMINFO\fMask ))
            Debug "OffsetOf( fType )         = " + Str(OffsetOf( My_MENUITEMINFO\fType ))
            Debug "OffsetOf( fState )        = " + Str(OffsetOf( My_MENUITEMINFO\fState ))
            Debug "OffsetOf( wID )           = " + Str(OffsetOf( My_MENUITEMINFO\wID ))
            Debug "OffsetOf( hSubMenu )      = " + Str(OffsetOf( My_MENUITEMINFO\hSubMenu ))
            Debug "OffsetOf( hbmpChecked )   = " + Str(OffsetOf( My_MENUITEMINFO\hbmpChecked ))
            Debug "OffsetOf( hbmpUnchecked ) = " + Str(OffsetOf( My_MENUITEMINFO\hbmpUnchecked ))
            Debug "OffsetOf( dwItemData )    = " + Str(OffsetOf( My_MENUITEMINFO\ dwItemData ))
            Debug "OffsetOf( *dwTypeData )   = " + Str(OffsetOf( My_MENUITEMINFO\dwTypeData ))
            Debug "OffsetOf( cch )           = " + Str(OffsetOf( My_MENUITEMINFO\cch ))
            Debug "OffsetOf( hbmpItem )      = " + Str(OffsetOf( My_MENUITEMINFO\hbmpItem ))
            
            
      CompilerCase #PB_Processor_x64
            Debug ""
            Debug ""
            Debug "Compilation Window 64 bit - mode Unicode "
            Debug "---------------------------"
            Debug ""
            
            Debug "SizeOf(My_MENUITEMINFO)   = " + Str(SizeOf(My_MENUITEMINFO))
            Debug ""
            
            Debug "OffsetOf( cbSize )        = " + Str(OffsetOf( My_MENUITEMINFO\cbSize ))
            Debug "OffsetOf( fMask )         = " + Str(OffsetOf( My_MENUITEMINFO\fMask ))
            Debug "OffsetOf( fType )         = " + Str(OffsetOf( My_MENUITEMINFO\fType ))
            Debug "OffsetOf( fState )        = " + Str(OffsetOf( My_MENUITEMINFO\fState ))
            Debug "OffsetOf( wID )           = " + Str(OffsetOf( My_MENUITEMINFO\wID ))
            ;  Debug "OffsetOf( PB_Alignment1 ) = " + Str(OffsetOf( My_MENUITEMINFO\PB_Alignment1 ))
            Debug "OffsetOf( hSubMenu )      = " + Str(OffsetOf( My_MENUITEMINFO\hSubMenu ))
            Debug "OffsetOf( hbmpChecked )   = " + Str(OffsetOf( My_MENUITEMINFO\hbmpChecked ))
            Debug "OffsetOf( hbmpUnchecked ) = " + Str(OffsetOf( My_MENUITEMINFO\hbmpUnchecked ))
            Debug "OffsetOf( dwItemData )    = " + Str(OffsetOf( My_MENUITEMINFO\ dwItemData ))
            Debug "OffsetOf( *dwTypeData )   = " + Str(OffsetOf( My_MENUITEMINFO\dwTypeData ))
            Debug "OffsetOf( cch )           = " + Str(OffsetOf( My_MENUITEMINFO\cch ))
            ;  Debug "OffsetOf( PB_Alignment2 ) = " + Str(OffsetOf( My_MENUITEMINFO\PB_Alignment2 ))
            Debug "OffsetOf( hbmpItem )      = " + Str(OffsetOf( My_MENUITEMINFO\hbmpItem ))
            
CompilerEndSelect
result in x86 mode :
Visual studio result 
 
PB result 
result in x64 mode :
Visual studio result 
 
PB result 
