Ignore:
Timestamp:
Jul 15, 1999, 10:19:02 AM (26 years ago)
Author:
sandervl
Message:

Unicode & window handle translation bugfixes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/new/windowclass.cpp

    r304 r307  
    1 /* $Id: windowclass.cpp,v 1.2 1999-07-14 21:05:59 cbratschi Exp $ */
     1/* $Id: windowclass.cpp,v 1.3 1999-07-15 08:18:11 sandervl Exp $ */
    22/*
    33 * Win32 Window Class Code for OS/2
     
    1919#include <win32class.h>
    2020#include <win32wnd.h>
     21#include <handlemanager.h>
    2122
    2223//******************************************************************************
     
    6364}
    6465//******************************************************************************
    65 //CB: update to unicode!
    6666//******************************************************************************
    6767WORD WIN32API RegisterClassW(CONST WNDCLASSW *lpwc)
     
    6969 ATOM rc;
    7070 WNDCLASSEXA wclass;
     71 Win32WndClass *winclass;
    7172
    7273    dprintf(("RegisterClassW\n"));
     
    7475    wclass.cbSize = sizeof(wclass);
    7576    memcpy(&wclass.style, lpwc, sizeof(WNDCLASSA));
    76     if(wclass.lpszMenuName && ((ULONG)wclass.lpszMenuName >> 16 != 0)) {
     77    if(wclass.lpszMenuName && (HIWORD(wclass.lpszMenuName) != 0)) {
    7778        wclass.lpszMenuName = UnicodeToAsciiString((LPWSTR)lpwc->lpszMenuName);
    7879    }
    79     if(wclass.lpszClassName && ((ULONG)wclass.lpszClassName >> 16 != 0)) {
     80    if(wclass.lpszClassName && (HIWORD(wclass.lpszClassName) != 0)) {
    8081        wclass.lpszClassName = UnicodeToAsciiString((LPWSTR)lpwc->lpszClassName);
    8182    }
    82     rc = RegisterClassA((CONST WNDCLASSA *)&wclass);
    83 
    84     if(lpwc->lpszMenuName && ((ULONG)lpwc->lpszMenuName >> 16 != 0)) {
     83    winclass = new Win32WndClass((WNDCLASSEXA *)&wclass, TRUE);
     84    if(winclass == NULL) {
     85        dprintf(("RegisterClassW wclass == NULL!"));
     86        return(0);
     87    }
     88    rc = winclass->getAtom();
     89
     90    if(lpwc->lpszMenuName && (HIWORD(lpwc->lpszMenuName) != 0)) {
    8591        FreeAsciiString((char *)wclass.lpszMenuName);
    8692    }
    87     if(lpwc->lpszClassName && ((ULONG)lpwc->lpszClassName >> 16 != 0)) {
     93    if(lpwc->lpszClassName && (HIWORD(lpwc->lpszClassName) !=0)) {
    8894        FreeAsciiString((char *)wclass.lpszClassName);
    8995    }
     
    9197}
    9298//******************************************************************************
    93 //CB: update to unicode!
    9499//******************************************************************************
    95100ATOM WIN32API RegisterClassExW(CONST WNDCLASSEXW *lpwc)
     
    97102 ATOM rc;
    98103 WNDCLASSEXA wclass;
     104 Win32WndClass *winclass;
    99105
    100106    dprintf(("RegisterClassExW\n"));
    101107    memcpy(&wclass, lpwc, sizeof(WNDCLASSEXA));
    102     if(wclass.lpszMenuName && ((ULONG)wclass.lpszMenuName >> 16 != 0)) {
     108    if(wclass.lpszMenuName && (HIWORD(wclass.lpszMenuName) != 0)) {
    103109        wclass.lpszMenuName = UnicodeToAsciiString((LPWSTR)lpwc->lpszMenuName);
    104110    }
    105     if(wclass.lpszClassName && ((ULONG)wclass.lpszClassName >> 16 != 0)) {
     111    if(wclass.lpszClassName && (HIWORD(wclass.lpszClassName) != 0)) {
    106112        wclass.lpszClassName = UnicodeToAsciiString((LPWSTR)lpwc->lpszClassName);
    107113    }
    108     rc = RegisterClassExA((CONST WNDCLASSEXA *)&wclass);
    109 
    110     if(lpwc->lpszMenuName && ((ULONG)lpwc->lpszMenuName >> 16 != 0)) {
     114
     115    winclass = new Win32WndClass((WNDCLASSEXA *)&wclass, TRUE);
     116    if(winclass == NULL) {
     117        dprintf(("RegisterClassExW wclass == NULL!"));
     118        return(0);
     119    }
     120    rc = winclass->getAtom();
     121
     122    if(lpwc->lpszMenuName && (HIWORD(lpwc->lpszMenuName) != 0)) {
    111123        FreeAsciiString((char *)wclass.lpszMenuName);
    112124    }
    113     if(lpwc->lpszClassName && ((ULONG)lpwc->lpszClassName >> 16 != 0)) {
     125    if(lpwc->lpszClassName && (HIWORD(lpwc->lpszClassName) != 0)) {
    114126        FreeAsciiString((char *)wclass.lpszClassName);
    115127    }
     
    127139}
    128140//******************************************************************************
    129 //CB:update to unicode!
    130141//******************************************************************************
    131142BOOL WIN32API UnregisterClassW(LPCWSTR lpszClassName, HINSTANCE hinst)
     
    134145
    135146  dprintf(("USER32:  UnregisterClassW\n"));
    136   if((ULONG)lpszClassName >> 16 != 0) {
     147  if(HIWORD(lpszClassName) != 0) {
    137148        astring = UnicodeToAsciiString((LPWSTR)lpszClassName);
    138149  }
     
    140151
    141152  Win32WndClass::UnregisterClassA(hinst, (LPSTR)astring);
    142   if((ULONG)astring >> 16 != 0)
     153  if(HIWORD(astring) != 0)
    143154        FreeAsciiString((char *)astring);
     155
    144156  //Spintest returns FALSE in dll termination, so pretend it succeeded
    145157  return(TRUE);
     
    164176}
    165177//******************************************************************************
    166 //CB: update to unicode!
    167178//******************************************************************************
    168179BOOL WIN32API GetClassInfoW(HINSTANCE  hinst, LPCWSTR lpszClass, WNDCLASSW *lpwc)
     
    175186  dprintf(("USER32:  GetClassInfoW\n"));
    176187
    177   if((ULONG)lpszClass >> 16 != 0) {
     188  if(HIWORD(lpszClass) != 0) {
    178189        astring = UnicodeToAsciiString((LPWSTR)lpszClass);
    179190  }
     
    181192
    182193  wndclass = Win32WndClass::FindClass(hinst, astring);
    183   if((ULONG)astring >> 16 != 0)
     194  if(HIWORD(astring) != 0)
    184195        FreeAsciiString((char *)astring);
     196
    185197  if(wndclass) {
    186198        wndclass->getClassInfo(&wc);
    187         memcpy(lpwc, &wc, sizeof(WNDCLASSW));
     199        memcpy(lpwc, &wc.style, sizeof(WNDCLASSW));
    188200        return(TRUE);
    189201  }
     
    250262  dprintf(("USER32: GetClassInfoExW\n"));
    251263
    252   if((ULONG)lpszClass >> 16 != 0) {
     264  if(HIWORD(lpszClass) != 0) {
    253265        astring = UnicodeToAsciiString((LPWSTR)lpszClass);
    254266  }
     
    256268
    257269  wndclass = Win32WndClass::FindClass(hInstance, astring);
    258   if((ULONG)astring >> 16 != 0)
     270  if(HIWORD(astring) != 0)
    259271        FreeAsciiString((char *)astring);
     272
    260273  if(wndclass) {
    261274        wndclass->getClassInfo(lpwcx);
     
    271284
    272285    dprintf(("USER32: GetClassNameA\n"));
    273     wnd = WIN2OS2HWND(hwnd);
    274     if(wnd == NULL) {
     286    if(HMHandleTranslateToOS2(hwnd, (PULONG)&wnd) != NO_ERROR) {
    275287        dprintf(("GetClassNameA wnd == NULL"));
    276288        return(0);
     
    285297
    286298    dprintf(("USER32: GetClassNameW\n"));
    287     wnd = WIN2OS2HWND(hwnd);
    288     if(wnd == NULL) {
     299    if(HMHandleTranslateToOS2(hwnd, (PULONG)&wnd) != NO_ERROR) {
    289300        dprintf(("GetClassNameA wnd == NULL"));
    290301        return(0);
     
    299310
    300311    dprintf(("USER32: SetClassLongA\n"));
    301     wnd = WIN2OS2HWND(hwnd);
    302     if(wnd == NULL) {
     312    if(HMHandleTranslateToOS2(hwnd, (PULONG)&wnd) != NO_ERROR) {
    303313        dprintf(("SetClassLongA wnd == NULL"));
    304314        return(0);
     
    313323
    314324    dprintf(("USER32: SetClassLongW\n"));
    315     wnd = WIN2OS2HWND(hwnd);
    316     if(wnd == NULL) {
     325    if(HMHandleTranslateToOS2(hwnd, (PULONG)&wnd) != NO_ERROR) {
    317326        dprintf(("SetClassLongW wnd == NULL"));
    318327        return(0);
     
    327336
    328337    dprintf(("USER32: SetClassWordA\n"));
    329     wnd = WIN2OS2HWND(hwnd);
    330     if(wnd == NULL) {
     338    if(HMHandleTranslateToOS2(hwnd, (PULONG)&wnd) != NO_ERROR) {
    331339        dprintf(("SetClassWordA wnd == NULL"));
    332340        return(0);
     
    341349
    342350    dprintf(("USER32: GetClassWordA\n"));
    343     wnd = WIN2OS2HWND(hwnd);
    344     if(wnd == NULL) {
     351    if(HMHandleTranslateToOS2(hwnd, (PULONG)&wnd) != NO_ERROR) {
    345352        dprintf(("GetClassWordA wnd == NULL"));
    346353        return(0);
     
    355362
    356363    dprintf(("USER32: GetClassLongA\n"));
    357     wnd = WIN2OS2HWND(hwnd);
    358     if(wnd == NULL) {
     364    if(HMHandleTranslateToOS2(hwnd, (PULONG)&wnd) != NO_ERROR) {
    359365        dprintf(("GetClassLongA wnd == NULL"));
    360366        return(0);
     
    369375
    370376    dprintf(("USER32: GetClassLongW\n"));
    371     wnd = WIN2OS2HWND(hwnd);
    372     if(wnd == NULL) {
     377    if(HMHandleTranslateToOS2(hwnd, (PULONG)&wnd) != NO_ERROR) {
    373378        dprintf(("GetClassLongW wnd == NULL"));
    374379        return(0);
Note: See TracChangeset for help on using the changeset viewer.