Changeset 236 for trunk/src/comctl32/progress.c
- Timestamp:
- Jun 28, 1999, 5:46:28 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/comctl32/progress.c
r219 r236 1 /* $Id: progress.c,v 1. 6 1999-06-26 14:20:31cbratschi Exp $ */1 /* $Id: progress.c,v 1.7 1999-06-28 15:46:25 cbratschi Exp $ */ 2 2 /* 3 3 * Progress control … … 284 284 285 285 286 static LRESULT PROGRESS_NCCreate(HWND hwnd,WPARAM wParam,LPARAM lParam) 287 { 288 DWORD dwExStyle; 289 290 dwExStyle = GetWindowLongA(hwnd,GWL_EXSTYLE); 291 SetWindowLongA(hwnd,GWL_EXSTYLE,dwExStyle | WS_EX_STATICEDGE); 292 293 return TRUE; 294 } 295 296 static LRESULT PROGRESS_Create(HWND hwnd,WPARAM wParam,LPARAM lParam) 297 { 298 PROGRESS_INFO *infoPtr; 299 300 /* allocate memory for info struct */ 301 infoPtr = (PROGRESS_INFO *)COMCTL32_Alloc(sizeof(PROGRESS_INFO)); 302 SetWindowLongA(hwnd,0,(DWORD)infoPtr); 303 304 /* initialize the info struct */ 305 infoPtr->MinVal = 0; 306 infoPtr->MaxVal = 100; 307 infoPtr->CurVal = 0; 308 infoPtr->Step = 10; 309 infoPtr->ColorBar = CLR_DEFAULT; 310 infoPtr->ColorBk = CLR_DEFAULT; 311 infoPtr->hFont = (HANDLE)NULL; 312 // TRACE(progress, "Progress Ctrl creation, hwnd=%04x\n", hwnd); 313 314 return 0; 315 } 316 317 static LRESULT PROGRESS_Destroy(HWND hwnd,WPARAM wParam,LPARAM lParam) 318 { 319 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 320 321 // TRACE (progress, "Progress Ctrl destruction, hwnd=%04x\n", hwnd); 322 COMCTL32_Free (infoPtr); 323 324 return 0; 325 } 326 327 static LRESULT PROGRESS_GetFont(HWND hwnd,WPARAM wParam,LPARAM lParam) 328 { 329 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 330 331 return (LRESULT)infoPtr->hFont; 332 } 333 286 334 /*********************************************************************** 287 335 * PROGRESS_SetFont 288 336 * Set new Font for progress bar 289 337 */ 290 static HFONT 291 PROGRESS_SetFont (HWND hwnd, WPARAM wParam, LPARAM lParam) 292 { 293 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 338 static HFONT PROGRESS_SetFont (HWND hwnd,WPARAM wParam,LPARAM lParam) 339 { 340 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 294 341 HFONT hOldFont = infoPtr->hFont; 295 342 296 343 infoPtr->hFont = (HFONT)wParam; 297 if (LOWORD(lParam)) 298 PROGRESS_Refresh (hwnd); 344 if (LOWORD(lParam)) PROGRESS_Refresh (hwnd); 345 299 346 return hOldFont; 300 347 } 301 348 349 static LRESULT PROGRESS_DeltaPos(HWND hwnd,WPARAM wParam,LPARAM lParam) 350 { 351 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 352 INT temp; 353 354 //if(lParam) UNKNOWN_PARAM(PBM_DELTAPOS, wParam, lParam); 355 temp = infoPtr->CurVal; 356 if (wParam != 0) 357 { 358 infoPtr->CurVal += (INT)wParam; 359 PROGRESS_CoercePos(hwnd); 360 PROGRESS_Update(hwnd,temp); 361 } 362 363 return temp; 364 } 365 366 static LRESULT PROGRESS_SetPos(HWND hwnd,WPARAM wParam,LPARAM lParam) 367 { 368 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 369 INT temp; 370 371 //if (lParam) UNKNOWN_PARAM(PBM_SETPOS, wParam, lParam); 372 temp = infoPtr->CurVal; 373 if (temp != wParam) 374 { 375 infoPtr->CurVal = (UINT16)wParam; //CB: 0..65535 allowed 376 PROGRESS_CoercePos(hwnd); 377 PROGRESS_Update(hwnd,temp); 378 } 379 380 return temp; 381 } 382 383 static LRESULT PROGRESS_SetRange(HWND hwnd,WPARAM wParam,LPARAM lParam) 384 { 385 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 386 INT temp; 387 388 //if (wParam) UNKNOWN_PARAM(PBM_SETRANGE, wParam, lParam); 389 temp = MAKELONG(infoPtr->MinVal,infoPtr->MaxVal); 390 if (temp != lParam) 391 { 392 infoPtr->MinVal = LOWORD(lParam); 393 infoPtr->MaxVal = HIWORD(lParam); 394 if (infoPtr->MaxVal <= infoPtr->MinVal) infoPtr->MaxVal = infoPtr->MinVal+1; 395 PROGRESS_CoercePos(hwnd); 396 PROGRESS_Refresh(hwnd); 397 } 398 399 return temp; 400 } 401 402 static LRESULT PROGRESS_SetStep(HWND hwnd,WPARAM wParam,LPARAM lParam) 403 { 404 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 405 INT temp; 406 407 //if (lParam) UNKNOWN_PARAM(PBM_SETSTEP, wParam, lParam); 408 temp = infoPtr->Step; 409 infoPtr->Step = (INT)wParam; //CB: negative steps allowed 410 411 return temp; 412 } 413 414 static LRESULT PROGRESS_StepIt(HWND hwnd,WPARAM wParam,LPARAM lParam) 415 { 416 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 417 INT temp; 418 419 //if (wParam || lParam) UNKNOWN_PARAM(PBM_STEPIT, wParam, lParam); 420 temp = infoPtr->CurVal; 421 infoPtr->CurVal += infoPtr->Step; 422 if(infoPtr->CurVal > infoPtr->MaxVal) infoPtr->CurVal = infoPtr->MinVal; 423 if(temp != infoPtr->CurVal) PROGRESS_Update (hwnd,temp); 424 425 return temp; 426 } 427 428 static LRESULT PROGRESS_SetRange32(HWND hwnd,WPARAM wParam,LPARAM lParam) 429 { 430 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 431 INT temp; 432 433 temp = MAKELONG(infoPtr->MinVal,infoPtr->MaxVal); 434 if((infoPtr->MinVal != (INT)wParam) || (infoPtr->MaxVal != (INT)lParam)) 435 { 436 infoPtr->MinVal = (INT)wParam; 437 infoPtr->MaxVal = (INT)lParam; 438 if(infoPtr->MaxVal <= infoPtr->MinVal) infoPtr->MaxVal = infoPtr->MinVal+1; 439 PROGRESS_CoercePos(hwnd); 440 PROGRESS_Refresh(hwnd); 441 } 442 443 return temp; 444 } 445 446 static LRESULT PROGRESS_GetRange(HWND hwnd,WPARAM wParam,LPARAM lParam) 447 { 448 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 449 450 if (lParam) 451 { 452 ((PPBRANGE)lParam)->iLow = infoPtr->MinVal; 453 ((PPBRANGE)lParam)->iHigh = infoPtr->MaxVal; 454 } 455 456 return (wParam) ? infoPtr->MinVal : infoPtr->MaxVal; 457 } 458 459 static LRESULT PROGRESS_GetPos(HWND hwnd,WPARAM wParam,LPARAM lParam) 460 { 461 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 462 463 //if (wParam || lParam) UNKNOWN_PARAM(PBM_STEPIT, wParam, lParam); 464 465 return (infoPtr->CurVal); 466 } 467 468 static LRESULT PROGRESS_SetBarColor(HWND hwnd,WPARAM wParam,LPARAM lParam) 469 { 470 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 471 COLORREF oldColorBar = infoPtr->ColorBar; 472 473 //if (wParam) UNKNOWN_PARAM(PBM_SETBARCOLOR, wParam, lParam); 474 infoPtr->ColorBar = (COLORREF)lParam; 475 if (infoPtr->ColorBar != oldColorBar) PROGRESS_Refresh(hwnd); 476 477 return 0; 478 } 479 480 static LRESULT PROGRESS_SetBkColor(HWND hwnd,WPARAM wParam,LPARAM lParam) 481 { 482 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 483 COLORREF oldColorBk = infoPtr->ColorBk; 484 485 //if (wParam) UNKNOWN_PARAM(PBM_SETBKCOLOR, wParam, lParam); 486 infoPtr->ColorBk = (COLORREF)lParam; 487 if (infoPtr->ColorBk != oldColorBk) PROGRESS_Refresh (hwnd); 488 489 return 0; 490 } 302 491 303 492 /*********************************************************************** … … 307 496 WPARAM wParam, LPARAM lParam) 308 497 { 309 PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd);310 INT temp;311 312 498 switch(message) 313 499 { 314 500 case WM_NCCREATE: 315 { 316 DWORD dwExStyle; 317 dwExStyle = GetWindowLongA(hwnd, GWL_EXSTYLE); 318 SetWindowLongA(hwnd, GWL_EXSTYLE, dwExStyle | WS_EX_STATICEDGE); 319 } 320 return TRUE; 501 return PROGRESS_NCCreate(hwnd,wParam,lParam); 321 502 322 503 case WM_CREATE: 323 /* allocate memory for info struct */ 324 infoPtr = 325 (PROGRESS_INFO *)COMCTL32_Alloc (sizeof(PROGRESS_INFO)); 326 SetWindowLongA(hwnd, 0, (DWORD)infoPtr); 327 328 /* initialize the info struct */ 329 infoPtr->MinVal=0; 330 infoPtr->MaxVal=100; 331 infoPtr->CurVal=0; 332 infoPtr->Step=10; 333 infoPtr->ColorBar=CLR_DEFAULT; 334 infoPtr->ColorBk=CLR_DEFAULT; 335 infoPtr->hFont=(HANDLE)NULL; 336 // TRACE(progress, "Progress Ctrl creation, hwnd=%04x\n", hwnd); 337 break; 504 return PROGRESS_Create(hwnd,wParam,lParam); 338 505 339 506 case WM_DESTROY: 340 // TRACE (progress, "Progress Ctrl destruction, hwnd=%04x\n", hwnd); 341 COMCTL32_Free (infoPtr); 342 break; 507 return PROGRESS_Destroy(hwnd,wParam,lParam); 343 508 344 509 case WM_ERASEBKGND: … … 348 513 349 514 case WM_GETFONT: 350 return (LRESULT)infoPtr->hFont;515 return PROGRESS_GetFont(hwnd,wParam,lParam); 351 516 352 517 case WM_SETFONT: 353 return PROGRESS_SetFont (hwnd, wParam,lParam);518 return PROGRESS_SetFont (hwnd,wParam,lParam); 354 519 355 520 case WM_PAINT: 356 PROGRESS_Paint 521 PROGRESS_Paint(hwnd); 357 522 break; 358 523 359 524 case PBM_DELTAPOS: 360 if(lParam) 361 UNKNOWN_PARAM(PBM_DELTAPOS, wParam, lParam); 362 temp = infoPtr->CurVal; 363 if(wParam != 0){ 364 infoPtr->CurVal += (INT)wParam; 365 PROGRESS_CoercePos (hwnd); 366 PROGRESS_Update (hwnd,temp); 367 } 368 return temp; 525 return PROGRESS_DeltaPos(hwnd,wParam,lParam); 369 526 370 527 case PBM_SETPOS: 371 if (lParam) 372 UNKNOWN_PARAM(PBM_SETPOS, wParam, lParam); 373 temp = infoPtr->CurVal; 374 if(temp != wParam){ 375 infoPtr->CurVal = (UINT16)wParam; //CB: 0..65535 allowed 376 PROGRESS_CoercePos(hwnd); 377 PROGRESS_Update (hwnd,temp); 378 } 379 return temp; 528 return PROGRESS_SetPos(hwnd,wParam,lParam); 380 529 381 530 case PBM_SETRANGE: 382 if (wParam) 383 UNKNOWN_PARAM(PBM_SETRANGE, wParam, lParam); 384 temp = MAKELONG(infoPtr->MinVal, infoPtr->MaxVal); 385 if(temp != lParam){ 386 infoPtr->MinVal = LOWORD(lParam); 387 infoPtr->MaxVal = HIWORD(lParam); 388 if(infoPtr->MaxVal <= infoPtr->MinVal) 389 infoPtr->MaxVal = infoPtr->MinVal+1; 390 PROGRESS_CoercePos(hwnd); 391 PROGRESS_Refresh (hwnd); 392 } 393 return temp; 531 return PROGRESS_SetRange(hwnd,wParam,lParam); 394 532 395 533 case PBM_SETSTEP: 396 if (lParam) 397 UNKNOWN_PARAM(PBM_SETSTEP, wParam, lParam); 398 temp = infoPtr->Step; 399 infoPtr->Step = (INT)wParam; //CB: negative steps allowed 400 return temp; 534 return PROGRESS_SetStep(hwnd,wParam,lParam); 401 535 402 536 case PBM_STEPIT: 403 if (wParam || lParam) 404 UNKNOWN_PARAM(PBM_STEPIT, wParam, lParam); 405 temp = infoPtr->CurVal; 406 infoPtr->CurVal += infoPtr->Step; 407 if(infoPtr->CurVal > infoPtr->MaxVal) 408 infoPtr->CurVal = infoPtr->MinVal; 409 if(temp != infoPtr->CurVal) 410 PROGRESS_Update (hwnd,temp); 411 return temp; 537 return PROGRESS_StepIt(hwnd,wParam,lParam); 412 538 413 539 case PBM_SETRANGE32: 414 temp = MAKELONG(infoPtr->MinVal, infoPtr->MaxVal); 415 if((infoPtr->MinVal != (INT)wParam) || 416 (infoPtr->MaxVal != (INT)lParam)) { 417 infoPtr->MinVal = (INT)wParam; 418 infoPtr->MaxVal = (INT)lParam; 419 if(infoPtr->MaxVal <= infoPtr->MinVal) 420 infoPtr->MaxVal = infoPtr->MinVal+1; 421 PROGRESS_CoercePos(hwnd); 422 PROGRESS_Refresh (hwnd); 423 } 424 return temp; 540 return PROGRESS_SetRange32(hwnd,wParam,lParam); 425 541 426 542 case PBM_GETRANGE: 427 if (lParam){ 428 ((PPBRANGE)lParam)->iLow = infoPtr->MinVal; 429 ((PPBRANGE)lParam)->iHigh = infoPtr->MaxVal; 430 } 431 return (wParam) ? infoPtr->MinVal : infoPtr->MaxVal; 543 return PROGRESS_GetRange(hwnd,wParam,lParam); 432 544 433 545 case PBM_GETPOS: 434 if (wParam || lParam) 435 UNKNOWN_PARAM(PBM_STEPIT, wParam, lParam); 436 return (infoPtr->CurVal); 546 return PROGRESS_GetPos(hwnd,wParam,lParam); 437 547 438 548 case PBM_SETBARCOLOR: 439 if (wParam) 440 UNKNOWN_PARAM(PBM_SETBARCOLOR, wParam, lParam); 441 infoPtr->ColorBar = (COLORREF)lParam; 442 PROGRESS_Refresh (hwnd); 443 break; 549 return PROGRESS_SetBarColor(hwnd,wParam,lParam); 444 550 445 551 case PBM_SETBKCOLOR: 446 if (wParam) 447 UNKNOWN_PARAM(PBM_SETBKCOLOR, wParam, lParam); 448 infoPtr->ColorBk = (COLORREF)lParam; 449 PROGRESS_Refresh (hwnd); 450 break; 552 return PROGRESS_SetBkColor(hwnd,wParam,lParam); 451 553 452 554 default:
Note:
See TracChangeset
for help on using the changeset viewer.