Ignore:
Timestamp:
Jul 14, 1999, 11:05:59 PM (26 years ago)
Author:
cbratschi
Message:

several bugs fixed, RegisterClass works, CreateWindow on the way

File:
1 edited

Legend:

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

    r300 r304  
    1 /* $Id: windowclass.cpp,v 1.1 1999-07-14 08:35:37 sandervl Exp $ */
     1/* $Id: windowclass.cpp,v 1.2 1999-07-14 21:05:59 cbratschi Exp $ */
    22/*
    33 * Win32 Window Class Code for OS/2
     
    3737 Win32WndClass *wclass;
    3838
    39    memcpy(&wc, lpWndClass, sizeof(WNDCLASSA));
     39   //CB: size new in ex structure
     40   wc.cbSize = sizeof(wc);
     41   memcpy(&wc.style, lpWndClass, sizeof(WNDCLASSA));
    4042   wc.hIconSm = 0;
    41    
    42    wclass = new Win32WndClass(&wc);
     43
     44   wclass = new Win32WndClass(&wc,FALSE);
    4345   if(wclass == NULL) {
    44         dprintf(("RegisterClassA wclass == NULL!"));
    45         return(0);
     46        dprintf(("RegisterClassA wclass == NULL!"));
     47        return(0);
    4648   }
    4749   return(wclass->getAtom());
     
    5355 Win32WndClass *wclass;
    5456
    55    wclass = new Win32WndClass((WNDCLASSEXA *)lpWndClass);
     57   wclass = new Win32WndClass((WNDCLASSEXA *)lpWndClass,FALSE);
    5658   if(wclass == NULL) {
    57         dprintf(("RegisterClassExA wclass == NULL!"));
    58         return(0);
     59        dprintf(("RegisterClassExA wclass == NULL!"));
     60        return(0);
    5961   }
    6062   return(wclass->getAtom());
    6163}
    6264//******************************************************************************
     65//CB: update to unicode!
    6366//******************************************************************************
    6467WORD WIN32API RegisterClassW(CONST WNDCLASSW *lpwc)
     
    6871
    6972    dprintf(("RegisterClassW\n"));
    70     memcpy(&wclass, lpwc, sizeof(WNDCLASSA));
     73    //CB: size new in ex structure
     74    wclass.cbSize = sizeof(wclass);
     75    memcpy(&wclass.style, lpwc, sizeof(WNDCLASSA));
    7176    if(wclass.lpszMenuName && ((ULONG)wclass.lpszMenuName >> 16 != 0)) {
    72         wclass.lpszMenuName = UnicodeToAsciiString((LPWSTR)lpwc->lpszMenuName);
     77        wclass.lpszMenuName = UnicodeToAsciiString((LPWSTR)lpwc->lpszMenuName);
    7378    }
    7479    if(wclass.lpszClassName && ((ULONG)wclass.lpszClassName >> 16 != 0)) {
    75         wclass.lpszClassName = UnicodeToAsciiString((LPWSTR)lpwc->lpszClassName);
     80        wclass.lpszClassName = UnicodeToAsciiString((LPWSTR)lpwc->lpszClassName);
    7681    }
    7782    rc = RegisterClassA((CONST WNDCLASSA *)&wclass);
    7883
    7984    if(lpwc->lpszMenuName && ((ULONG)lpwc->lpszMenuName >> 16 != 0)) {
    80         FreeAsciiString((char *)wclass.lpszMenuName);
     85        FreeAsciiString((char *)wclass.lpszMenuName);
    8186    }
    8287    if(lpwc->lpszClassName && ((ULONG)lpwc->lpszClassName >> 16 != 0)) {
    83         FreeAsciiString((char *)wclass.lpszClassName);
     88        FreeAsciiString((char *)wclass.lpszClassName);
    8489    }
    8590    return(rc);
    8691}
    8792//******************************************************************************
     93//CB: update to unicode!
    8894//******************************************************************************
    8995ATOM WIN32API RegisterClassExW(CONST WNDCLASSEXW *lpwc)
     
    95101    memcpy(&wclass, lpwc, sizeof(WNDCLASSEXA));
    96102    if(wclass.lpszMenuName && ((ULONG)wclass.lpszMenuName >> 16 != 0)) {
    97         wclass.lpszMenuName = UnicodeToAsciiString((LPWSTR)lpwc->lpszMenuName);
     103        wclass.lpszMenuName = UnicodeToAsciiString((LPWSTR)lpwc->lpszMenuName);
    98104    }
    99105    if(wclass.lpszClassName && ((ULONG)wclass.lpszClassName >> 16 != 0)) {
    100         wclass.lpszClassName = UnicodeToAsciiString((LPWSTR)lpwc->lpszClassName);
     106        wclass.lpszClassName = UnicodeToAsciiString((LPWSTR)lpwc->lpszClassName);
    101107    }
    102108    rc = RegisterClassExA((CONST WNDCLASSEXA *)&wclass);
    103109
    104110    if(lpwc->lpszMenuName && ((ULONG)lpwc->lpszMenuName >> 16 != 0)) {
    105         FreeAsciiString((char *)wclass.lpszMenuName);
     111        FreeAsciiString((char *)wclass.lpszMenuName);
    106112    }
    107113    if(lpwc->lpszClassName && ((ULONG)lpwc->lpszClassName >> 16 != 0)) {
    108         FreeAsciiString((char *)wclass.lpszClassName);
     114        FreeAsciiString((char *)wclass.lpszClassName);
    109115    }
    110116    return(rc);
     
    121127}
    122128//******************************************************************************
     129//CB:update to unicode!
    123130//******************************************************************************
    124131BOOL WIN32API UnregisterClassW(LPCWSTR lpszClassName, HINSTANCE hinst)
     
    128135  dprintf(("USER32:  UnregisterClassW\n"));
    129136  if((ULONG)lpszClassName >> 16 != 0) {
    130         astring = UnicodeToAsciiString((LPWSTR)lpszClassName);
    131   }
    132   else  astring = (char *)lpszClassName;
     137        astring = UnicodeToAsciiString((LPWSTR)lpszClassName);
     138  }
     139  else  astring = (char *)lpszClassName;
    133140
    134141  Win32WndClass::UnregisterClassA(hinst, (LPSTR)astring);
    135   if((ULONG)astring >> 16 != 0) 
    136         FreeAsciiString((char *)astring);
     142  if((ULONG)astring >> 16 != 0)
     143        FreeAsciiString((char *)astring);
    137144  //Spintest returns FALSE in dll termination, so pretend it succeeded
    138145  return(TRUE);
     
    150157  wndclass = Win32WndClass::FindClass(hInstance, (LPSTR)lpszClass);
    151158  if(wndclass) {
    152         wndclass->getClassInfo(&wc);
    153         memcpy(lpwc, &wc, sizeof(WNDCLASSA));
    154         return(TRUE);
    155   }
    156   return(FALSE); 
    157 }
    158 //******************************************************************************
     159        wndclass->getClassInfo(&wc);
     160        memcpy(lpwc, &wc, sizeof(WNDCLASSA));
     161        return(TRUE);
     162  }
     163  return(FALSE);
     164}
     165//******************************************************************************
     166//CB: update to unicode!
    159167//******************************************************************************
    160168BOOL WIN32API GetClassInfoW(HINSTANCE  hinst, LPCWSTR lpszClass, WNDCLASSW *lpwc)
     
    168176
    169177  if((ULONG)lpszClass >> 16 != 0) {
    170         astring = UnicodeToAsciiString((LPWSTR)lpszClass);
     178        astring = UnicodeToAsciiString((LPWSTR)lpszClass);
    171179  }
    172180  else  astring = (char *)lpszClass;
    173181
    174182  wndclass = Win32WndClass::FindClass(hinst, astring);
    175   if((ULONG)astring >> 16 != 0) 
    176         FreeAsciiString((char *)astring);
     183  if((ULONG)astring >> 16 != 0)
     184        FreeAsciiString((char *)astring);
    177185  if(wndclass) {
    178         wndclass->getClassInfo(&wc);
    179         memcpy(lpwc, &wc, sizeof(WNDCLASSW));
    180         return(TRUE);
    181   }
    182   return(FALSE); 
     186        wndclass->getClassInfo(&wc);
     187        memcpy(lpwc, &wc, sizeof(WNDCLASSW));
     188        return(TRUE);
     189  }
     190  return(FALSE);
    183191}
    184192/****************************************************************************
     
    203211 BOOL           rc;
    204212 Win32WndClass *wndclass;
    205  
     213
    206214  dprintf(("USER32:GetClassInfoExA (%08xh,%x,%08x).\n",
    207215         hInstance,
    208216         lpszClass,
    209217         lpwcx));
    210  
     218
    211219  wndclass = Win32WndClass::FindClass(hInstance, (LPSTR)lpszClass);
    212220  if(wndclass) {
    213         wndclass->getClassInfo(lpwcx);
    214         return(TRUE);
    215   }
    216   return(FALSE); 
     221        wndclass->getClassInfo(lpwcx);
     222        return(TRUE);
     223  }
     224  return(FALSE);
    217225}
    218226/*****************************************************************************
     
    243251
    244252  if((ULONG)lpszClass >> 16 != 0) {
    245         astring = UnicodeToAsciiString((LPWSTR)lpszClass);
     253        astring = UnicodeToAsciiString((LPWSTR)lpszClass);
    246254  }
    247255  else  astring = (char *)lpszClass;
    248256
    249257  wndclass = Win32WndClass::FindClass(hInstance, astring);
    250   if((ULONG)astring >> 16 != 0) 
    251         FreeAsciiString((char *)astring);
     258  if((ULONG)astring >> 16 != 0)
     259        FreeAsciiString((char *)astring);
    252260  if(wndclass) {
    253         wndclass->getClassInfo(lpwcx);
    254         return(TRUE);
    255   }
    256   return(FALSE); 
     261        wndclass->getClassInfo(lpwcx);
     262        return(TRUE);
     263  }
     264  return(FALSE);
    257265}
    258266//******************************************************************************
     
    265273    wnd = WIN2OS2HWND(hwnd);
    266274    if(wnd == NULL) {
    267         dprintf(("GetClassNameA wnd == NULL"));
    268         return(0);
     275        dprintf(("GetClassNameA wnd == NULL"));
     276        return(0);
    269277    }
    270278    return (wnd->getClass())->getClassName(lpszClassName, cchClassName);
     
    279287    wnd = WIN2OS2HWND(hwnd);
    280288    if(wnd == NULL) {
    281         dprintf(("GetClassNameA wnd == NULL"));
    282         return(0);
     289        dprintf(("GetClassNameA wnd == NULL"));
     290        return(0);
    283291    }
    284292    return (wnd->getClass())->getClassName(lpszClassName, cchClassName);
     
    293301    wnd = WIN2OS2HWND(hwnd);
    294302    if(wnd == NULL) {
    295         dprintf(("SetClassLongA wnd == NULL"));
    296         return(0);
     303        dprintf(("SetClassLongA wnd == NULL"));
     304        return(0);
    297305    }
    298306    return (wnd->getClass())->setClassLongA(nIndex, lNewVal);
     
    307315    wnd = WIN2OS2HWND(hwnd);
    308316    if(wnd == NULL) {
    309         dprintf(("SetClassLongW wnd == NULL"));
    310         return(0);
     317        dprintf(("SetClassLongW wnd == NULL"));
     318        return(0);
    311319    }
    312320    return (wnd->getClass())->setClassLongW(nIndex, lNewVal);
     
    321329    wnd = WIN2OS2HWND(hwnd);
    322330    if(wnd == NULL) {
    323         dprintf(("SetClassWordA wnd == NULL"));
    324         return(0);
     331        dprintf(("SetClassWordA wnd == NULL"));
     332        return(0);
    325333    }
    326334    return (wnd->getClass())->setClassWord(nIndex, wNewVal);
     
    335343    wnd = WIN2OS2HWND(hwnd);
    336344    if(wnd == NULL) {
    337         dprintf(("GetClassWordA wnd == NULL"));
    338         return(0);
     345        dprintf(("GetClassWordA wnd == NULL"));
     346        return(0);
    339347    }
    340348    return (wnd->getClass())->getClassWord(nIndex);
     
    349357    wnd = WIN2OS2HWND(hwnd);
    350358    if(wnd == NULL) {
    351         dprintf(("GetClassLongA wnd == NULL"));
    352         return(0);
     359        dprintf(("GetClassLongA wnd == NULL"));
     360        return(0);
    353361    }
    354362    return (wnd->getClass())->getClassLongA(nIndex);
     
    363371    wnd = WIN2OS2HWND(hwnd);
    364372    if(wnd == NULL) {
    365         dprintf(("GetClassLongW wnd == NULL"));
    366         return(0);
     373        dprintf(("GetClassLongW wnd == NULL"));
     374        return(0);
    367375    }
    368376    return (wnd->getClass())->getClassLongW(nIndex);
Note: See TracChangeset for help on using the changeset viewer.