Changeset 693 for trunk/src/user32/new/pmwindow.cpp
- Timestamp:
- Aug 25, 1999, 5:08:51 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/new/pmwindow.cpp
r650 r693 1 /* $Id: pmwindow.cpp,v 1.2 0 1999-08-23 15:34:46dengert Exp $ */1 /* $Id: pmwindow.cpp,v 1.21 1999-08-25 15:08:50 dengert Exp $ */ 2 2 /* 3 3 * Win32 Window Managment Code for OS/2 … … 13 13 #define INCL_GPI 14 14 15 #include <os2.h> /* PM header file*/15 #include <os2.h> /* PM header file */ 16 16 #include <os2wrap.h> 17 17 #include <stdlib.h> 18 18 #include "win32type.h" 19 #include <winconst.h> 19 20 #include <wprocess.h> 20 21 #include <misc.h> … … 27 28 #include "oslibmsg.h" 28 29 29 HMQ hmq = 0; /* Message queue handle*/30 HMQ hmq = 0; /* Message queue handle */ 30 31 HAB hab = 0; 31 32 32 33 RECTL desktopRectl = {0}; 34 ULONG ScreenWidth = 0; 35 ULONG ScreenHeight = 0; 33 36 34 37 MRESULT EXPENTRY Win32WindowProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2); … … 45 48 if(!hab || !hmq) 46 49 { 47 48 49 50 51 52 53 54 55 50 UINT error; 51 //CB: only fail on real error 52 error = WinGetLastError(hab) & 0xFFFF; //error code 53 if (!hab || error != PMERR_MSG_QUEUE_ALREADY_EXISTS) 54 { 55 dprintf(("WinInitialize or WinCreateMsgQueue failed %x %x", hab, hmq)); 56 dprintf((" Error = %x",error)); 57 return(FALSE); 58 } 56 59 else 57 58 59 60 61 62 63 64 65 60 { 61 if(!hab) { 62 hab = WinQueryAnchorBlock(HWND_DESKTOP); 63 dprintf(("WinQueryAnchorBlock returned %x", hab)); 64 } 65 if(!hmq) { 66 hmq = HMQ_CURRENT; 67 } 68 } 66 69 } 67 70 SetThreadHAB(hab); … … 69 72 SetThreadMessageQueue(hmq); 70 73 71 if(!WinRegisterClass( /* Register window class*/72 hab, /* Anchor block handle*/73 (PSZ)WIN32_STDCLASS, /* Window class name*/74 (PFNWP)Win32WindowProc, /* Address of window procedure*/74 if(!WinRegisterClass( /* Register window class */ 75 hab, /* Anchor block handle */ 76 (PSZ)WIN32_STDCLASS, /* Window class name */ 77 (PFNWP)Win32WindowProc, /* Address of window procedure */ 75 78 CS_SIZEREDRAW | CS_HITTEST, 76 79 8)) { 77 78 80 dprintf(("WinRegisterClass Win32Window failed")); 81 return(FALSE); 79 82 } 80 83 81 84 WinQueryWindowRect(HWND_DESKTOP, &desktopRectl); 82 dprintf(("InitPM: Desktop (%d,%d)", desktopRectl.xRight, desktopRectl.yTop)); 85 ScreenWidth = desktopRectl.xRight; 86 ScreenHeight = desktopRectl.yTop; 87 88 dprintf(("InitPM: Desktop (%d,%d)", ScreenWidth, ScreenHeight)); 83 89 return OSLibInitMsgQueue(); 84 90 } /* End of main */ … … 89 95 { 90 96 POSTMSG_PACKET *postmsg; 91 OSLIBPOINT 92 Win32Window 93 APIRET 97 OSLIBPOINT point, ClientPoint; 98 Win32Window *win32wnd; 99 APIRET rc; 94 100 95 101 //Restore our FS selector … … 99 105 100 106 if(msg != WM_CREATE && win32wnd == NULL) { 101 102 107 dprintf(("Invalid win32wnd pointer for window %x!!", hwnd)); 108 goto RunDefWndProc; 103 109 } 104 110 switch( msg ) … … 106 112 //internal messages 107 113 case WM_WIN32_POSTMESSAGEA: 108 109 110 111 112 113 114 115 114 postmsg = (POSTMSG_PACKET *)mp1; 115 if(postmsg == NULL) { 116 dprintf(("WM_WIN32_POSTMESSAGEA, postmsg NULL!!")); 117 break; 118 } 119 win32wnd->SendMessageA(postmsg->Msg, postmsg->wParam, postmsg->lParam); 120 free(postmsg); 121 break; 116 122 117 123 case WM_WIN32_POSTMESSAGEW: 118 119 120 121 122 123 124 125 124 postmsg = (POSTMSG_PACKET *)mp1; 125 if(postmsg == NULL) { 126 dprintf(("WM_WIN32_POSTMESSAGEW, postmsg NULL!!")); 127 break; 128 } 129 win32wnd->SendMessageW(postmsg->Msg, postmsg->wParam, postmsg->lParam); 130 free(postmsg); 131 break; 126 132 127 133 //OS/2 msgs 128 134 case WM_CREATE: 129 130 131 132 135 //Processing is done in after WinCreateWindow returns 136 dprintf(("OS2: WM_CREATE %x", hwnd)); 137 RestoreOS2TIB(); 138 return (MRESULT)FALSE; 133 139 134 140 case WM_QUIT: 135 136 137 138 139 141 dprintf(("OS2: WM_QUIT %x", hwnd)); 142 if(win32wnd->MsgQuit()) { 143 goto RunDefWndProc; 144 } 145 break; 140 146 141 147 case WM_CLOSE: 142 143 144 145 146 148 dprintf(("OS2: WM_CLOSE %x", hwnd)); 149 if(win32wnd->MsgClose()) { 150 goto RunDefWndProc; 151 } 152 break; 147 153 148 154 case WM_DESTROY: 149 150 151 152 153 155 dprintf(("OS2: WM_DESTROY %x", hwnd)); 156 if(win32wnd->MsgDestroy()) { 157 goto RunDefWndProc; 158 } 159 break; 154 160 155 161 case WM_ENABLE: 156 157 158 159 160 162 dprintf(("OS2: WM_ENABLE %x", hwnd)); 163 if(win32wnd->MsgEnable((ULONG)mp1)) { 164 goto RunDefWndProc; 165 } 166 break; 161 167 162 168 case WM_SHOW: 163 164 165 166 167 169 dprintf(("OS2: WM_SHOW %x", hwnd)); 170 if(win32wnd->MsgShow((ULONG)mp1)) { 171 goto RunDefWndProc; 172 } 173 break; 168 174 169 175 case WM_ADJUSTWINDOWPOS: 170 176 { 171 ULONG x, y;172 177 PSWP pswp = (PSWP)mp1; 173 174 dprintf(("OS2: WM_ADJUSTWINDOWPOS %x", hwnd)); 175 176 if(pswp->fl & SWP_MOVE) { 177 if(win32wnd->isChild()) { 178 x = pswp->x; 179 y = pswp->cy - y - 1; 180 } 181 else { 182 OSLIBPOINT point; 183 184 point.x = pswp->x; 185 point.y = pswp->y; 186 187 MapOS2ToWin32Point(OSLIB_HWND_DESKTOP, hwnd, &point); 188 x = point.x; 189 y = point.y; 190 } 191 if(win32wnd->MsgMove(x, y)) { 192 goto RunDefWndProc; 193 } 194 break; 195 } 196 goto RunDefWndProc; 178 SWP swpOld; 179 WINDOWPOS wp; 180 ULONG parentHeight = 0; 181 182 dprintf(("OS2: WM_ADJUSTWINDOWPOS %x %x (%d,%d) (%d,%d)", hwnd, pswp->fl, pswp->x, pswp->y, pswp->cx, pswp->cy)); 183 184 WinQueryWindowPos(hwnd, &swpOld); 185 186 if(pswp->fl & (SWP_MOVE | SWP_SIZE)) { 187 parentHeight = (win32wnd->isChild()) ? 188 OSLibGetWindowHeight(win32wnd->getParent()->getOS2WindowHandle()) 189 : OSLibQueryScreenHeight(); 190 } 191 OSLibMapSWPtoWINDOWPOS(pswp, &wp, &swpOld, parentHeight); 192 wp.hwnd = win32wnd->getWindowHandle(); 193 if ((pswp->fl & SWP_ZORDER) && (pswp->hwndInsertBehind > HWND_BOTTOM)) 194 { 195 Win32Window *wndAfter = Win32Window::GetWindowFromOS2Handle(pswp->hwndInsertBehind); 196 wp.hwndInsertAfter = wndAfter->getWindowHandle(); 197 } 198 win32wnd->MsgPosChanging((LPARAM)&wp); 199 break; 197 200 } 198 201 199 202 case WM_WINDOWPOSCHANGED: 200 203 { 201 PSWP pswp = (PSWP)mp1; 202 203 dprintf(("OS2: WM_WINDOWPOSCHANGED %x %x (%d,%d) (%d,%d)", hwnd, pswp->fl, pswp->x, pswp->y, pswp->cx, pswp->cy)); 204 goto RunDefWndProc; 204 PSWP pswp = (PSWP)mp1; 205 WINDOWPOS wp; 206 ULONG parentHeight = 0; 207 208 dprintf(("OS2: WM_WINDOWPOSCHANGED %x %x (%d,%d) (%d,%d)", hwnd, pswp->fl, pswp->x, pswp->y, pswp->cx, pswp->cy)); 209 if(pswp->fl & (SWP_MOVE | SWP_SIZE)) { 210 parentHeight = (win32wnd->isChild()) ? 211 OSLibGetWindowHeight(win32wnd->getParent()->getOS2WindowHandle()) 212 : OSLibQueryScreenHeight(); 213 } 214 OSLibMapSWPtoWINDOWPOS(pswp, &wp, pswp+1, parentHeight); 215 wp.hwnd = win32wnd->getWindowHandle(); 216 if ((pswp->fl & SWP_ZORDER) && (pswp->hwndInsertBehind > HWND_BOTTOM)) 217 { 218 Win32Window *wndAfter = Win32Window::GetWindowFromOS2Handle(pswp->hwndInsertBehind); 219 wp.hwndInsertAfter = wndAfter->getWindowHandle(); 220 } 221 win32wnd->MsgPosChanged((LPARAM)&wp); 222 break; 205 223 } 206 224 207 225 case WM_ERASEBACKGROUND: 208 226 { 209 227 return (MRESULT) FALSE; 210 228 } 211 229 case WM_SIZE: … … 213 231 SWP swp; 214 232 215 rc = WinQueryWindowPos(hwnd, &swp); 216 if(rc == FALSE) { 217 dprintf(("WM_SIZE: WinQueryWindowPos failed!")); 218 break; 219 } 220 dprintf(("OS2: WM_SIZE %x %x (%d,%d) (%d,%d) (%d,%d)", hwnd, swp.fl, swp.x, swp.y, swp.cx, swp.cy, SHORT1FROMMP(mp2), SHORT2FROMMP(mp2))); 221 if(win32wnd->MsgSize(SHORT1FROMMP(mp2), SHORT2FROMMP(mp2), 222 (swp.fl & SWP_MINIMIZE) != 0, 223 (swp.fl & SWP_MAXIMIZE) != 0)) 224 { 225 goto RunDefWndProc; 226 } 227 break; 233 rc = WinQueryWindowPos(hwnd, &swp); 234 if(rc == FALSE) { 235 dprintf(("WM_SIZE: WinQueryWindowPos failed!")); 236 break; 237 } 238 dprintf(("OS2: WM_SIZE %x %x (%d,%d) (%d,%d) (%d,%d)", hwnd, swp.fl, swp.x, swp.y, swp.cx, swp.cy, SHORT1FROMMP(mp2), SHORT2FROMMP(mp2))); 239 #if 0 240 if(win32wnd->MsgSize(SHORT1FROMMP(mp2), SHORT2FROMMP(mp2), 241 (swp.fl & SWP_MINIMIZE) != 0, 242 (swp.fl & SWP_MAXIMIZE) != 0)) 243 { 244 goto RunDefWndProc; 245 } 246 #endif 247 break; 228 248 } 229 249 … … 232 252 HWND hwndActivate = (HWND)mp1; 233 253 234 235 236 237 238 239 240 241 242 243 254 dprintf(("OS2: WM_ACTIVATE %x", hwnd)); 255 if(WinQueryWindowULong(hwndActivate, OFFSET_WIN32PM_MAGIC) != WIN32PM_MAGIC) { 256 //another (non-win32) application's window 257 //set to NULL (allowed according to win32 SDK) to avoid problems 258 hwndActivate = NULL; 259 } 260 if(win32wnd->MsgActivate(1, hwndActivate)) { 261 goto RunDefWndProc; 262 } 263 break; 244 264 } 245 265 case WM_FOCUSCHANGE: 246 247 266 dprintf(("OS2: WM_FOCUSCHANGE %x", hwnd)); 267 goto RunDefWndProc; 248 268 249 269 case WM_SETFOCUS: … … 251 271 HWND hwndFocus = (HWND)mp1; 252 272 253 254 255 256 257 258 259 260 261 262 elserc = win32wnd->MsgKillFocus(hwndFocus);263 264 265 266 273 dprintf(("OS2: WM_SETFOCUS %x %d", hwnd, mp2)); 274 if(WinQueryWindowULong(hwndFocus, OFFSET_WIN32PM_MAGIC) != WIN32PM_MAGIC) { 275 //another (non-win32) application's window 276 //set to NULL (allowed according to win32 SDK) to avoid problems 277 hwndFocus = NULL; 278 } 279 if((ULONG)mp2 == TRUE) { 280 rc = win32wnd->MsgSetFocus(hwndFocus); 281 } 282 else rc = win32wnd->MsgKillFocus(hwndFocus); 283 if(rc) { 284 goto RunDefWndProc; 285 } 286 break; 267 287 } 268 288 //************************************************************************** … … 270 290 //************************************************************************** 271 291 case WM_BUTTON1DOWN: 272 273 274 275 276 277 278 279 280 281 292 dprintf(("OS2: WM_BUTTON1DOWN %x", hwnd)); 293 point.x = (*(POINTS *)&mp1).x; 294 point.y = (*(POINTS *)&mp1).y; 295 ClientPoint.x = point.x; 296 ClientPoint.y = MapOS2ToWin32Y(hwnd, 1, point.y); 297 MapOS2ToWin32Point(OSLIB_HWND_DESKTOP, hwnd, &point); 298 if(win32wnd->MsgButton(BUTTON_LEFTDOWN, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 299 goto RunDefWndProc; 300 } 301 break; 282 302 283 303 case WM_BUTTON1UP: 284 285 286 287 288 289 290 291 292 293 304 dprintf(("OS2: WM_BUTTON1UP %x", hwnd)); 305 point.x = (*(POINTS *)&mp1).x; 306 point.y = (*(POINTS *)&mp1).y; 307 ClientPoint.x = point.x; 308 ClientPoint.y = MapOS2ToWin32Y(hwnd, 1, point.y); 309 MapOS2ToWin32Point(OSLIB_HWND_DESKTOP, hwnd, &point); 310 if(win32wnd->MsgButton(BUTTON_LEFTUP, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 311 goto RunDefWndProc; 312 } 313 break; 294 314 case WM_BUTTON1DBLCLK: 295 296 297 298 299 300 301 302 303 315 point.x = (*(POINTS *)&mp1).x; 316 point.y = (*(POINTS *)&mp1).y; 317 ClientPoint.x = point.x; 318 ClientPoint.y = MapOS2ToWin32Y(hwnd, 1, point.y); 319 MapOS2ToWin32Point(OSLIB_HWND_DESKTOP, hwnd, &point); 320 if(win32wnd->MsgButton(BUTTON_LEFTDBLCLICK, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 321 goto RunDefWndProc; 322 } 323 break; 304 324 case WM_BUTTON2DOWN: 305 306 307 308 309 310 311 312 313 325 point.x = (*(POINTS *)&mp1).x; 326 point.y = (*(POINTS *)&mp1).y; 327 ClientPoint.x = point.x; 328 ClientPoint.y = MapOS2ToWin32Y(hwnd, 1, point.y); 329 MapOS2ToWin32Point(OSLIB_HWND_DESKTOP, hwnd, &point); 330 if(win32wnd->MsgButton(BUTTON_RIGHTDOWN, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 331 goto RunDefWndProc; 332 } 333 break; 314 334 case WM_BUTTON2UP: 315 316 317 318 319 320 321 322 323 335 point.x = (*(POINTS *)&mp1).x; 336 point.y = (*(POINTS *)&mp1).y; 337 ClientPoint.x = point.x; 338 ClientPoint.y = MapOS2ToWin32Y(hwnd, 1, point.y); 339 MapOS2ToWin32Point(OSLIB_HWND_DESKTOP, hwnd, &point); 340 if(win32wnd->MsgButton(BUTTON_RIGHTUP, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 341 goto RunDefWndProc; 342 } 343 break; 324 344 case WM_BUTTON2DBLCLK: 325 326 327 328 329 330 331 332 333 345 point.x = (*(POINTS *)&mp1).x; 346 point.y = (*(POINTS *)&mp1).y; 347 ClientPoint.x = point.x; 348 ClientPoint.y = MapOS2ToWin32Y(hwnd, 1, point.y); 349 MapOS2ToWin32Point(OSLIB_HWND_DESKTOP, hwnd, &point); 350 if(win32wnd->MsgButton(BUTTON_RIGHTDBLCLICK, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 351 goto RunDefWndProc; 352 } 353 break; 334 354 case WM_BUTTON3DOWN: 335 336 337 338 339 340 341 342 343 355 point.x = (*(POINTS *)&mp1).x; 356 point.y = (*(POINTS *)&mp1).y; 357 ClientPoint.x = point.x; 358 ClientPoint.y = MapOS2ToWin32Y(hwnd, 1, point.y); 359 MapOS2ToWin32Point(OSLIB_HWND_DESKTOP, hwnd, &point); 360 if(win32wnd->MsgButton(BUTTON_MIDDLEDOWN, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 361 goto RunDefWndProc; 362 } 363 break; 344 364 case WM_BUTTON3UP: 345 346 347 348 349 350 351 352 353 365 point.x = (*(POINTS *)&mp1).x; 366 point.y = (*(POINTS *)&mp1).y; 367 ClientPoint.x = point.x; 368 ClientPoint.y = MapOS2ToWin32Y(hwnd, 1, point.y); 369 MapOS2ToWin32Point(OSLIB_HWND_DESKTOP, hwnd, &point); 370 if(win32wnd->MsgButton(BUTTON_MIDDLEUP, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 371 goto RunDefWndProc; 372 } 373 break; 354 374 case WM_BUTTON3DBLCLK: 355 356 357 358 359 360 361 362 363 375 point.x = (*(POINTS *)&mp1).x; 376 point.y = (*(POINTS *)&mp1).y; 377 ClientPoint.x = point.x; 378 ClientPoint.y = MapOS2ToWin32Y(hwnd, 1, point.y); 379 MapOS2ToWin32Point(OSLIB_HWND_DESKTOP, hwnd, &point); 380 if(win32wnd->MsgButton(BUTTON_MIDDLEDBLCLICK, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 381 goto RunDefWndProc; 382 } 383 break; 364 384 365 385 case WM_BUTTON2MOTIONSTART: … … 372 392 case WM_BUTTON3MOTIONEND: 373 393 case WM_BUTTON3CLICK: 374 394 goto RunDefWndProc; 375 395 376 396 case WM_MOUSEMOVE: 377 397 { 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 398 ULONG keystate = 0; 399 if(WinGetKeyState(HWND_DESKTOP, VK_BUTTON1)) 400 keystate |= WMMOVE_LBUTTON; 401 if(WinGetKeyState(HWND_DESKTOP, VK_BUTTON2)) 402 keystate |= WMMOVE_MBUTTON; 403 if(WinGetKeyState(HWND_DESKTOP, VK_BUTTON3)) 404 keystate |= WMMOVE_RBUTTON; 405 if(WinGetKeyState(HWND_DESKTOP, VK_SHIFT)) 406 keystate |= WMMOVE_SHIFT; 407 if(WinGetKeyState(HWND_DESKTOP, VK_CTRL)) 408 keystate |= WMMOVE_CTRL; 409 410 //OS/2 Window coordinates -> Win32 Window coordinates 411 //TODO: What do windows apps that handle this messages return? 412 if(!win32wnd->MsgMouseMove(keystate, SHORT1FROMMP(mp1), MapOS2ToWin32Y(win32wnd, SHORT2FROMMP(mp1)))) { 413 goto RunDefWndProc; 414 } 415 break; 396 416 } 397 417 … … 405 425 406 426 case WM_COMMAND: 407 408 409 410 411 412 413 414 427 if(SHORT1FROMMP(mp2) == CMDSRC_MENU) { 428 win32wnd->MsgCommand(CMD_MENU, SHORT1FROMMP(mp1), 0); 429 } 430 if(SHORT1FROMMP(mp2) == CMDSRC_ACCELERATOR) { 431 win32wnd->MsgCommand(CMD_ACCELERATOR, SHORT1FROMMP(mp1), 0); 432 } 433 //todo controls + accelerators 434 break; 415 435 416 436 case WM_SYSCOMMAND: … … 419 439 ULONG win32sc; 420 440 421 422 423 424 425 y = desktopRectl.yTop- y;426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 441 if(SHORT2FROMMP(mp2) == TRUE) {//syscommand caused by mouse action 442 POINTL pointl; 443 WinQueryPointerPos(HWND_DESKTOP, &pointl); 444 x = pointl.x; 445 y = ScreenHeight - y; 446 } 447 switch(SHORT1FROMMP(mp1)) { 448 case SC_MOVE: 449 win32sc = WIN32SC_MOVE; 450 break; 451 case SC_CLOSE: 452 win32sc = WIN32SC_CLOSE; 453 break; 454 case SC_MAXIMIZE: 455 win32sc = WIN32SC_MAXIMIZE; 456 break; 457 case SC_MINIMIZE: 458 win32sc = WIN32SC_MINIMIZE; 459 break; 460 case SC_NEXTFRAME: 461 case SC_NEXTWINDOW: 462 win32sc = WIN32SC_NEXTWINDOW; 463 break; 464 case SC_RESTORE: 465 win32sc = WIN32SC_RESTORE; 466 break; 467 case SC_TASKMANAGER: 468 win32sc = WIN32SC_TASKLIST; 469 break; 470 default: 471 goto RunDefWndProc; 472 } 473 dprintf(("WM_SYSCOMMAND %x %x (%d,%d)", hwnd, win32sc, x, y)); 474 if(win32wnd->MsgSysCommand(win32sc, x, y)) { 475 goto RunDefWndProc; 476 } 477 break; 458 478 } 459 479 case WM_CHAR: … … 462 482 ULONG fl = SHORT1FROMMP(mp1); 463 483 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 484 if(!(fl & KC_CHAR)) { 485 dprintf(("WM_CHAR: no valid character code")); 486 goto RunDefWndProc; 487 } 488 if(fl & KC_VIRTUALKEY) { 489 vkey = SHORT2FROMMP(mp2); 490 } 491 if(fl & KC_KEYUP) { 492 keyflags |= KEY_UP; 493 } 494 if(fl & KC_ALT) { 495 keyflags |= KEY_ALTDOWN; 496 } 497 if(fl & KC_PREVDOWN) { 498 keyflags |= KEY_PREVDOWN; 499 } 500 if(fl & KC_DEADKEY) { 501 keyflags |= KEY_DEADKEY; 502 } 503 if(win32wnd->MsgChar(SHORT1FROMMP(mp2), CHAR3FROMMP(mp1), CHAR4FROMMP(mp1), vkey, keyflags)) { 504 goto RunDefWndProc; 505 } 506 break; 487 507 } 488 508 case WM_INITMENU: … … 492 512 493 513 case WM_TIMER: 494 514 goto RunDefWndProc; 495 515 496 516 case WM_SETWINDOWPARAMS: … … 498 518 WNDPARAMS *wndParams = (WNDPARAMS *)mp1; 499 519 500 501 502 503 504 505 506 520 dprintf(("OS2: WM_SETWINDOWPARAMS %x", hwnd)); 521 if(wndParams->fsStatus & WPM_TEXT) { 522 if(win32wnd->MsgSetText(wndParams->pszText, wndParams->cchText)) { 523 goto RunDefWndProc; 524 } 525 } 526 goto RunDefWndProc; 507 527 } 508 528 … … 513 533 PSZ wintext; 514 534 515 516 517 518 519 520 521 522 535 if(wndpars->fsStatus & (WPM_CCHTEXT | WPM_TEXT)) { 536 if(wndpars->fsStatus & WPM_CCHTEXT) 537 wndpars->cchText = win32wnd->MsgGetTextLength(); 538 if(wndpars->fsStatus & WPM_TEXT) 539 wndpars->pszText = win32wnd->MsgGetText(); 540 return (MRESULT)TRUE; 541 } 542 goto RunDefWndProc; 523 543 } 524 544 525 545 case WM_PAINT: 526 527 528 529 530 546 dprintf(("OS2: WM_PAINT %x", hwnd)); 547 if(win32wnd->MsgPaint(0, 0)) { 548 goto RunDefWndProc; 549 } 550 break; 531 551 532 552 case WM_HITTEST: 533 534 535 536 553 if(win32wnd->MsgHitTest((*(POINTS *)&mp1).x, MapOS2ToWin32Y(OSLIB_HWND_DESKTOP, hwnd, (*(POINTS *)&mp1).y))) { 554 goto RunDefWndProc; 555 } 556 break; 537 557 538 558 case WM_SYSCOLORCHANGE: … … 558 578 case WM_SEMANTICEVENT: 559 579 default: 560 // 561 562 580 // dprintf(("OS2: RunDefWndProc msg %x for %x", msg, hwnd)); 581 RestoreOS2TIB(); 582 return WinDefWindowProc( hwnd, msg, mp1, mp2 ); 563 583 } 564 584 RestoreOS2TIB();
Note:
See TracChangeset
for help on using the changeset viewer.