Changeset 761 for trunk/src/kernel32/cvtmenu.cpp
- Timestamp:
- Aug 31, 1999, 7:15:53 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/cvtmenu.cpp
r581 r761 1 /* $Id: cvtmenu.cpp,v 1. 1 1999-08-19 14:19:14sandervl Exp $ */1 /* $Id: cvtmenu.cpp,v 1.2 1999-08-31 17:15:29 sandervl Exp $ */ 2 2 3 3 /* … … 28 28 29 29 static int ProcessSubMenu(PopupMenuItem *popupitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size, int cp); 30 static int QuerySubMenuSize(PopupMenuItem *popupitem); 30 31 static int ProcessMenuItem(NormalMenuItem *popupitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size, int cp); 32 static int QueryMenuItemSize(NormalMenuItem *normalitem); 31 33 static void menustrcpy(char *dest, char *src); 34 //****************************************************************************** 35 //****************************************************************************** 36 static 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 } 32 59 //****************************************************************************** 33 60 //****************************************************************************** … … 41 68 ULONG ulCpSize, ulCP; 42 69 70 if(size == 0) { 71 size = QueryMenuSize(menu); 72 } 43 73 os2menu = (MT_OS2 *)malloc(size*4); //should always be sufficient 44 74 os2menu->len = sizeof(MT_OS2) - sizeof(MTI_OS2); … … 182 212 //****************************************************************************** 183 213 //****************************************************************************** 214 static 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 //****************************************************************************** 184 245 static int ProcessMenuItem(NormalMenuItem *normalitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size, int cp) 185 246 { … … 267 328 //****************************************************************************** 268 329 //****************************************************************************** 330 static 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 //****************************************************************************** 269 342 static void menustrcpy(char *dest, char *src) 270 343 {
Note:
See TracChangeset
for help on using the changeset viewer.