Ignore:
Timestamp:
Jul 28, 2003, 1:35:32 PM (22 years ago)
Author:
sandervl
Message:

Updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/message.cpp

    r4502 r10185  
    1 /* $Id: message.cpp,v 1.13 2000-10-20 11:46:47 sandervl Exp $ */
     1/* $Id: message.cpp,v 1.14 2003-07-28 11:35:31 sandervl Exp $ */
    22
    33/*
     
    6060        DWORD   offset;
    6161    } *se;
    62     struct      _stringentry {
    63         WORD    len;
    64         WORD    unknown;
    65         CHAR    str[1];
    66     } *stre;
     62    MESSAGE_RESOURCE_ENTRY *stre;
    6763
    6864    /*FIXME: I am not sure about the '1' ... But I've only seen those entries*/
     
    7874    for (i=nrofentries;i--;) {
    7975        if ((id>=se->firstentry) && (id<=se->lastentry)) {
    80             stre = (struct _stringentry*)(p+se->offset);
     76            stre = (PMESSAGE_RESOURCE_ENTRY)(p+se->offset);
    8177            id  -= se->firstentry;
    8278            break;
     
    8783        return 0;
    8884    for (i=id;i--;) {
    89         if (!(slen=stre->len))
     85        if (!(slen=stre->Length))
    9086                return 0;
    91         stre = (struct _stringentry*)(((char*)stre)+slen);
     87        stre = (PMESSAGE_RESOURCE_ENTRY)(((char*)stre)+slen);
    9288    }
    93     slen=stre->len;
     89    slen=stre->Length;
    9490
    9591    i = min(buflen - 1, slen);
     
    9793        return slen; /* different to LoadString */
    9894    if (i>0) {
    99         strncpy(buffer,stre->str,i);
    100         buffer[i]=0;
     95        if (stre->Flags & MESSAGE_RESOURCE_UNICODE)
     96            WideCharToMultiByte( CP_ACP, 0, (LPWSTR)stre->Text, -1, buffer, i, NULL, NULL );
     97        else
     98            lstrcpynA(buffer, (LPSTR)stre->Text, i);
     99        buffer[i]=0;
    101100    } else {
    102101        if (buflen>1) {
     
    166165   if (dwFlags & FORMAT_MESSAGE_FROM_SYSTEM)
    167166   {
    168       from = (char*)HeapAlloc( GetProcessHeap(),0,200 );
    169       sprintf(from,"Systemmessage, messageid = 0x%08lx\n",dwMessageId);
     167      INT bufsize;
     168      HMODULE hmodule;
     169
     170      hmodule = GetModuleHandleA("kernel32");
     171      bufsize=LoadMessageA(hmodule,dwMessageId,dwLanguageId,NULL,100);
     172      if (bufsize)
     173      {
     174        from = (char*)HeapAlloc( GetProcessHeap(), 0, bufsize + 1 );
     175        LoadMessageA(hmodule,dwMessageId,dwLanguageId,from,bufsize+1);
     176      }
    170177   }
    171178
     
    415422   if (dwFlags & FORMAT_MESSAGE_FROM_SYSTEM)
    416423   {
    417       /* gather information from system message tables ... */
    418       from = (char*)HeapAlloc( GetProcessHeap(),0,200 );
    419       sprintf(from,"Systemmessage, messageid = 0x%08lx\n",dwMessageId);
     424      INT bufsize;
     425      HMODULE hmodule;
     426
     427      hmodule = GetModuleHandleA("kernel32");
     428      bufsize=LoadMessageA(hmodule,dwMessageId,dwLanguageId,NULL,100);
     429      if (bufsize)
     430      {
     431        from = (char*)HeapAlloc( GetProcessHeap(), 0, bufsize + 1 );
     432        LoadMessageA(hmodule,dwMessageId,dwLanguageId,from,bufsize+1);
     433      }
    420434   }
    421435
Note: See TracChangeset for help on using the changeset viewer.