Ignore:
Timestamp:
Jul 6, 1999, 10:50:12 AM (26 years ago)
Author:
sandervl
Message:

Edgar Buerkle's codepages changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/pe2lx/menu.cpp

    r97 r275  
    1 /* $Id: menu.cpp,v 1.3 1999-06-10 17:08:54 phaller Exp $ */
     1/* $Id: menu.cpp,v 1.4 1999-07-06 08:50:11 sandervl Exp $ */
    22
    33/*
     
    1414#define INCL_DOSPROCESS          /* DOS Process values       */
    1515#define INCL_DOSMISC             /* DOS Miscellanous values  */
     16#define INCL_DOSNLS
    1617#define INCL_WIN
    1718#include <os2.h>
     
    2728#include "misc.h"
    2829
    29 static int  ProcessSubMenu(PopupMenuItem *popupitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size);
    30 static int  ProcessMenuItem(NormalMenuItem *popupitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size);
     30static int  ProcessSubMenu(PopupMenuItem *popupitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size, int cp);
     31static int  ProcessMenuItem(NormalMenuItem *popupitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size, int cp);
    3132static void menustrcpy(char *dest, char *src);
    3233//******************************************************************************
    3334//******************************************************************************
    34 void ShowMenu(int id, MenuHeader *menu, int size)
     35void ShowMenu(int id, MenuHeader *menu, int size, int cp)
    3536{
    3637  PopupMenuItem  *popupitem = (PopupMenuItem *)((char *)menu + sizeof(MenuHeader));
     
    3940  MTI_OS2 *menuitem;
    4041  int newsize;
     42  ULONG   ulCpSize, ulCP;
    4143
    4244  //First save original win32 resource
     
    4547  os2menu           = (MT_OS2 *)malloc(size*4); //should always be sufficient
    4648  os2menu->len      = sizeof(MT_OS2) - sizeof(MTI_OS2);
    47   os2menu->codepage = 437;
     49  if(cp == 0)
     50    os2menu->codepage         = 437;
     51  else
     52  {
     53    DosQueryCp(sizeof(ulCP), &ulCP, &ulCpSize);
     54    os2menu->codepage = ulCP;
     55  }
    4856  os2menu->reserved = 4;
    4957  os2menu->cMti     = 0;
     
    5361    if(popupitem->fItemFlags & POPUP) {
    5462        cout << "POPUP ";
    55         newsize = ProcessSubMenu(popupitem, os2menu, menuitem, size);
    56     }
    57     else    newsize = ProcessMenuItem(normalitem, os2menu, menuitem, size);
     63        newsize = ProcessSubMenu(popupitem, os2menu, menuitem, size, cp);
     64    }
     65    else    newsize = ProcessMenuItem(normalitem, os2menu, menuitem, size, cp);
    5866
    5967    if(popupitem->fItemFlags & ENDMENU) break;
     
    7078//******************************************************************************
    7179//******************************************************************************
    72 static int ProcessSubMenu(PopupMenuItem *popupitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size)
     80static int ProcessSubMenu(PopupMenuItem *popupitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size, int cp)
    7381{
    7482NormalMenuItem *normalitem;
     
    119127  else {
    120128    len = (UniStrlen(popupitem->szItemText)+1)*2;
    121     cout << UnicodeToAscii(popupitem->szItemText) << endl;
    122     menustrcpy(menuitem->c, UnicodeToAscii(popupitem->szItemText));
     129    cout << UnicodeToAscii(popupitem->szItemText, cp) << endl;
     130    menustrcpy(menuitem->c, UnicodeToAscii(popupitem->szItemText, cp));
    123131  }
    124132  os2menu->len += sizeof(MTI_OS2);
     
    144152        if(normalitem->fItemFlags & POPUP) {
    145153            cout << "POPUP ";
    146             newsize = ProcessSubMenu((PopupMenuItem *)normalitem, submenu, menuitem, size);
     154            newsize = ProcessSubMenu((PopupMenuItem *)normalitem, submenu, menuitem, size, cp);
    147155        }
    148         else    newsize = ProcessMenuItem(normalitem, submenu, menuitem, size);
     156        else    newsize = ProcessMenuItem(normalitem, submenu, menuitem, size, cp);
    149157
    150158                menuitem = (MTI_OS2 *)((int)submenu + submenu->len);
     
    161169//******************************************************************************
    162170//******************************************************************************
    163 static int ProcessMenuItem(NormalMenuItem *normalitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size)
     171static int ProcessMenuItem(NormalMenuItem *normalitem, MT_OS2 *os2menu, MTI_OS2 *menuitem, int size, int cp)
    164172{
    165173WCHAR          *menustring;
     
    226234    }
    227235    else {
    228         cout << UnicodeToAscii(normalitem->szItemText) << endl;
    229         menustrcpy(menuitem->c, UnicodeToAscii(normalitem->szItemText));
     236        cout << UnicodeToAscii(normalitem->szItemText, cp) << endl;
     237        menustrcpy(menuitem->c, UnicodeToAscii(normalitem->szItemText, cp));
    230238    }
    231239  }
Note: See TracChangeset for help on using the changeset viewer.