Changeset 761 for trunk/src/kernel32


Ignore:
Timestamp:
Aug 31, 1999, 7:15:53 PM (26 years ago)
Author:
sandervl
Message:

Menu resource changes

Location:
trunk/src/kernel32
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/KERNEL32.DEF

    r752 r761  
    1 ; $Id: KERNEL32.DEF,v 1.33 1999-08-31 14:36:44 sandervl Exp $
     1; $Id: KERNEL32.DEF,v 1.34 1999-08-31 17:15:29 sandervl Exp $
    22
    33;Created by BLAST for IBM's compiler
     
    10141014    __ct__12Win32MenuResFP10Win32ImageUlN22                       @1260
    10151015    __ct__12Win32MenuResFP10Win32ImageUlN22Pc                     @1261
    1016     __ct__12Win32MenuResFPvi                                      @1262
    1017     __ct__12Win32MenuResFUl                                       @1263
     1016    __ct__12Win32MenuResFUl                                       @1262
     1017    __ct__12Win32MenuResFPv                                       @1263
  • trunk/src/kernel32/cvtmenu.cpp

    r581 r761  
    1 /* $Id: cvtmenu.cpp,v 1.1 1999-08-19 14:19:14 sandervl Exp $ */
     1/* $Id: cvtmenu.cpp,v 1.2 1999-08-31 17:15:29 sandervl Exp $ */
    22
    33/*
     
    2828
    2929static int  ProcessSubMenu(PopupMenuItem *popupitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size, int cp);
     30static int  QuerySubMenuSize(PopupMenuItem *popupitem);
    3031static int  ProcessMenuItem(NormalMenuItem *popupitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size, int cp);
     32static int  QueryMenuItemSize(NormalMenuItem *normalitem);
    3133static void menustrcpy(char *dest, char *src);
     34//******************************************************************************
     35//******************************************************************************
     36static int QueryMenuSize(MenuHeader *menu)
     37{
     38  PopupMenuItem  *popupitem = (PopupMenuItem *)((char *)menu + sizeof(MenuHeader));
     39  NormalMenuItem *normalitem = (NormalMenuItem *)((char *)menu + sizeof(MenuHeader));
     40  int size = sizeof(MenuHeader);
     41  int increment;
     42
     43  while(TRUE)
     44  {
     45        if(popupitem->fItemFlags & POPUP) {
     46                increment = QuerySubMenuSize(popupitem);
     47        }
     48        else    increment = QueryMenuItemSize(normalitem);
     49
     50        size += increment;
     51
     52        if(popupitem->fItemFlags & ENDMENU) break;
     53
     54        popupitem  = (PopupMenuItem *)((char *)popupitem + increment);
     55        normalitem = (NormalMenuItem *)((char *)normalitem + increment);
     56  }
     57  return size; 
     58}
    3259//******************************************************************************
    3360//******************************************************************************
     
    4168  ULONG   ulCpSize, ulCP;
    4269
     70  if(size == 0) {
     71        size = QueryMenuSize(menu);
     72  }
    4373  os2menu           = (MT_OS2 *)malloc(size*4); //should always be sufficient
    4474  os2menu->len      = sizeof(MT_OS2) - sizeof(MTI_OS2);
     
    182212//******************************************************************************
    183213//******************************************************************************
     214static int QuerySubMenuSize(PopupMenuItem *popupitem)
     215{
     216 NormalMenuItem *normalitem;
     217 int             len = 0, size, increment;
     218
     219  if(!(popupitem->fItemFlags & MENUBARBREAK)) {
     220        len = (UniStrlen(popupitem->szItemText)+1)*2;
     221  }
     222
     223  size = (sizeof(PopupMenuItem)-2 + len);  /*PLF Sat  97-06-21 22:17:51*/
     224
     225  normalitem = (NormalMenuItem *)((char*)popupitem + sizeof(PopupMenuItem)-2);  /*PLF Sat  97-06-21 23:54:50*/
     226  normalitem = (NormalMenuItem *)((int)normalitem + len);
     227
     228  while(TRUE) {
     229        if(normalitem->fItemFlags & POPUP) {
     230                increment = QuerySubMenuSize((PopupMenuItem *)normalitem);
     231        }
     232        else    increment = QueryMenuItemSize(normalitem);
     233
     234        size += increment;
     235
     236        if(normalitem->fItemFlags & ENDMENU) {
     237                return(size);
     238        }
     239        normalitem = (NormalMenuItem *)((char *)normalitem + increment);
     240  }
     241  return(size);
     242}
     243//******************************************************************************
     244//******************************************************************************
    184245static int ProcessMenuItem(NormalMenuItem *normalitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size, int cp)
    185246{
     
    267328//******************************************************************************
    268329//******************************************************************************
     330static int QueryMenuItemSize(NormalMenuItem *normalitem)
     331{
     332 int    len = 0;
     333
     334  if(!(normalitem->fItemFlags & MENUBARBREAK)) {
     335        len = (UniStrlen(normalitem->szItemText)+1)*2;
     336  }
     337
     338  return(sizeof(NormalMenuItem)-2 + len);
     339}
     340//******************************************************************************
     341//******************************************************************************
    269342static void menustrcpy(char *dest, char *src)
    270343{
  • trunk/src/kernel32/kernel32exp.def

    r752 r761  
    1 ; $Id: kernel32exp.def,v 1.18 1999-08-31 14:36:45 sandervl Exp $
     1; $Id: kernel32exp.def,v 1.19 1999-08-31 17:15:30 sandervl Exp $
    22
    33;Created by BLAST for IBM's compiler
     
    868868    __ct__12Win32MenuResFP10Win32ImageUlN22                       @1260
    869869    __ct__12Win32MenuResFP10Win32ImageUlN22Pc                     @1261
    870     __ct__12Win32MenuResFPvi                                      @1262
    871     __ct__12Win32MenuResFUl                                       @1263
     870    __ct__12Win32MenuResFUl                                       @1262
     871    __ct__12Win32MenuResFPv                                       @1263
  • trunk/src/kernel32/winres.cpp

    r752 r761  
    1 /* $Id: winres.cpp,v 1.13 1999-08-31 14:36:46 sandervl Exp $ */
     1/* $Id: winres.cpp,v 1.14 1999-08-31 17:15:30 sandervl Exp $ */
    22
    33/*
     
    103103  orgos2type = -1;
    104104  OS2ResHandle = 0;
     105  //resources are in Unicode format by default; indirectly created resources
     106  //can also be in ascii format
     107  isUnicode  = TRUE;
    105108}
    106109//******************************************************************************
     
    160163    ressize = 0;
    161164  }
     165  //resources are in Unicode format by default
     166  isUnicode  = TRUE;
    162167}
    163168//******************************************************************************
     
    189194  }
    190195  else  memcpy(winresdata, resdata, size);
     196
     197  //resources are in Unicode format by default
     198  isUnicode  = TRUE;
    191199}
    192200//******************************************************************************
     
    197205
    198206  //returned by DosGetResource, so we don't (and mustn't) free it
    199   if(os2resdata && resType == RSRC_PELOADER)   
     207  if(os2resdata && (resType == RSRC_PELOADER || resType == RSRC_CUSTOMINDIRECT))
    200208        free(os2resdata);
    201209
     
    350358    case NTRT_NEWMENU:
    351359    case NTRT_MENU:
    352         return ConvertMenu((MenuHeader *)win32res, ressize);
     360        return ConvertMenu((MenuHeader *)win32res, ressize, isUnicode);
    353361
    354362    case NTRT_NEWDIALOG:
  • trunk/src/kernel32/winresmenu.cpp

    r752 r761  
    1 /* $Id: winresmenu.cpp,v 1.1 1999-08-31 14:36:46 sandervl Exp $ */
     1/* $Id: winresmenu.cpp,v 1.2 1999-08-31 17:15:30 sandervl Exp $ */
    22
    33/*
     
    4949}
    5050//******************************************************************************
     51//Template always contains Unicode strings
    5152//******************************************************************************
    52 Win32MenuRes::Win32MenuRes(LPVOID menutemplate, BOOL isUnicode)
     53Win32MenuRes::Win32MenuRes(LPVOID menutemplate)
    5354      : Win32Resource()
    5455{
    55   resType      = RSRC_CUSTOMINDIRECT;
     56  resType         = RSRC_CUSTOMINDIRECT;
     57
     58  os2resdata      = ConvertMenu((MenuHeader *)menutemplate, 0);
     59  OS2ResHandle    = 0;
    5660}
    5761//******************************************************************************
     
    5963Win32MenuRes::~Win32MenuRes()
    6064{
    61 
    6265}
    6366//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.