Changeset 304 for trunk/src/user32/new/pmwindow.cpp
- Timestamp:
- Jul 14, 1999, 11:05:59 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/new/pmwindow.cpp
r300 r304 1 /* $Id: pmwindow.cpp,v 1. 2 1999-07-14 08:35:35 sandervlExp $ */1 /* $Id: pmwindow.cpp,v 1.3 1999-07-14 21:05:58 cbratschi Exp $ */ 2 2 /* 3 3 * Win32 Window Managment Code for OS/2 … … 36 36 37 37 if(!hab || !hmq) { 38 dprintf(("WinInitialize or WinCreateMsgQueue failed %x %x", hab, hmq)); 39 return(FALSE); 38 UINT error; 39 40 //CB: only fail on real error 41 error = WinGetLastError(hab) & 0xFFFF; //error code 42 if (!hab || error != PMERR_MSG_QUEUE_ALREADY_EXISTS) 43 { 44 dprintf(("WinInitialize or WinCreateMsgQueue failed %x %x", hab, hmq)); 45 dprintf((" Error = %x",error)); 46 return(FALSE); 47 } else 48 { 49 //CB: get queue handle (todo) 50 } 40 51 } 41 52 … … 46 57 CS_SIZEREDRAW, /* Class style */ 47 58 8)) { 48 49 59 dprintf(("WinRegisterClass Win32Window failed")); 60 return(FALSE); 50 61 } 51 62 … … 68 79 69 80 if(msg != WM_CREATE && win32wnd == NULL && magic != WIN32PM_MAGIC) { 70 71 81 dprintf(("Invalid win32wnd pointer for window %x!!", hwnd)); 82 goto RunDefWndProc; 72 83 } 73 84 switch( msg ) 74 { 85 { 75 86 case WM_CREATE: 76 77 78 87 //Processing is done in after WinCreateWindow returns 88 break; 89 79 90 case WM_QUIT: 80 81 82 83 84 91 if(win32wnd->MsgQuit()) { 92 goto RunDefWndProc; 93 } 94 break; 95 85 96 case WM_CLOSE: 86 87 88 89 97 if(win32wnd->MsgClose()) { 98 goto RunDefWndProc; 99 } 100 break; 90 101 91 102 case WM_DESTROY: 92 93 94 95 103 if(win32wnd->MsgDestroy()) { 104 goto RunDefWndProc; 105 } 106 break; 96 107 97 108 case WM_ENABLE: 98 99 100 101 109 if(win32wnd->MsgEnable((ULONG)mp1)) { 110 goto RunDefWndProc; 111 } 112 break; 102 113 103 114 case WM_SHOW: 104 105 106 107 115 if(win32wnd->MsgShow((ULONG)mp1)) { 116 goto RunDefWndProc; 117 } 118 break; 108 119 109 120 case WM_MOVE: … … 114 125 ULONG xScreen, yScreen, yParent, xParent; 115 126 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 elsexParent = yParent = -1;137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 127 rc = WinQueryWindowRect(hwnd, &rectl); 128 if(rc == TRUE) { 129 point.x = rectl.xLeft; 130 point.y = rectl.yBottom; 131 132 //If the window has a parent, calculate position relative to that window 133 if((hwndParent = WinQueryWindow(hwnd, QW_PARENT)) != WinQueryDesktopWindow(hab, NULLHANDLE)) { 134 rc = WinMapWindowPoints(hwnd, hwndParent, &point, 1); 135 if(rc == FALSE) { 136 dprintf(("WM_MOVE: WinMapWindowPoints (parent) failed!")); 137 break; 138 } 139 rc = WinQueryWindowRect(hwndParent, &rectl2); 140 if(rc == FALSE) { 141 dprintf(("WM_MOVE: WinQueryWindowRect(HWND_DESKTOP, &rectl) failed!")); 142 break; 143 } 144 yParent = point.x; 145 yParent = OS2TOWIN32POINT(rectl2.yTop - rectl2.yBottom, point.y); 146 } 147 else xParent = yParent = -1; 148 149 point.x = rectl.xLeft; 150 point.y = rectl.yBottom; 151 152 rc = WinMapWindowPoints(hwnd, HWND_DESKTOP, &point, 1); 153 if(rc == FALSE) { 154 dprintf(("WM_MOVE: WinMapWindowPoints (desktop) failed!")); 155 break; 156 } 157 rc = WinQueryWindowRect(HWND_DESKTOP, &rectl); 158 if(rc == FALSE) { 159 dprintf(("WM_MOVE: WinQueryWindowRect(HWND_DESKTOP, &rectl) failed!")); 160 break; 161 } 162 xScreen = point.x; 163 yScreen = OS2TOWIN32POINT(rectl.yTop - rectl.yBottom, point.y); 164 165 if(win32wnd->MsgMove(xScreen, yScreen, xParent, yParent)) { 166 goto RunDefWndProc; 167 } 168 } 169 else { 170 dprintf(("WM_MOVE: WinQueryWindowRect failed!")); 171 } 172 break; 162 173 } 163 174 164 175 case WM_WINDOWPOSCHANGED: 165 176 { 166 177 break; 167 178 } 168 179 169 180 case WM_ADJUSTWINDOWPOS: 170 181 { 171 // 172 182 // if(win32wnd->MsgWindowPosChanging(0, 0)) { 183 break; 173 184 } 174 185 … … 177 188 HPS hps; 178 189 179 180 190 hps = WinGetPS(hwnd); 191 if(win32wnd->MsgEraseBackGround((ULONG)hps)) 181 192 { 182 183 184 185 186 187 188 189 190 193 /* 194 * Return TRUE to request PM to paint the window background 195 * in SYSCLR_WINDOW. 196 */ 197 WinReleasePS(hps); 198 return (MRESULT)( TRUE ); 199 } 200 WinReleasePS(hps); 201 return (MRESULT) FALSE; 191 202 } 192 203 case WM_SIZE: … … 194 205 SWP swp; 195 206 196 197 198 199 200 201 if(win32wnd->MsgSize(SHORT1FROMMP(mp2), SHORT2FROMMP(mp2), 202 (swp.fl & SWP_MINIMIZE) != 0, 203 (swp.fl & SWP_MAXIMIZE) != 0)) 207 rc = WinQueryWindowPos(hwnd, &swp); 208 if(rc == FALSE) { 209 dprintf(("WM_SIZE: WinQueryWindowPos failed!")); 210 break; 211 } 212 if(win32wnd->MsgSize(SHORT1FROMMP(mp2), SHORT2FROMMP(mp2), 213 (swp.fl & SWP_MINIMIZE) != 0, 214 (swp.fl & SWP_MAXIMIZE) != 0)) 204 215 { 205 206 207 208 216 goto RunDefWndProc; 217 } 218 219 break; 209 220 } 210 221 … … 213 224 HWND hwndActivate = (HWND)mp1; 214 225 215 216 217 218 219 220 221 222 223 226 if(WinQueryWindowULong(hwndActivate, OFFSET_WIN32PM_MAGIC) != WIN32PM_MAGIC) { 227 //another (non-win32) application's window 228 //set to NULL (allowed according to win32 SDK) to avoid problems 229 hwndActivate = NULL; 230 } 231 if(win32wnd->MsgActivate(1, hwndActivate)) { 232 goto RunDefWndProc; 233 } 234 break; 224 235 } 225 236 case WM_FOCUSCHANGE: 226 237 break; 227 238 228 239 case WM_SETFOCUS: … … 230 241 HWND hwndFocus = (HWND)mp1; 231 242 232 233 234 235 236 237 238 239 240 elserc = win32wnd->MsgKillFocus(hwndFocus);241 242 243 244 243 if(WinQueryWindowULong(hwndFocus, OFFSET_WIN32PM_MAGIC) != WIN32PM_MAGIC) { 244 //another (non-win32) application's window 245 //set to NULL (allowed according to win32 SDK) to avoid problems 246 hwndFocus = NULL; 247 } 248 if((ULONG)mp2 == TRUE) { 249 rc = win32wnd->MsgSetFocus(hwndFocus); 250 } 251 else rc = win32wnd->MsgKillFocus(hwndFocus); 252 if(rc) { 253 goto RunDefWndProc; 254 } 255 break; 245 256 } 246 257 //************************************************************************** … … 248 259 //************************************************************************** 249 260 case WM_BUTTON1DOWN: 250 251 252 253 261 if(win32wnd->MsgButton(BUTTON_LEFTDOWN, (*(POINTS *)&mp1).x, (*(POINTS *)&mp1).y)) { 262 goto RunDefWndProc; 263 } 264 break; 254 265 case WM_BUTTON1UP: 255 256 257 258 266 if(win32wnd->MsgButton(BUTTON_LEFTUP, (*(POINTS *)&mp1).x, (*(POINTS *)&mp1).y)) { 267 goto RunDefWndProc; 268 } 269 break; 259 270 case WM_BUTTON1DBLCLK: 260 261 262 263 271 if(win32wnd->MsgButton(BUTTON_LEFTDBLCLICK, (*(POINTS *)&mp1).x, (*(POINTS *)&mp1).y)) { 272 goto RunDefWndProc; 273 } 274 break; 264 275 case WM_BUTTON2DOWN: 265 266 267 268 276 if(win32wnd->MsgButton(BUTTON_RIGHTDOWN, (*(POINTS *)&mp1).x, (*(POINTS *)&mp1).y)) { 277 goto RunDefWndProc; 278 } 279 break; 269 280 case WM_BUTTON2UP: 270 271 272 273 281 if(win32wnd->MsgButton(BUTTON_RIGHTUP, (*(POINTS *)&mp1).x, (*(POINTS *)&mp1).y)) { 282 goto RunDefWndProc; 283 } 284 break; 274 285 case WM_BUTTON2DBLCLK: 275 276 277 278 286 if(win32wnd->MsgButton(BUTTON_RIGHTDBLCLICK, (*(POINTS *)&mp1).x, (*(POINTS *)&mp1).y)) { 287 goto RunDefWndProc; 288 } 289 break; 279 290 case WM_BUTTON2MOTIONSTART: 280 291 case WM_BUTTON2MOTIONEND: … … 289 300 case WM_BUTTON3MOTIONEND: 290 301 case WM_BUTTON3CLICK: 291 302 break; 292 303 293 304 case WM_MOUSEMOVE: 294 305 break; 295 306 296 307 //************************************************************************** … … 298 309 //************************************************************************** 299 310 case WM_VSCROLL: 300 311 break; 301 312 case WM_HSCROLL: 302 313 break; 303 314 304 315 case WM_CONTROL: 305 316 break; 306 317 307 318 case WM_COMMAND: 308 319 case WM_SYSCOMMAND: 309 320 break; 310 321 311 322 case WM_CHAR: 312 323 break; 313 324 314 325 case WM_INITMENU: … … 316 327 case WM_MENUEND: 317 328 case WM_NEXTMENU: 318 329 break; 319 330 320 331 case WM_TIMER: 321 332 break; 322 333 323 334 case WM_PAINT: 324 325 326 327 335 if(win32wnd->MsgPaint(0, 0)) { 336 goto RunDefWndProc; 337 } 338 break; 328 339 329 340 case WM_SYSCOLORCHANGE: 330 341 case WM_SYSVALUECHANGED: 331 342 break; 332 343 333 344 case WM_CALCVALIDRECTS: … … 353 364 case WM_SAVEAPPLICATION: 354 365 case WM_SEMANTICEVENT: 355 366 break; 356 367 default: 357 RestoreOS2TIB(); 358 368 RestoreOS2TIB(); 369 return WinDefWindowProc( hwnd, msg, mp1, mp2 ); 359 370 } 360 RestoreOS2TIB(); 371 RestoreOS2TIB(); 361 372 return (MRESULT)FALSE; 362 373 363 374 RunDefWndProc: 364 RestoreOS2TIB(); 375 RestoreOS2TIB(); 365 376 return WinDefWindowProc( hwnd, msg, mp1, mp2 ); 366 377 } /* End of Win32WindowProc */
Note:
See TracChangeset
for help on using the changeset viewer.