- Timestamp:
- Aug 23, 1999, 5:34:47 PM (26 years ago)
- Location:
- trunk/src/user32/new
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/user32/new/pmwindow.cpp
r614 r650 1 /* $Id: pmwindow.cpp,v 1. 19 1999-08-22 08:30:52 sandervlExp $ */1 /* $Id: pmwindow.cpp,v 1.20 1999-08-23 15:34:46 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> … … 27 27 #include "oslibmsg.h" 28 28 29 HMQ hmq = 0; /* Message queue handle*/29 HMQ hmq = 0; /* Message queue handle */ 30 30 HAB hab = 0; 31 31 … … 45 45 if(!hab || !hmq) 46 46 { 47 48 49 50 51 52 53 54 55 47 UINT error; 48 //CB: only fail on real error 49 error = WinGetLastError(hab) & 0xFFFF; //error code 50 if (!hab || error != PMERR_MSG_QUEUE_ALREADY_EXISTS) 51 { 52 dprintf(("WinInitialize or WinCreateMsgQueue failed %x %x", hab, hmq)); 53 dprintf((" Error = %x",error)); 54 return(FALSE); 55 } 56 56 else 57 58 59 60 61 62 63 64 65 57 { 58 if(!hab) { 59 hab = WinQueryAnchorBlock(HWND_DESKTOP); 60 dprintf(("WinQueryAnchorBlock returned %x", hab)); 61 } 62 if(!hmq) { 63 hmq = HMQ_CURRENT; 64 } 65 } 66 66 } 67 67 SetThreadHAB(hab); … … 69 69 SetThreadMessageQueue(hmq); 70 70 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*/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 */ 75 75 CS_SIZEREDRAW | CS_HITTEST, 76 76 8)) { 77 78 77 dprintf(("WinRegisterClass Win32Window failed")); 78 return(FALSE); 79 79 } 80 80 … … 89 89 { 90 90 POSTMSG_PACKET *postmsg; 91 OSLIBPOINT 92 Win32Window 93 APIRET 91 OSLIBPOINT point, ClientPoint; 92 Win32Window *win32wnd; 93 APIRET rc; 94 94 95 95 //Restore our FS selector … … 99 99 100 100 if(msg != WM_CREATE && win32wnd == NULL) { 101 102 101 dprintf(("Invalid win32wnd pointer for window %x!!", hwnd)); 102 goto RunDefWndProc; 103 103 } 104 104 switch( msg ) … … 106 106 //internal messages 107 107 case WM_WIN32_POSTMESSAGEA: 108 109 110 111 112 113 114 115 108 postmsg = (POSTMSG_PACKET *)mp1; 109 if(postmsg == NULL) { 110 dprintf(("WM_WIN32_POSTMESSAGEA, postmsg NULL!!")); 111 break; 112 } 113 win32wnd->SendMessageA(postmsg->Msg, postmsg->wParam, postmsg->lParam); 114 free(postmsg); 115 break; 116 116 117 117 case WM_WIN32_POSTMESSAGEW: 118 119 120 121 122 123 124 125 118 postmsg = (POSTMSG_PACKET *)mp1; 119 if(postmsg == NULL) { 120 dprintf(("WM_WIN32_POSTMESSAGEW, postmsg NULL!!")); 121 break; 122 } 123 win32wnd->SendMessageW(postmsg->Msg, postmsg->wParam, postmsg->lParam); 124 free(postmsg); 125 break; 126 126 127 127 //OS/2 msgs 128 128 case WM_CREATE: 129 130 131 132 129 //Processing is done in after WinCreateWindow returns 130 dprintf(("OS2: WM_CREATE %x", hwnd)); 131 RestoreOS2TIB(); 132 return (MRESULT)FALSE; 133 133 134 134 case WM_QUIT: 135 136 137 138 139 135 dprintf(("OS2: WM_QUIT %x", hwnd)); 136 if(win32wnd->MsgQuit()) { 137 goto RunDefWndProc; 138 } 139 break; 140 140 141 141 case WM_CLOSE: 142 143 144 145 146 142 dprintf(("OS2: WM_CLOSE %x", hwnd)); 143 if(win32wnd->MsgClose()) { 144 goto RunDefWndProc; 145 } 146 break; 147 147 148 148 case WM_DESTROY: 149 150 151 152 153 149 dprintf(("OS2: WM_DESTROY %x", hwnd)); 150 if(win32wnd->MsgDestroy()) { 151 goto RunDefWndProc; 152 } 153 break; 154 154 155 155 case WM_ENABLE: 156 157 158 159 160 156 dprintf(("OS2: WM_ENABLE %x", hwnd)); 157 if(win32wnd->MsgEnable((ULONG)mp1)) { 158 goto RunDefWndProc; 159 } 160 break; 161 161 162 162 case WM_SHOW: 163 164 165 166 167 163 dprintf(("OS2: WM_SHOW %x", hwnd)); 164 if(win32wnd->MsgShow((ULONG)mp1)) { 165 goto RunDefWndProc; 166 } 167 break; 168 168 169 169 case WM_ADJUSTWINDOWPOS: … … 172 172 PSWP pswp = (PSWP)mp1; 173 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 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; 197 197 } 198 198 … … 201 201 PSWP pswp = (PSWP)mp1; 202 202 203 204 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; 205 205 } 206 206 207 207 case WM_ERASEBACKGROUND: 208 208 { 209 HPS hps; 210 211 dprintf(("OS2: WM_ERASEBACKGROUND %x", hwnd)); 212 if(!win32wnd->MsgEraseBackGround()) 213 { 214 /* 215 * Return TRUE to request PM to paint the window background 216 * in SYSCLR_WINDOW. 217 */ 218 return (MRESULT)( TRUE ); 219 } 220 return (MRESULT) FALSE; 209 return (MRESULT) FALSE; 221 210 } 222 211 case WM_SIZE: … … 224 213 SWP swp; 225 214 226 227 228 229 230 231 232 233 234 235 236 237 238 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; 239 228 } 240 229 … … 243 232 HWND hwndActivate = (HWND)mp1; 244 233 245 246 247 248 249 250 251 252 253 254 234 dprintf(("OS2: WM_ACTIVATE %x", hwnd)); 235 if(WinQueryWindowULong(hwndActivate, OFFSET_WIN32PM_MAGIC) != WIN32PM_MAGIC) { 236 //another (non-win32) application's window 237 //set to NULL (allowed according to win32 SDK) to avoid problems 238 hwndActivate = NULL; 239 } 240 if(win32wnd->MsgActivate(1, hwndActivate)) { 241 goto RunDefWndProc; 242 } 243 break; 255 244 } 256 245 case WM_FOCUSCHANGE: 257 258 246 dprintf(("OS2: WM_FOCUSCHANGE %x", hwnd)); 247 goto RunDefWndProc; 259 248 260 249 case WM_SETFOCUS: … … 262 251 HWND hwndFocus = (HWND)mp1; 263 252 264 265 266 267 268 269 270 271 272 273 elserc = win32wnd->MsgKillFocus(hwndFocus);274 275 276 277 253 dprintf(("OS2: WM_SETFOCUS %x %d", hwnd, mp2)); 254 if(WinQueryWindowULong(hwndFocus, OFFSET_WIN32PM_MAGIC) != WIN32PM_MAGIC) { 255 //another (non-win32) application's window 256 //set to NULL (allowed according to win32 SDK) to avoid problems 257 hwndFocus = NULL; 258 } 259 if((ULONG)mp2 == TRUE) { 260 rc = win32wnd->MsgSetFocus(hwndFocus); 261 } 262 else rc = win32wnd->MsgKillFocus(hwndFocus); 263 if(rc) { 264 goto RunDefWndProc; 265 } 266 break; 278 267 } 279 268 //************************************************************************** … … 281 270 //************************************************************************** 282 271 case WM_BUTTON1DOWN: 283 284 285 286 287 288 289 290 291 292 272 dprintf(("OS2: WM_BUTTON1DOWN %x", hwnd)); 273 point.x = (*(POINTS *)&mp1).x; 274 point.y = (*(POINTS *)&mp1).y; 275 ClientPoint.x = point.x; 276 ClientPoint.y = MapOS2ToWin32Y(hwnd, 1, point.y); 277 MapOS2ToWin32Point(OSLIB_HWND_DESKTOP, hwnd, &point); 278 if(win32wnd->MsgButton(BUTTON_LEFTDOWN, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 279 goto RunDefWndProc; 280 } 281 break; 293 282 294 283 case WM_BUTTON1UP: 295 296 297 298 299 300 301 302 303 304 284 dprintf(("OS2: WM_BUTTON1UP %x", hwnd)); 285 point.x = (*(POINTS *)&mp1).x; 286 point.y = (*(POINTS *)&mp1).y; 287 ClientPoint.x = point.x; 288 ClientPoint.y = MapOS2ToWin32Y(hwnd, 1, point.y); 289 MapOS2ToWin32Point(OSLIB_HWND_DESKTOP, hwnd, &point); 290 if(win32wnd->MsgButton(BUTTON_LEFTUP, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 291 goto RunDefWndProc; 292 } 293 break; 305 294 case WM_BUTTON1DBLCLK: 306 307 308 309 310 311 312 313 314 295 point.x = (*(POINTS *)&mp1).x; 296 point.y = (*(POINTS *)&mp1).y; 297 ClientPoint.x = point.x; 298 ClientPoint.y = MapOS2ToWin32Y(hwnd, 1, point.y); 299 MapOS2ToWin32Point(OSLIB_HWND_DESKTOP, hwnd, &point); 300 if(win32wnd->MsgButton(BUTTON_LEFTDBLCLICK, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 301 goto RunDefWndProc; 302 } 303 break; 315 304 case WM_BUTTON2DOWN: 316 317 318 319 320 321 322 323 324 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_RIGHTDOWN, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 311 goto RunDefWndProc; 312 } 313 break; 325 314 case WM_BUTTON2UP: 326 327 328 329 330 331 332 333 334 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_RIGHTUP, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 321 goto RunDefWndProc; 322 } 323 break; 335 324 case WM_BUTTON2DBLCLK: 336 337 338 339 340 341 342 343 344 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_RIGHTDBLCLICK, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 331 goto RunDefWndProc; 332 } 333 break; 345 334 case WM_BUTTON3DOWN: 346 347 348 349 350 351 352 353 354 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_MIDDLEDOWN, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 341 goto RunDefWndProc; 342 } 343 break; 355 344 case WM_BUTTON3UP: 356 357 358 359 360 361 362 363 364 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_MIDDLEUP, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 351 goto RunDefWndProc; 352 } 353 break; 365 354 case WM_BUTTON3DBLCLK: 366 367 368 369 370 371 372 373 374 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_MIDDLEDBLCLICK, point.x, point.y, ClientPoint.x, ClientPoint.y)) { 361 goto RunDefWndProc; 362 } 363 break; 375 364 376 365 case WM_BUTTON2MOTIONSTART: … … 383 372 case WM_BUTTON3MOTIONEND: 384 373 case WM_BUTTON3CLICK: 385 374 goto RunDefWndProc; 386 375 387 376 case WM_MOUSEMOVE: 388 377 { 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 378 ULONG keystate = 0; 379 if(WinGetKeyState(HWND_DESKTOP, VK_BUTTON1)) 380 keystate |= WMMOVE_LBUTTON; 381 if(WinGetKeyState(HWND_DESKTOP, VK_BUTTON2)) 382 keystate |= WMMOVE_MBUTTON; 383 if(WinGetKeyState(HWND_DESKTOP, VK_BUTTON3)) 384 keystate |= WMMOVE_RBUTTON; 385 if(WinGetKeyState(HWND_DESKTOP, VK_SHIFT)) 386 keystate |= WMMOVE_SHIFT; 387 if(WinGetKeyState(HWND_DESKTOP, VK_CTRL)) 388 keystate |= WMMOVE_CTRL; 389 390 //OS/2 Window coordinates -> Win32 Window coordinates 391 //TODO: What do windows apps that handle this messages return? 392 if(!win32wnd->MsgMouseMove(keystate, SHORT1FROMMP(mp1), MapOS2ToWin32Y(win32wnd, SHORT2FROMMP(mp1)))) { 393 goto RunDefWndProc; 394 } 395 break; 407 396 } 408 397 … … 416 405 417 406 case WM_COMMAND: 418 419 420 421 422 423 424 425 407 if(SHORT1FROMMP(mp2) == CMDSRC_MENU) { 408 win32wnd->MsgCommand(CMD_MENU, SHORT1FROMMP(mp1), 0); 409 } 410 if(SHORT1FROMMP(mp2) == CMDSRC_ACCELERATOR) { 411 win32wnd->MsgCommand(CMD_ACCELERATOR, SHORT1FROMMP(mp1), 0); 412 } 413 //todo controls + accelerators 414 break; 426 415 427 416 case WM_SYSCOMMAND: … … 430 419 ULONG win32sc; 431 420 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 458 459 460 461 462 463 464 465 466 467 468 421 if(SHORT2FROMMP(mp2) == TRUE) {//syscommand caused by mouse action 422 POINTL pointl; 423 WinQueryPointerPos(HWND_DESKTOP, &pointl); 424 x = pointl.x; 425 y = desktopRectl.yTop - y; 426 } 427 switch(SHORT1FROMMP(mp1)) { 428 case SC_MOVE: 429 win32sc = WIN32SC_MOVE; 430 break; 431 case SC_CLOSE: 432 win32sc = WIN32SC_CLOSE; 433 break; 434 case SC_MAXIMIZE: 435 win32sc = WIN32SC_MAXIMIZE; 436 break; 437 case SC_MINIMIZE: 438 win32sc = WIN32SC_MINIMIZE; 439 break; 440 case SC_NEXTFRAME: 441 case SC_NEXTWINDOW: 442 win32sc = WIN32SC_NEXTWINDOW; 443 break; 444 case SC_RESTORE: 445 win32sc = WIN32SC_RESTORE; 446 break; 447 case SC_TASKMANAGER: 448 win32sc = WIN32SC_TASKLIST; 449 break; 450 default: 451 goto RunDefWndProc; 452 } 453 dprintf(("WM_SYSCOMMAND %x %x (%d,%d)", hwnd, win32sc, x, y)); 454 if(win32wnd->MsgSysCommand(win32sc, x, y)) { 455 goto RunDefWndProc; 456 } 457 break; 469 458 } 470 459 case WM_CHAR: … … 473 462 ULONG fl = SHORT1FROMMP(mp1); 474 463 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 464 if(!(fl & KC_CHAR)) { 465 dprintf(("WM_CHAR: no valid character code")); 466 goto RunDefWndProc; 467 } 468 if(fl & KC_VIRTUALKEY) { 469 vkey = SHORT2FROMMP(mp2); 470 } 471 if(fl & KC_KEYUP) { 472 keyflags |= KEY_UP; 473 } 474 if(fl & KC_ALT) { 475 keyflags |= KEY_ALTDOWN; 476 } 477 if(fl & KC_PREVDOWN) { 478 keyflags |= KEY_PREVDOWN; 479 } 480 if(fl & KC_DEADKEY) { 481 keyflags |= KEY_DEADKEY; 482 } 483 if(win32wnd->MsgChar(SHORT1FROMMP(mp2), CHAR3FROMMP(mp1), CHAR4FROMMP(mp1), vkey, keyflags)) { 484 goto RunDefWndProc; 485 } 486 break; 498 487 } 499 488 case WM_INITMENU: … … 503 492 504 493 case WM_TIMER: 505 494 goto RunDefWndProc; 506 495 507 496 case WM_SETWINDOWPARAMS: … … 509 498 WNDPARAMS *wndParams = (WNDPARAMS *)mp1; 510 499 511 512 513 514 515 516 517 500 dprintf(("OS2: WM_SETWINDOWPARAMS %x", hwnd)); 501 if(wndParams->fsStatus & WPM_TEXT) { 502 if(win32wnd->MsgSetText(wndParams->pszText, wndParams->cchText)) { 503 goto RunDefWndProc; 504 } 505 } 506 goto RunDefWndProc; 518 507 } 519 508 … … 524 513 PSZ wintext; 525 514 526 527 528 529 530 531 532 533 515 if(wndpars->fsStatus & (WPM_CCHTEXT | WPM_TEXT)) { 516 if(wndpars->fsStatus & WPM_CCHTEXT) 517 wndpars->cchText = win32wnd->MsgGetTextLength(); 518 if(wndpars->fsStatus & WPM_TEXT) 519 wndpars->pszText = win32wnd->MsgGetText(); 520 return (MRESULT)TRUE; 521 } 522 goto RunDefWndProc; 534 523 } 535 524 536 525 case WM_PAINT: 537 538 539 540 541 526 dprintf(("OS2: WM_PAINT %x", hwnd)); 527 if(win32wnd->MsgPaint(0, 0)) { 528 goto RunDefWndProc; 529 } 530 break; 542 531 543 532 case WM_HITTEST: 544 545 546 547 533 if(win32wnd->MsgHitTest((*(POINTS *)&mp1).x, MapOS2ToWin32Y(OSLIB_HWND_DESKTOP, hwnd, (*(POINTS *)&mp1).y))) { 534 goto RunDefWndProc; 535 } 536 break; 548 537 549 538 case WM_SYSCOLORCHANGE: … … 569 558 case WM_SEMANTICEVENT: 570 559 default: 571 // 572 573 560 // dprintf(("OS2: RunDefWndProc msg %x for %x", msg, hwnd)); 561 RestoreOS2TIB(); 562 return WinDefWindowProc( hwnd, msg, mp1, mp2 ); 574 563 } 575 564 RestoreOS2TIB(); -
trunk/src/user32/new/spy.cpp
r374 r650 1 /* $Id: spy.cpp,v 1. 2 1999-07-23 17:52:16 sandervlExp $ */1 /* $Id: spy.cpp,v 1.3 1999-08-23 15:34:46 dengert Exp $ */ 2 2 3 3 /* … … 26 26 27 27 28 #define Q_BUFFER_SIZE 29 #define MAX_MESSAGES 28 #define Q_BUFFER_SIZE 4096 29 #define MAX_MESSAGES (Q_BUFFER_SIZE/sizeof(Q_SPYMSG)) 30 30 31 PID 32 HQUEUE 31 PID pidServer = 0; 32 HQUEUE hqQueue = 0; 33 33 Q_SPYMSG *pvdQMemory = 0; 34 int 34 int msgIndex = 0; 35 35 36 36 BOOL InitSpyQueue() … … 38 38 APIRET rc; 39 39 40 if ( rc = DosOpenQueue(&pidServer, &hqQueue, "\\queues\\"Q_NAME))40 if ((rc = DosOpenQueue(&pidServer, &hqQueue, "\\queues\\"Q_NAME)) != 0) 41 41 { 42 42 dprintf(("InitSpyQueue: couldn't open spy queue rc=%d!", rc)); 43 43 return FALSE; 44 44 } 45 if ( rc = DosAllocSharedMem((VOID **)&pvdQMemory,46 47 48 fALLOCSHR))45 if ((rc = DosAllocSharedMem((VOID **)&pvdQMemory, 46 NULL, 47 Q_BUFFER_SIZE, 48 fALLOCSHR)) != 0) 49 49 { 50 50 dprintf(("InitSpyQueue: DosAllocSharedMem failed rc=%d", rc)); … … 70 70 if(hqQueue) { 71 71 if(pvdQMemory) { 72 72 rc = DosWriteQueue(hqQueue, Q_SPYMSG_KILLSERVER, 0, 0, 0); 73 73 if(rc) { 74 74 dprintf(("CloseSpyQueue: DosWriteQueue returned %d", rc)); 75 75 } 76 76 } 77 77 DosCloseQueue(hqQueue); 78 78 } 79 79 if(pvdQMemory) 80 80 DosFreeMem(pvdQMemory); 81 81 } 82 82 … … 88 88 if (hqQueue == 0) 89 89 return FALSE; 90 90 91 91 pvdQMemory[msgIndex].hwnd = hwnd; 92 92 pvdQMemory[msgIndex].Msg = Msg; … … 94 94 pvdQMemory[msgIndex].lParam = lParam; 95 95 96 if ( rc = DosWriteQueue(hqQueue,97 98 99 100 0))96 if ((rc = DosWriteQueue(hqQueue, 97 Q_SPYMSG_WNDMSG, 98 sizeof(Q_SPYMSG), 99 &pvdQMemory[msgIndex], 100 0)) != 0) 101 101 { 102 102 hqQueue = 0; //give up, server probably died … … 104 104 return FALSE; 105 105 } 106 if(++msgIndex >= MAX_MESSAGES) 106 if(++msgIndex >= MAX_MESSAGES) 107 107 { 108 108 msgIndex = 0; -
trunk/src/user32/new/win32wnd.cpp
r628 r650 1 /* $Id: win32wnd.cpp,v 1.2 8 1999-08-22 18:29:38dengert Exp $ */1 /* $Id: win32wnd.cpp,v 1.29 1999-08-23 15:34:47 dengert Exp $ */ 2 2 /* 3 3 * Win32 Window Code for OS/2 … … 927 927 // (or are we simply erasing too much here) 928 928 //****************************************************************************** 929 ULONG Win32Window::MsgEraseBackGround( )929 ULONG Win32Window::MsgEraseBackGround(HDC hdc) 930 930 { 931 931 if(isIcon) { 932 return SendInternalMessageA(WM_ICONERASEBKGND, GetDC(getWindowHandle()), 0);933 } 934 else return SendInternalMessageA(WM_ERASEBKGND, GetDC(getWindowHandle()), 0);932 return SendInternalMessageA(WM_ICONERASEBKGND, hdc, 0); 933 } 934 else return SendInternalMessageA(WM_ERASEBKGND, hdc, 0); 935 935 } 936 936 //****************************************************************************** -
trunk/src/user32/new/win32wnd.h
r614 r650 1 /* $Id: win32wnd.h,v 1.2 3 1999-08-22 08:30:53 sandervlExp $ */1 /* $Id: win32wnd.h,v 1.24 1999-08-23 15:34:47 dengert Exp $ */ 2 2 /* 3 3 * Win32 Window Code for OS/2 … … 23 23 class Win32Window; 24 24 25 #define OFFSET_WIN32WNDPTR 26 #define OFFSET_WIN32PM_MAGIC 27 28 #define WIN32PM_MAGIC 29 #define CheckMagicDword(a) 25 #define OFFSET_WIN32WNDPTR 0 26 #define OFFSET_WIN32PM_MAGIC 4 27 28 #define WIN32PM_MAGIC 0x12345678 29 #define CheckMagicDword(a) (a==WIN32PM_MAGIC) 30 30 31 31 typedef struct { 32 USHORTcb;33 34 ULONG win32CreateStruct;//or dialog create dword32 USHORT cb; 33 Win32Window *win32wnd; 34 ULONG win32CreateStruct; //or dialog create dword 35 35 } CUSTOMWNDDATA; 36 36 37 37 typedef struct 38 38 { 39 ULONGMsg;40 ULONGwParam;41 ULONGlParam;39 ULONG Msg; 40 ULONG wParam; 41 ULONG lParam; 42 42 } POSTMSG_PACKET; 43 43 44 #define WM_WIN32_POSTMESSAGEA 45 #define WM_WIN32_POSTMESSAGEW 46 47 #define MAX_WINDOW_NAMELENGTH 44 #define WM_WIN32_POSTMESSAGEA 0x4000 45 #define WM_WIN32_POSTMESSAGEW 0x4001 46 47 #define MAX_WINDOW_NAMELENGTH 256 48 48 49 49 class Win32Window : private GenericObject, private ChildWindow 50 50 { 51 51 public: 52 DWORDmagic;53 54 55 52 DWORD magic; 53 54 Win32Window(DWORD objType); 55 Win32Window(CREATESTRUCTA *lpCreateStructA, ATOM classAtom, BOOL isUnicode); 56 56 virtual ~Win32Window(); 57 57 58 virtual ULONG 59 ULONGMsgQuit();60 ULONGMsgClose();61 ULONGMsgDestroy();62 ULONGMsgEnable(BOOL fEnable);63 ULONGMsgShow(BOOL fShow);64 ULONGMsgMove(ULONG x, ULONG y);65 ULONGMsgHitTest(ULONG x, ULONG y);66 ULONGMsgSize(ULONG width, ULONG height, BOOL fMinimize, BOOL fMaximize);67 ULONGMsgActivate(BOOL fActivate, HWND hwnd);68 ULONGMsgSetFocus(HWND hwnd);69 ULONGMsgKillFocus(HWND hwnd);70 ULONGMsgCommand(ULONG cmd, ULONG Id, HWND hwnd);71 ULONGMsgSysCommand(ULONG win32sc, ULONG x, ULONG y);72 ULONGMsgChar(ULONG cmd, ULONG repeatcnt, ULONG scancode, ULONG vkey, ULONG keyflags);73 ULONGMsgButton(ULONG msg, ULONG ncx, ULONG ncy, ULONG clx, ULONG cly);74 ULONGMsgMouseMove(ULONG keystate, ULONG x, ULONG y);75 ULONGMsgPaint(ULONG tmp1, ULONG tmp2);76 ULONG MsgEraseBackGround();77 ULONGMsgSetText(LPSTR lpsz, LONG cch);78 ULONGMsgGetTextLength();79 80 81 virtual LONG 82 virtual ULONG 83 virtual WORD 84 virtual WORD 85 86 DWORD getStyle(){ return dwStyle; };87 DWORD getExStyle(){ return dwExStyle; };88 HWND getWindowHandle(){ return Win32Hwnd; };89 HWND getOS2WindowHandle(){ return OS2Hwnd; };90 HWND getOS2FrameWindowHandle(){ return OS2HwndFrame; };91 BOOL isFrameWindow(){ return OS2Hwnd != OS2HwndFrame; };92 Win32Window *getParent() 93 voidsetParent(Win32Window *pwindow) { ChildWindow::SetParent((ChildWindow *)pwindow); };94 WNDPROC getWindowProc(){ return win32wndproc; };95 void setWindowProc(WNDPROC newproc){ win32wndproc = newproc; };96 DWORD getWindowId(){ return windowId; };97 void setWindowId(DWORD id){ windowId = id; };98 ULONG getWindowHeight(){ return rectClient.bottom - rectClient.top; };99 BOOLisChild();100 PRECT getClientRect(){ return &rectClient; };101 PRECT getWindowRect(){ return &rectWindow; };102 103 DWORD getFlags(){ return flags; };104 void setFlags(DWORD newflags){ flags = newflags; };105 106 HACCEL GetAccelTable(){ return (HACCEL) acceltableResource; };107 BOOLSetAccelTable(ULONG hAccel);108 109 HMENU GetMenu(){ return (HMENU) menuResource; };110 BOOLSetMenu(ULONG hMenu);111 112 BOOLSetIcon(HICON hIcon);113 HICON GetIcon(){ return (HICON) iconResource; };114 115 BOOLShowWindow(ULONG nCmdShow);116 BOOLSetWindowPos(HWND hwndInsertAfter, int x, int y, int cx, int cy, UINT fuFlags);117 BOOLDestroyWindow();118 HWNDSetActiveWindow();119 HWNDGetParent();120 HWNDSetParent(HWND hwndNewParent);121 BOOLIsChild(HWND hwndParent);122 HWNDGetTopWindow();123 BOOLUpdateWindow();124 BOOLIsIconic();125 HWNDGetWindow(UINT uCmd);126 BOOLEnableWindow(BOOL fEnable);127 BOOLCloseWindow();128 static HWND 129 BOOLIsWindow();130 BOOLIsWindowEnabled();131 BOOLIsWindowVisible();132 BOOLIsUnicode() { return isUnicode; };133 134 BOOLGetWindowRect(PRECT pRect);135 intGetWindowTextLengthA();136 intGetWindowTextA(LPSTR lpsz, int cch);137 BOOLSetWindowTextA(LPCSTR lpsz);138 139 LRESULT 140 LRESULT 141 BOOL 142 BOOL 143 LRESULT 144 LRESULT 145 146 voidNotifyParent(UINT Msg, WPARAM wParam, LPARAM lParam);58 virtual ULONG MsgCreate(HWND hwndOS2, ULONG initParam); 59 ULONG MsgQuit(); 60 ULONG MsgClose(); 61 ULONG MsgDestroy(); 62 ULONG MsgEnable(BOOL fEnable); 63 ULONG MsgShow(BOOL fShow); 64 ULONG MsgMove(ULONG x, ULONG y); 65 ULONG MsgHitTest(ULONG x, ULONG y); 66 ULONG MsgSize(ULONG width, ULONG height, BOOL fMinimize, BOOL fMaximize); 67 ULONG MsgActivate(BOOL fActivate, HWND hwnd); 68 ULONG MsgSetFocus(HWND hwnd); 69 ULONG MsgKillFocus(HWND hwnd); 70 ULONG MsgCommand(ULONG cmd, ULONG Id, HWND hwnd); 71 ULONG MsgSysCommand(ULONG win32sc, ULONG x, ULONG y); 72 ULONG MsgChar(ULONG cmd, ULONG repeatcnt, ULONG scancode, ULONG vkey, ULONG keyflags); 73 ULONG MsgButton(ULONG msg, ULONG ncx, ULONG ncy, ULONG clx, ULONG cly); 74 ULONG MsgMouseMove(ULONG keystate, ULONG x, ULONG y); 75 ULONG MsgPaint(ULONG tmp1, ULONG tmp2); 76 ULONG MsgEraseBackGround(HDC hdc); 77 ULONG MsgSetText(LPSTR lpsz, LONG cch); 78 ULONG MsgGetTextLength(); 79 char *MsgGetText(); 80 81 virtual LONG SetWindowLongA(int index, ULONG value); 82 virtual ULONG GetWindowLongA(int index); 83 virtual WORD SetWindowWord(int index, WORD value); 84 virtual WORD GetWindowWord(int index); 85 86 DWORD getStyle() { return dwStyle; }; 87 DWORD getExStyle() { return dwExStyle; }; 88 HWND getWindowHandle() { return Win32Hwnd; }; 89 HWND getOS2WindowHandle() { return OS2Hwnd; }; 90 HWND getOS2FrameWindowHandle() { return OS2HwndFrame; }; 91 BOOL isFrameWindow() { return OS2Hwnd != OS2HwndFrame; }; 92 Win32Window *getParent() { return (Win32Window *)ChildWindow::GetParent(); }; 93 void setParent(Win32Window *pwindow) { ChildWindow::SetParent((ChildWindow *)pwindow); }; 94 WNDPROC getWindowProc() { return win32wndproc; }; 95 void setWindowProc(WNDPROC newproc) { win32wndproc = newproc; }; 96 DWORD getWindowId() { return windowId; }; 97 void setWindowId(DWORD id) { windowId = id; }; 98 ULONG getWindowHeight() { return rectClient.bottom - rectClient.top; }; 99 BOOL isChild(); 100 PRECT getClientRect() { return &rectClient; }; 101 PRECT getWindowRect() { return &rectWindow; }; 102 103 DWORD getFlags() { return flags; }; 104 void setFlags(DWORD newflags) { flags = newflags; }; 105 106 HACCEL GetAccelTable() { return (HACCEL) acceltableResource; }; 107 BOOL SetAccelTable(ULONG hAccel); 108 109 HMENU GetMenu() { return (HMENU) menuResource; }; 110 BOOL SetMenu(ULONG hMenu); 111 112 BOOL SetIcon(HICON hIcon); 113 HICON GetIcon() { return (HICON) iconResource; }; 114 115 BOOL ShowWindow(ULONG nCmdShow); 116 BOOL SetWindowPos(HWND hwndInsertAfter, int x, int y, int cx, int cy, UINT fuFlags); 117 BOOL DestroyWindow(); 118 HWND SetActiveWindow(); 119 HWND GetParent(); 120 HWND SetParent(HWND hwndNewParent); 121 BOOL IsChild(HWND hwndParent); 122 HWND GetTopWindow(); 123 BOOL UpdateWindow(); 124 BOOL IsIconic(); 125 HWND GetWindow(UINT uCmd); 126 BOOL EnableWindow(BOOL fEnable); 127 BOOL CloseWindow(); 128 static HWND GetActiveWindow(); 129 BOOL IsWindow(); 130 BOOL IsWindowEnabled(); 131 BOOL IsWindowVisible(); 132 BOOL IsUnicode() { return isUnicode; }; 133 134 BOOL GetWindowRect(PRECT pRect); 135 int GetWindowTextLengthA(); 136 int GetWindowTextA(LPSTR lpsz, int cch); 137 BOOL SetWindowTextA(LPCSTR lpsz); 138 139 LRESULT SendMessageA(ULONG msg, WPARAM wParam, LPARAM lParam); 140 LRESULT SendMessageW(ULONG msg, WPARAM wParam, LPARAM lParam); 141 BOOL PostMessageA(ULONG msg, WPARAM wParam, LPARAM lParam); 142 BOOL PostMessageW(ULONG msg, WPARAM wParam, LPARAM lParam); 143 LRESULT DefWindowProcA(UINT msg, WPARAM wParam, LPARAM lParam); 144 LRESULT DefWindowProcW(UINT msg, WPARAM wParam, LPARAM lParam); 145 146 void NotifyParent(UINT Msg, WPARAM wParam, LPARAM lParam); 147 147 148 148 Win32WndClass *getClass() { return windowClass; }; 149 149 150 static 150 static HWND Win32ToOS2Handle(HWND hwnd) 151 151 { 152 152 Win32Window *window = GetWindowFromHandle(hwnd); 153 153 154 154 if(window) { 155 155 return window->getOS2WindowHandle(); 156 156 } 157 else return hwnd;//OS/2 window handle157 else return hwnd; //OS/2 window handle 158 158 } 159 159 160 static 160 static HWND OS2ToWin32Handle(HWND hwnd) 161 161 { 162 162 Win32Window *window = GetWindowFromOS2Handle(hwnd); 163 163 164 164 if(window) { 165 165 return window->getWindowHandle(); 166 166 } 167 else return hwnd;//OS/2 window handle167 else return hwnd; //OS/2 window handle 168 168 } 169 169 … … 172 172 173 173 protected: 174 LRESULT 175 LRESULT 176 voidInit();177 178 HWNDOS2Hwnd;179 HWNDOS2HwndFrame;180 HWNDOS2HwndMenu;181 HWNDWin32Hwnd;182 BOOLisUnicode;183 184 intposx, posy, width, height;185 186 187 ULONG dwExStyle;//GWL_EXSTYLE188 ULONG dwStyle;//GWL_STYLE189 WNDPROC win32wndproc;//GWL_WNDPROC190 ULONG hInstance;//GWL_HINSTANCE174 LRESULT SendInternalMessageA(ULONG msg, WPARAM wParam, LPARAM lParam); 175 LRESULT SendInternalMessageW(ULONG msg, WPARAM wParam, LPARAM lParam); 176 void Init(); 177 178 HWND OS2Hwnd; 179 HWND OS2HwndFrame; 180 HWND OS2HwndMenu; 181 HWND Win32Hwnd; 182 BOOL isUnicode; 183 184 int posx, posy, width, height; 185 186 // values normally contained in the standard window words 187 ULONG dwExStyle; //GWL_EXSTYLE 188 ULONG dwStyle; //GWL_STYLE 189 WNDPROC win32wndproc; //GWL_WNDPROC 190 ULONG hInstance; //GWL_HINSTANCE 191 191 //Moved in ChildWindow class 192 ///// Win32Window *parent;//GWL_HWNDPARENT193 ULONG windowId;//GWL_ID194 ULONG userData;//GWL_USERDATA195 196 HWNDhwndLinkAfter;197 DWORDflags;198 DWORD lastHitTestVal;//Last value returned by WM_NCHITTEST handler199 200 BOOLisIcon;201 BOOLfCreated;202 BOOLfFirstShow;203 204 Win32Window *owner; 192 ///// Win32Window *parent; //GWL_HWNDPARENT 193 ULONG windowId; //GWL_ID 194 ULONG userData; //GWL_USERDATA 195 196 HWND hwndLinkAfter; 197 DWORD flags; 198 DWORD lastHitTestVal; //Last value returned by WM_NCHITTEST handler 199 200 BOOL isIcon; 201 BOOL fCreated; 202 BOOL fFirstShow; 203 204 Win32Window *owner; 205 205 206 206 Win32Resource *acceltableResource; … … 208 208 Win32Resource *iconResource; 209 209 210 charwindowNameA[MAX_WINDOW_NAMELENGTH];211 WCHARwindowNameW[MAX_WINDOW_NAMELENGTH];212 ULONGwndNameLength;213 214 215 ULONGnrUserWindowLong;216 217 RECTrectWindow;218 RECTrectClient;210 char windowNameA[MAX_WINDOW_NAMELENGTH]; 211 WCHAR windowNameW[MAX_WINDOW_NAMELENGTH]; 212 ULONG wndNameLength; 213 214 ULONG *userWindowLong; 215 ULONG nrUserWindowLong; 216 217 RECT rectWindow; 218 RECT rectClient; 219 219 220 220 Win32WndClass *windowClass; … … 224 224 private: 225 225 #ifndef OS2_INCLUDED 226 227 228 229 230 231 232 233 226 BOOL CreateWindowExA(CREATESTRUCTA *lpCreateStruct, ATOM classAtom); 227 228 void GetMinMaxInfo(POINT *maxSize, POINT *maxPos, POINT *minTrack, POINT *maxTrack ); 229 230 LONG SendNCCalcSize(BOOL calcValidRect, 231 RECT *newWindowRect, RECT *oldWindowRect, 232 RECT *oldClientRect, WINDOWPOS *winpos, 233 RECT *newClientRect ); 234 234 235 235 LRESULT SendInternalMessage(ULONG msg, WPARAM wParam, LPARAM lParam) 236 236 { 237 238 239 elsereturn SendInternalMessageA(msg, wParam, lParam);237 if(isUnicode) 238 return SendInternalMessageW(msg, wParam, lParam); 239 else return SendInternalMessageA(msg, wParam, lParam); 240 240 } 241 241 #endif … … 243 243 244 244 245 #define BUTTON_LEFTDOWN 246 #define BUTTON_LEFTUP 247 #define BUTTON_LEFTDBLCLICK 248 #define BUTTON_RIGHTUP 249 #define BUTTON_RIGHTDOWN 250 #define BUTTON_RIGHTDBLCLICK 251 #define BUTTON_MIDDLEUP 252 #define BUTTON_MIDDLEDOWN 253 #define BUTTON_MIDDLEDBLCLICK 254 255 #define WMMOVE_LBUTTON 256 #define WMMOVE_MBUTTON 257 #define WMMOVE_RBUTTON 258 #define WMMOVE_CTRL 259 #define WMMOVE_SHIFT 260 261 262 #define CMD_MENU 263 #define CMD_CONTROL 264 #define CMD_ACCELERATOR 265 266 #define WIN32SC_SIZE 267 #define WIN32SC_MOVE 245 #define BUTTON_LEFTDOWN 0 246 #define BUTTON_LEFTUP 1 247 #define BUTTON_LEFTDBLCLICK 2 248 #define BUTTON_RIGHTUP 3 249 #define BUTTON_RIGHTDOWN 4 250 #define BUTTON_RIGHTDBLCLICK 5 251 #define BUTTON_MIDDLEUP 6 252 #define BUTTON_MIDDLEDOWN 7 253 #define BUTTON_MIDDLEDBLCLICK 8 254 255 #define WMMOVE_LBUTTON 1 256 #define WMMOVE_MBUTTON 2 257 #define WMMOVE_RBUTTON 4 258 #define WMMOVE_CTRL 8 259 #define WMMOVE_SHIFT 16 260 261 262 #define CMD_MENU 1 263 #define CMD_CONTROL 2 264 #define CMD_ACCELERATOR 3 265 266 #define WIN32SC_SIZE 0xf000 267 #define WIN32SC_MOVE 0xf010 268 268 #define WIN32SC_MINIMIZE 0xf020 269 269 #define WIN32SC_MAXIMIZE 0xf030 270 270 #define WIN32SC_NEXTWINDOW 0xf040 271 271 #define WIN32SC_PREVWINDOW 0xf050 272 #define WIN32SC_CLOSE 272 #define WIN32SC_CLOSE 0xf060 273 273 #define WIN32SC_VSCROLL 0xf070 274 274 #define WIN32SC_HSCROLL 0xf080 … … 279 279 #define WIN32SC_TASKLIST 0xf130 280 280 #define WIN32SC_SCREENSAVE 0xf140 281 #define WIN32SC_HOTKEY 282 283 #define KEY_ALTDOWN 284 #define KEY_PREVDOWN 285 #define KEY_UP 286 #define KEY_DEADKEY 281 #define WIN32SC_HOTKEY 0xf150 282 283 #define KEY_ALTDOWN 1 284 #define KEY_PREVDOWN 2 285 #define KEY_UP 4 286 #define KEY_DEADKEY 8 287 287 288 288 #endif //__cplusplus -
trunk/src/user32/new/wingdi.cpp
r392 r650 1 /* $Id: wingdi.cpp,v 1. 8 1999-07-25 15:51:57 sandervlExp $ */1 /* $Id: wingdi.cpp,v 1.9 1999-08-23 15:34:47 dengert Exp $ */ 2 2 /* 3 3 * Win32 Window graphics apis for OS/2 … … 29 29 window = Win32Window::GetWindowFromHandle(hwnd); 30 30 if(!window) { 31 32 31 dprintf(("GetDC, window %x not found", hwnd)); 32 return 0; 33 33 } 34 34 #ifdef OPEN32_GDI … … 40 40 #endif 41 41 dprintf(("BeginPaint %X returned %x\n", hwnd, hdc)); 42 43 lps->fErase = !window->MsgEraseBackGround(hdc); 42 44 return hdc; 43 45 … … 65 67 window = Win32Window::GetWindowFromHandle(hwnd); 66 68 if(!window) { 67 69 dprintf(("GetDC, window %x not found", hwnd)); 68 70 #ifdef OPEN32_GDI 69 71 dprintf(("GetDC %x", hwnd)); 70 72 return O32_GetDC(0); 71 73 #else 72 74 //desktop window?
Note:
See TracChangeset
for help on using the changeset viewer.