Changeset 134 for trunk/src/user32/wndclass.cpp
- Timestamp:
- Jun 20, 1999, 6:47:39 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/wndclass.cpp
r131 r134 1 /* $Id: wndclass.cpp,v 1. 4 1999-06-20 14:02:13sandervl Exp $ */1 /* $Id: wndclass.cpp,v 1.5 1999-06-20 16:47:38 sandervl Exp $ */ 2 2 3 3 /* … … 43 43 WNDPROC_O32 ScrollbarHandler = 0; 44 44 WNDPROC_O32 StaticHandler = 0; 45 46 HWND hwndButton = 0; 47 HWND hwndListbox = 0; 48 HWND hwndEdit = 0; 49 HWND hwndCombobox = 0; 50 HWND hwndScrollbar = 0; 51 HWND hwndMdiClient = 0; 52 HWND hwndStatic = 0; 53 54 Win32WindowClass *ButtonClass = 0; 55 Win32WindowClass *ListboxClass = 0; 56 Win32WindowClass *EditClass = 0; 57 Win32WindowClass *ComboboxClass = 0; 58 Win32WindowClass *MdiClientClass = 0; 59 Win32WindowClass *ScrollbarClass = 0; 60 Win32WindowClass *StaticClass = 0; 45 61 //****************************************************************************** 46 62 //****************************************************************************** 47 63 LRESULT WIN32API ButtonCallback(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam) 48 64 { 65 switch(Msg) 66 { 67 case WM_CREATE: 68 case WM_DESTROY: 69 case WM_LBUTTONDOWN: 70 case WM_MBUTTONDOWN: 71 case WM_RBUTTONDOWN: 72 NotifyParent(hwnd, Msg, wParam, lParam); 73 break; 74 } 49 75 return ButtonHandler(hwnd, Msg, wParam, lParam); 50 76 } … … 91 117 { 92 118 WNDCLASSA wndclass; 119 HWND hwnd; 93 120 94 121 if(O32_GetClassInfo(NULL, "BUTTON", &wndclass)) { 95 new Win32WindowClass(ButtonCallback, "BUTTON", hModule); 122 dprintf(("Create BUTTON System class")); 123 ButtonClass = new Win32WindowClass(ButtonCallback, "BUTTON", hModule); 96 124 ButtonHandler = (WNDPROC_O32)wndclass.lpfnWndProc; 125 hwndButton = O32_CreateWindow("BUTTON", "BUTTON", 0, 0, 0, 0, 0, 0, 0, 0, 0); 126 if(hwndButton == 0) { 127 dprintf(("RegisterSystemClasses failed!!")); 128 } 129 O32_SetClassLong(hwndButton, GCL_WNDPROC, (LONG)ButtonCallback); 97 130 } 98 131 if(O32_GetClassInfo(NULL, "LISTBOX", &wndclass)) { 99 new Win32WindowClass(ListboxCallback, "LISTBOX", hModule); 132 dprintf(("Create LISTBOX System class")); 133 ListboxClass = new Win32WindowClass(ListboxCallback, "LISTBOX", hModule); 100 134 ListboxHandler = (WNDPROC_O32)wndclass.lpfnWndProc; 135 hwndListbox = O32_CreateWindow("LISTBOX", "LISTBOX", 0, 0, 0, 0, 0, 0, 0, 0, 0); 136 if(hwndListbox == 0) { 137 dprintf(("RegisterSystemClasses failed!!")); 138 } 139 O32_SetClassLong(hwndListbox, GCL_WNDPROC, (LONG)ListboxCallback); 101 140 } 102 141 if(O32_GetClassInfo(NULL, "COMBOBOX", &wndclass)) { 103 new Win32WindowClass(ComboboxCallback, "COMBOBOX", hModule); 142 dprintf(("Create COMBOBOX System class")); 143 ComboboxClass = new Win32WindowClass(ComboboxCallback, "COMBOBOX", hModule); 104 144 ComboboxHandler = (WNDPROC_O32)wndclass.lpfnWndProc; 145 hwndCombobox = O32_CreateWindow("COMBOBOX", "COMBOBOX", 0, 0, 0, 0, 0, 0, 0, 0, 0); 146 if(hwndCombobox == 0) { 147 dprintf(("RegisterSystemClasses failed!!")); 148 } 149 O32_SetClassLong(hwndCombobox, GCL_WNDPROC, (LONG)ComboboxCallback); 105 150 } 106 151 if(O32_GetClassInfo(NULL, "EDIT", &wndclass)) { 107 new Win32WindowClass(EditCallback, "EDIT", hModule); 152 dprintf(("Create EDIT System class")); 153 EditClass = new Win32WindowClass(EditCallback, "EDIT", hModule); 108 154 EditHandler = (WNDPROC_O32)wndclass.lpfnWndProc; 155 hwndEdit = O32_CreateWindow("EDIT", "EDIT", 0, 0, 0, 0, 0, 0, 0, 0, 0); 156 if(hwndEdit == 0) { 157 dprintf(("RegisterSystemClasses failed!!")); 158 } 159 O32_SetClassLong(hwndEdit, GCL_WNDPROC, (LONG)EditCallback); 109 160 } 161 //TODO: This doens't work yet!! (need to create a normal window as parent) 110 162 if(O32_GetClassInfo(NULL, "MDICLIENT", &wndclass)) { 111 new Win32WindowClass(MdiClientCallback, "MDICLIENT", hModule); 163 dprintf(("Create MDICLIENT System class")); 164 MdiClientClass = new Win32WindowClass(MdiClientCallback, "MDICLIENT", hModule); 112 165 MdiClientHandler = (WNDPROC_O32)wndclass.lpfnWndProc; 166 hwndMdiClient = O32_CreateWindow("MDICLIENT", "MDICLIENT", WS_CHILD, 0, 0, 0, 0, hwndListbox, 0, 0, 0); 167 if(hwndMdiClient == 0) { 168 dprintf(("RegisterSystemClasses failed!!")); 169 } 170 O32_SetClassLong(hwndMdiClient, GCL_WNDPROC, (LONG)MdiClientCallback); 113 171 } 114 172 if(O32_GetClassInfo(NULL, "SCROLLBAR", &wndclass)) { 115 new Win32WindowClass(ScrollbarCallback, "SCROLLBAR", hModule); 173 dprintf(("Create SCROLLBAR System class")); 174 ScrollbarClass = new Win32WindowClass(ScrollbarCallback, "SCROLLBAR", hModule); 116 175 ScrollbarHandler = (WNDPROC_O32)wndclass.lpfnWndProc; 176 hwndScrollbar = O32_CreateWindow("SCROLLBAR", "SCROLLBAR", 0, 0, 0, 0, 0, 0, 0, 0, 0); 177 if(hwndScrollbar == 0) { 178 dprintf(("RegisterSystemClasses failed!!")); 179 } 180 O32_SetClassLong(hwndScrollbar, GCL_WNDPROC, (LONG)ScrollbarCallback); 117 181 } 118 182 if(O32_GetClassInfo(NULL, "STATIC", &wndclass)) { 119 new Win32WindowClass(StaticCallback, "STATIC", hModule); 183 dprintf(("Create STATIC System class")); 184 StaticClass = new Win32WindowClass(StaticCallback, "STATIC", hModule); 120 185 StaticHandler = (WNDPROC_O32)wndclass.lpfnWndProc; 186 hwndStatic = O32_CreateWindow("STATIC", "STATIC", 0, 0, 0, 0, 0, 0, 0, 0, 0); 187 if(hwndStatic == 0) { 188 dprintf(("RegisterSystemClasses failed!!")); 189 } 190 O32_SetClassLong(hwndStatic, GCL_WNDPROC, (LONG)StaticCallback); 121 191 } 122 192 //TODO: More standard classes in win95/NT4? 193 } 194 //****************************************************************************** 195 //****************************************************************************** 196 void UnregisterSystemClasses() 197 { 198 dprintf(("KERNEL32: UnregisterSystemClasses")); 199 if(hwndButton) O32_DestroyWindow(hwndButton); 200 if(hwndListbox) O32_DestroyWindow(hwndListbox); 201 if(hwndCombobox) O32_DestroyWindow(hwndCombobox); 202 if(hwndMdiClient) O32_DestroyWindow(hwndMdiClient); 203 if(hwndEdit) O32_DestroyWindow(hwndEdit); 204 if(hwndScrollbar) O32_DestroyWindow(hwndScrollbar); 205 if(hwndStatic) O32_DestroyWindow(hwndStatic); 206 if(ButtonClass) delete ButtonClass; 207 if(ListboxClass) delete ListboxClass; 208 if(EditClass) delete EditClass; 209 if(ComboboxClass) delete ComboboxClass; 210 if(MdiClientClass) delete MdiClientClass; 211 if(ScrollbarClass) delete ScrollbarClass; 212 if(StaticClass) delete StaticClass; 213 ButtonClass = NULL; 214 EditClass = NULL; 215 ListboxClass = NULL; 216 ComboboxClass = NULL; 217 MdiClientClass = NULL; 218 ScrollbarClass = NULL; 219 StaticClass = NULL; 123 220 } 124 221 //****************************************************************************** … … 218 315 //These are not supported by Open32 219 316 wc.style &= ~(CS_PARENTDC | CS_CLASSDC); 220 221 //SvL: 18-7-'98 Breaks apps (solitaire, rasmol..) 222 #if 0 223 /* @@@PH 98/06/21 experimental fix for WInhlp32 */ 224 #ifndef CS_SYNCPAINT 225 #define CS_SYNCPAINT 0x02000000L 226 #endif 227 228 wc.style |= CS_SYNCPAINT; 229 #endif 230 317 231 318 wc.lpfnWndProc = (WNDPROC)Win32WindowClass::GetOS2ClassCallback(); 232 319 … … 708 795 char szClass[128]; 709 796 Win32WindowClass *wclass; 797 LRESULT rc; 798 DWORD dwStyle, dwExStyle; 799 HWND parentHwnd; 800 Win32WindowProc *window; 710 801 711 802 #ifdef DEBUG … … 720 811 wclass = Win32WindowClass::FindClass(szClass); 721 812 if(wclass) { 722 //SvL: Correct Open32 key mapping bug 723 if(Msg == WM_KEYDOWN || Msg == WM_KEYUP || Msg == WM_CHAR) { 724 // dprintf(("WM_KEYDOWN %X %08X\n", wParam, lParam)); 725 lParam = MapOEMToRealKey(wParam, lParam); 726 } 727 728 if(Msg == WM_CREATE) {//Open32 isn't sending WM_NCCREATE messages!! 813 switch(Msg) 814 { 815 case WM_CREATE://Open32 isn't sending WM_NCCREATE messages!! 816 window = Win32WindowProc::FindProc(hwnd, GetCurrentThreadId()); 817 if(window) { 818 dprintf(("OS2ToWinCallback (class): New window object!")); 819 window->SetWindowHandle(hwnd); 820 } 821 729 822 if(wclass->GetWinCallback()(hwnd, WM_NCCREATE, 0, lParam) == 0) { 730 823 dprintf(("WM_NCCREATE returned FALSE\n")); 731 824 return(-1); //don't create window 732 825 } 733 } 734 if(Msg == WM_ACTIVATE && LOWORD(wParam) != WA_INACTIVE) 735 {//SvL: Bugfix, Open32 is NOT sending this to the window (messes up Solitaire) 736 HDC hdc = GetDC(hwnd); 737 738 wclass->GetWinCallback()(hwnd, WM_ERASEBKGND, hdc, 0); 739 ReleaseDC(hwnd, hdc); 740 } 826 //Send WM_CREATE message before notifying parent 827 rc = wclass->GetWinCallback()(hwnd, Msg, wParam, lParam); 828 829 NotifyParent(hwnd, WM_CREATE, wParam, lParam); 830 return(rc); 831 832 case WM_DESTROY: //nofity parent 833 case WM_LBUTTONDOWN: 834 case WM_MBUTTONDOWN: 835 case WM_RBUTTONDOWN: 836 NotifyParent(hwnd, Msg, wParam, lParam); 837 break; 838 839 case WM_KEYDOWN: 840 case WM_KEYUP: 841 case WM_CHAR: //SvL: Correct Open32 key mapping bug 842 lParam = MapOEMToRealKey(wParam, lParam); 843 break; 844 case WM_ACTIVATE: 845 if(LOWORD(wParam) != WA_INACTIVE) 846 {//SvL: Bugfix, Open32 is NOT sending this to the window (messes up Solitaire) 847 HDC hdc = GetDC(hwnd); 848 849 wclass->GetWinCallback()(hwnd, WM_ERASEBKGND, hdc, 0); 850 ReleaseDC(hwnd, hdc); 851 } 852 break; 853 } 741 854 return wclass->GetWinCallback()(hwnd, Msg, wParam, lParam); 742 855 }
Note:
See TracChangeset
for help on using the changeset viewer.