1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef _UNOCONTROLS_PROGRESSMONITOR_CTRL_HXX 29 #define _UNOCONTROLS_PROGRESSMONITOR_CTRL_HXX 30 31 //____________________________________________________________________________________________________________ 32 // includes of other projects 33 //____________________________________________________________________________________________________________ 34 35 #include <com/sun/star/awt/XFileDialog.hpp> 36 #include <com/sun/star/awt/XTextComponent.hpp> 37 #include <com/sun/star/awt/XListBox.hpp> 38 #include <com/sun/star/awt/XProgressMonitor.hpp> 39 #include <com/sun/star/awt/TextAlign.hpp> 40 #include <com/sun/star/awt/XScrollBar.hpp> 41 #include <com/sun/star/awt/XVclContainerPeer.hpp> 42 #include <com/sun/star/awt/XTabControllerModel.hpp> 43 #include <com/sun/star/awt/XMessageBox.hpp> 44 #include <com/sun/star/awt/XTextEditField.hpp> 45 #include <com/sun/star/awt/Style.hpp> 46 #include <com/sun/star/awt/XTimeField.hpp> 47 #include <com/sun/star/awt/XVclWindowPeer.hpp> 48 #include <com/sun/star/awt/XControlModel.hpp> 49 #include <com/sun/star/awt/XSpinField.hpp> 50 #include <com/sun/star/awt/XUnoControlContainer.hpp> 51 #include <com/sun/star/awt/XTextLayoutConstrains.hpp> 52 #include <com/sun/star/awt/XNumericField.hpp> 53 #include <com/sun/star/awt/XButton.hpp> 54 #include <com/sun/star/awt/XTextArea.hpp> 55 #include <com/sun/star/awt/XImageButton.hpp> 56 #include <com/sun/star/awt/XFixedText.hpp> 57 #include <com/sun/star/awt/XControlContainer.hpp> 58 #include <com/sun/star/awt/XDialog.hpp> 59 #include <com/sun/star/awt/ScrollBarOrientation.hpp> 60 #include <com/sun/star/awt/XRadioButton.hpp> 61 #include <com/sun/star/awt/XCurrencyField.hpp> 62 #include <com/sun/star/awt/XPatternField.hpp> 63 #include <com/sun/star/awt/VclWindowPeerAttribute.hpp> 64 #include <com/sun/star/awt/XTabController.hpp> 65 #include <com/sun/star/awt/XVclContainer.hpp> 66 #include <com/sun/star/awt/XDateField.hpp> 67 #include <com/sun/star/awt/XComboBox.hpp> 68 #include <com/sun/star/awt/XControl.hpp> 69 #include <com/sun/star/awt/XCheckBox.hpp> 70 #include <com/sun/star/awt/MessageBoxCommand.hpp> 71 #include <com/sun/star/awt/XLayoutConstrains.hpp> 72 #include <com/sun/star/awt/XProgressBar.hpp> 73 74 //____________________________________________________________________________________________________________ 75 // includes of my own project 76 //____________________________________________________________________________________________________________ 77 #include "basecontainercontrol.hxx" 78 79 //____________________________________________________________________________________________________________ 80 // namespace 81 //____________________________________________________________________________________________________________ 82 83 namespace unocontrols{ 84 85 #define UNO3_ANY ::com::sun::star::uno::Any 86 #define UNO3_OUSTRING ::rtl::OUString 87 #define UNO3_RECTANGLE ::com::sun::star::awt::Rectangle 88 #define UNO3_REFERENCE ::com::sun::star::uno::Reference 89 #define UNO3_RUNTIMEEXCEPTION ::com::sun::star::uno::RuntimeException 90 #define UNO3_SEQUENCE ::com::sun::star::uno::Sequence 91 #define UNO3_SIZE ::com::sun::star::awt::Size 92 #define UNO3_TYPE ::com::sun::star::uno::Type 93 #define UNO3_XACTIONLISTENER ::com::sun::star::awt::XActionListener 94 #define UNO3_XBUTTON ::com::sun::star::awt::XButton 95 #define UNO3_XCONTROLMODEL ::com::sun::star::awt::XControlModel 96 #define UNO3_XFIXEDTEXT ::com::sun::star::awt::XFixedText 97 #define UNO3_XGRAPHICS ::com::sun::star::awt::XGraphics 98 #define UNO3_XLAYOUTCONSTRAINS ::com::sun::star::awt::XLayoutConstrains 99 #define UNO3_XMULTISERVICEFACTORY ::com::sun::star::lang::XMultiServiceFactory 100 #define UNO3_XPROGRESSBAR ::com::sun::star::awt::XProgressBar 101 #define UNO3_XPROGRESSMONITOR ::com::sun::star::awt::XProgressMonitor 102 #define UNO3_XTOOLKIT ::com::sun::star::awt::XToolkit 103 #define UNO3_XWINDOWPEER ::com::sun::star::awt::XWindowPeer 104 105 //____________________________________________________________________________________________________________ 106 // defines 107 //____________________________________________________________________________________________________________ 108 109 #define SERVICENAME_PROGRESSMONITOR "com.sun.star.awt.XProgressMonitor" 110 #define IMPLEMENTATIONNAME_PROGRESSMONITOR "stardiv.UnoControls.ProgressMonitor" 111 #define FREEBORDER 10 // border around and between the controls 112 #define WIDTH_RELATION 4 // reserve 1/4 for button width and rest for progressbar width 113 #define HEIGHT_RELATION 5 // reserve 1/5 for button and progressbar heigth and rest for text height 114 #define FIXEDTEXT_SERVICENAME "com.sun.star.awt.UnoControlFixedText" 115 #define BUTTON_SERVICENAME "com.sun.star.awt.UnoControlButton" 116 #define FIXEDTEXT_MODELNAME "com.sun.star.awt.UnoControlFixedTextModel" 117 #define BUTTON_MODELNAME "com.sun.star.awt.UnoControlButtonModel" 118 #define CONTROLNAME_TEXT "Text" // identifier the control in container 119 #define CONTROLNAME_BUTTON "Button" // -||- 120 #define CONTROLNAME_PROGRESSBAR "ProgressBar" // -||- 121 #define DEFAULT_BUTTONLABEL "Abbrechen" 122 #define DEFAULT_TOPIC "\0" 123 #define DEFAULT_TEXT "\0" 124 #define BACKGROUNDCOLOR TRGB_COLORDATA( 0x00, 0xC0, 0xC0, 0xC0 ) // lighgray 125 #define LINECOLOR_BRIGHT TRGB_COLORDATA( 0x00, 0xFF, 0xFF, 0xFF ) // white 126 #define LINECOLOR_SHADOW TRGB_COLORDATA( 0x00, 0x00, 0x00, 0x00 ) // black 127 #define HEIGHT_PROGRESSBAR 15 128 // Overwrite defines from basecontrol.hxx!!! 129 #undef DEFAULT_WIDTH 130 #undef DEFAULT_HEIGHT 131 #define DEFAULT_WIDTH 350 132 #define DEFAULT_HEIGHT 100 133 134 //____________________________________________________________________________________________________________ 135 // structs, types 136 //____________________________________________________________________________________________________________ 137 138 /// Item of TextList 139 struct IMPL_TextlistItem 140 { 141 UNO3_OUSTRING sTopic ; /// Left site of textline in dialog 142 UNO3_OUSTRING sText ; /// Right site of textline in dialog 143 }; 144 145 /// Define a list-class for struct IMPL_TextlistItem 146 class IMPL_Textlist ; 147 DECLARE_LIST( IMPL_Textlist, IMPL_TextlistItem* ) 148 149 //____________________________________________________________________________________________________________ 150 // class declaration 151 //____________________________________________________________________________________________________________ 152 153 class ProgressMonitor : public UNO3_XLAYOUTCONSTRAINS 154 , public UNO3_XBUTTON 155 , public UNO3_XPROGRESSMONITOR 156 , public BaseContainerControl 157 { 158 159 //____________________________________________________________________________________________________________ 160 // public methods 161 //____________________________________________________________________________________________________________ 162 163 public: 164 165 //________________________________________________________________________________________________________ 166 // construct/destruct 167 //________________________________________________________________________________________________________ 168 169 /**_______________________________________________________________________________________________________ 170 @short 171 @descr 172 173 @seealso 174 175 @param 176 177 @return 178 179 @onerror 180 */ 181 182 ProgressMonitor( const UNO3_REFERENCE< UNO3_XMULTISERVICEFACTORY >& xFactory ); 183 184 /**_______________________________________________________________________________________________________ 185 @short 186 @descr 187 188 @seealso 189 190 @param 191 192 @return 193 194 @onerror 195 */ 196 197 virtual ~ProgressMonitor(); 198 199 //________________________________________________________________________________________________________ 200 // XInterface 201 //________________________________________________________________________________________________________ 202 203 /**_______________________________________________________________________________________________________ 204 @short give answer, if interface is supported 205 @descr The interfaces are searched by type. 206 207 @seealso XInterface 208 209 @param "rType" is the type of searched interface. 210 211 @return Any information about found interface 212 213 @onerror A RuntimeException is thrown. 214 */ 215 216 virtual UNO3_ANY SAL_CALL queryInterface( const UNO3_TYPE& aType ) throw( UNO3_RUNTIMEEXCEPTION ); 217 218 /**_______________________________________________________________________________________________________ 219 @short increment refcount 220 @descr - 221 222 @seealso XInterface 223 @seealso release() 224 225 @param - 226 227 @return - 228 229 @onerror A RuntimeException is thrown. 230 */ 231 232 virtual void SAL_CALL acquire() throw(); 233 234 /**_______________________________________________________________________________________________________ 235 @short decrement refcount 236 @descr - 237 238 @seealso XInterface 239 @seealso acquire() 240 241 @param - 242 243 @return - 244 245 @onerror A RuntimeException is thrown. 246 */ 247 248 virtual void SAL_CALL release() throw(); 249 250 //________________________________________________________________________________________________________ 251 // XTypeProvider 252 //________________________________________________________________________________________________________ 253 254 /**_______________________________________________________________________________________________________ 255 @short get information about supported interfaces 256 @descr - 257 258 @seealso XTypeProvider 259 260 @param - 261 262 @return Sequence of types of all supported interfaces 263 264 @onerror A RuntimeException is thrown. 265 */ 266 267 virtual UNO3_SEQUENCE< UNO3_TYPE > SAL_CALL getTypes() throw( UNO3_RUNTIMEEXCEPTION ); 268 269 //________________________________________________________________________________________________________ 270 // XAggregation 271 //________________________________________________________________________________________________________ 272 273 /**_______________________________________________________________________________________________________ 274 @short - 275 @descr - 276 277 @seealso - 278 279 @param - 280 281 @return - 282 283 @onerror - 284 */ 285 286 virtual UNO3_ANY SAL_CALL queryAggregation( const UNO3_TYPE& aType ) throw( UNO3_RUNTIMEEXCEPTION ); 287 288 //________________________________________________________________________________________________________ 289 // XProgressMonitor 290 //________________________________________________________________________________________________________ 291 292 /**_______________________________________________________________________________________________________ 293 @short add topic to dialog 294 @descr Add a topic with a text in right textlist (used for FixedText-member).<BR> 295 ( "beforeProgress" fix the right list ). The dialog metric is recalculated. 296 297 @seealso removeText(), updateText() 298 299 @param sTopic Name of topic<BR> 300 [sTopic != "" && sTopic != NULL] 301 @param sText Value of topic<BR> 302 [sText != "" && sText != NULL] 303 @param bbeforeProgress Position of topic<BR> 304 [True => before progressbar / False => below progressbar] 305 306 @return - 307 308 @onerror DEBUG = Assertion<BR> 309 RELEASE = nothing 310 */ 311 312 virtual void SAL_CALL addText( const UNO3_OUSTRING& sTopic , 313 const UNO3_OUSTRING& sText , 314 sal_Bool bbeforeProgress ) throw( UNO3_RUNTIMEEXCEPTION ); 315 316 /**_______________________________________________________________________________________________________ 317 @short - 318 @descr - 319 320 @seealso - 321 322 @param - 323 324 @return - 325 326 @onerror - 327 */ 328 329 virtual void SAL_CALL removeText( const UNO3_OUSTRING& sTopic , 330 sal_Bool bbeforeProgress ) throw( UNO3_RUNTIMEEXCEPTION ); 331 332 /**_______________________________________________________________________________________________________ 333 @short - 334 @descr - 335 336 @seealso - 337 338 @param - 339 340 @return - 341 342 @onerror - 343 */ 344 345 virtual void SAL_CALL updateText( const UNO3_OUSTRING& sTopic , 346 const UNO3_OUSTRING& sText , 347 sal_Bool bbeforeProgress ) throw( UNO3_RUNTIMEEXCEPTION ); 348 349 //________________________________________________________________________________________________________ 350 // XProgressBar 351 //________________________________________________________________________________________________________ 352 353 /**_______________________________________________________________________________________________________ 354 @short - 355 @descr - 356 357 @seealso - 358 359 @param - 360 361 @return - 362 363 @onerror - 364 */ 365 366 virtual void SAL_CALL setForegroundColor( sal_Int32 nColor ) throw( UNO3_RUNTIMEEXCEPTION ); 367 368 /**_______________________________________________________________________________________________________ 369 @short - 370 @descr - 371 372 @seealso - 373 374 @param - 375 376 @return - 377 378 @onerror - 379 */ 380 381 virtual void SAL_CALL setBackgroundColor( sal_Int32 nColor ) throw( UNO3_RUNTIMEEXCEPTION ); 382 383 /**_______________________________________________________________________________________________________ 384 @short - 385 @descr - 386 387 @seealso - 388 389 @param - 390 391 @return - 392 393 @onerror - 394 */ 395 396 virtual void SAL_CALL setValue( sal_Int32 nValue ) throw( UNO3_RUNTIMEEXCEPTION ); 397 398 /**_______________________________________________________________________________________________________ 399 @short - 400 @descr - 401 402 @seealso - 403 404 @param - 405 406 @return - 407 408 @onerror - 409 */ 410 411 virtual void SAL_CALL setRange( sal_Int32 nMin , 412 sal_Int32 nMax ) throw( UNO3_RUNTIMEEXCEPTION ); 413 414 /**_______________________________________________________________________________________________________ 415 @short - 416 @descr - 417 418 @seealso - 419 420 @param - 421 422 @return - 423 424 @onerror - 425 */ 426 427 virtual sal_Int32 SAL_CALL getValue() throw( UNO3_RUNTIMEEXCEPTION ); 428 429 //________________________________________________________________________________________________________ 430 // XButton 431 //________________________________________________________________________________________________________ 432 433 /**_______________________________________________________________________________________________________ 434 @short - 435 @descr - 436 437 @seealso - 438 439 @param - 440 441 @return - 442 443 @onerror - 444 */ 445 446 virtual void SAL_CALL addActionListener( const UNO3_REFERENCE< UNO3_XACTIONLISTENER >& xListener ) throw( UNO3_RUNTIMEEXCEPTION ); 447 448 /**_______________________________________________________________________________________________________ 449 @short - 450 @descr - 451 452 @seealso - 453 454 @param - 455 456 @return - 457 458 @onerror - 459 */ 460 461 virtual void SAL_CALL removeActionListener( const UNO3_REFERENCE< UNO3_XACTIONLISTENER >& xListener ) throw( UNO3_RUNTIMEEXCEPTION ); 462 463 /**_______________________________________________________________________________________________________ 464 @short - 465 @descr - 466 467 @seealso - 468 469 @param - 470 471 @return - 472 473 @onerror - 474 */ 475 476 virtual void SAL_CALL setLabel( const UNO3_OUSTRING& sLabel ) throw( UNO3_RUNTIMEEXCEPTION ); 477 478 /**_______________________________________________________________________________________________________ 479 @short - 480 @descr - 481 482 @seealso - 483 484 @param - 485 486 @return - 487 488 @onerror - 489 */ 490 491 virtual void SAL_CALL setActionCommand( const UNO3_OUSTRING& sCommand ) throw( UNO3_RUNTIMEEXCEPTION ); 492 493 //________________________________________________________________________________________________________ 494 // XLayoutConstrains 495 //________________________________________________________________________________________________________ 496 497 /**_______________________________________________________________________________________________________ 498 @short - 499 @descr - 500 501 @seealso - 502 503 @param - 504 505 @return - 506 507 @onerror - 508 */ 509 510 virtual UNO3_SIZE SAL_CALL getMinimumSize() throw( UNO3_RUNTIMEEXCEPTION ); 511 512 /**_______________________________________________________________________________________________________ 513 @short - 514 @descr - 515 516 @seealso - 517 518 @param - 519 520 @return - 521 522 @onerror - 523 */ 524 525 virtual UNO3_SIZE SAL_CALL getPreferredSize() throw( UNO3_RUNTIMEEXCEPTION ); 526 527 /**_______________________________________________________________________________________________________ 528 @short - 529 @descr - 530 531 @seealso - 532 533 @param - 534 535 @return - 536 537 @onerror - 538 */ 539 540 virtual UNO3_SIZE SAL_CALL calcAdjustedSize( const UNO3_SIZE& aNewSize ) throw( UNO3_RUNTIMEEXCEPTION ); 541 542 //________________________________________________________________________________________________________ 543 // XControl 544 //________________________________________________________________________________________________________ 545 546 /**_______________________________________________________________________________________________________ 547 @short - 548 @descr - 549 550 @seealso - 551 552 @param - 553 554 @return - 555 556 @onerror - 557 */ 558 559 virtual void SAL_CALL createPeer( const UNO3_REFERENCE< UNO3_XTOOLKIT >& xToolkit , 560 const UNO3_REFERENCE< UNO3_XWINDOWPEER >& xParent ) throw( UNO3_RUNTIMEEXCEPTION ); 561 562 /**_______________________________________________________________________________________________________ 563 @short - 564 @descr - 565 566 @seealso - 567 568 @param - 569 570 @return - 571 572 @onerror - 573 */ 574 575 virtual sal_Bool SAL_CALL setModel( const UNO3_REFERENCE< UNO3_XCONTROLMODEL >& xModel ) throw( UNO3_RUNTIMEEXCEPTION ); 576 577 /**_______________________________________________________________________________________________________ 578 @short - 579 @descr - 580 581 @seealso - 582 583 @param - 584 585 @return - 586 587 @onerror - 588 */ 589 590 virtual UNO3_REFERENCE< UNO3_XCONTROLMODEL > SAL_CALL getModel() throw( UNO3_RUNTIMEEXCEPTION ); 591 592 //________________________________________________________________________________________________________ 593 // XComponent 594 //________________________________________________________________________________________________________ 595 596 /**_______________________________________________________________________________________________________ 597 @short - 598 @descr - 599 600 @seealso - 601 602 @param - 603 604 @return - 605 606 @onerror - 607 */ 608 609 virtual void SAL_CALL dispose() throw( UNO3_RUNTIMEEXCEPTION ); 610 611 //________________________________________________________________________________________________________ 612 // XWindow 613 //________________________________________________________________________________________________________ 614 615 /**_______________________________________________________________________________________________________ 616 @short - 617 @descr - 618 619 @seealso - 620 621 @param - 622 623 @return - 624 625 @onerror - 626 */ 627 628 virtual void SAL_CALL setPosSize( sal_Int32 nX , 629 sal_Int32 nY , 630 sal_Int32 nWidth , 631 sal_Int32 nHeight , 632 sal_Int16 nFlags ) throw( UNO3_RUNTIMEEXCEPTION ); 633 634 //________________________________________________________________________________________________________ 635 // BaseControl 636 //________________________________________________________________________________________________________ 637 638 /**_______________________________________________________________________________________________________ 639 @short - 640 @descr - 641 642 @seealso - 643 644 @param - 645 646 @return - 647 648 @onerror - 649 */ 650 651 static const UNO3_SEQUENCE< UNO3_OUSTRING > impl_getStaticSupportedServiceNames(); 652 653 /**_______________________________________________________________________________________________________ 654 @short - 655 @descr - 656 657 @seealso - 658 659 @param - 660 661 @return - 662 663 @onerror - 664 */ 665 666 static const UNO3_OUSTRING impl_getStaticImplementationName(); 667 668 //____________________________________________________________________________________________________________ 669 // protected methods 670 //____________________________________________________________________________________________________________ 671 672 protected: 673 674 /**_______________________________________________________________________________________________________ 675 @short - 676 @descr - 677 678 @seealso - 679 680 @param - 681 682 @return - 683 684 @onerror - 685 */ 686 687 virtual void impl_paint( sal_Int32 nX , 688 sal_Int32 nY , 689 const UNO3_REFERENCE< UNO3_XGRAPHICS >& xGraphics ); 690 691 //____________________________________________________________________________________________________________ 692 // private methods 693 //____________________________________________________________________________________________________________ 694 695 private: 696 using BaseControl::impl_recalcLayout; 697 /**_______________________________________________________________________________________________________ 698 @short - 699 @descr - 700 701 @seealso - 702 703 @param - 704 705 @return - 706 707 @onerror - 708 */ 709 710 void impl_recalcLayout(); 711 712 /**_______________________________________________________________________________________________________ 713 @short - 714 @descr - 715 716 @seealso - 717 718 @param - 719 720 @return - 721 722 @onerror - 723 */ 724 725 void impl_rebuildFixedText(); 726 727 /**_______________________________________________________________________________________________________ 728 @short - 729 @descr - 730 731 @seealso - 732 733 @param - 734 735 @return - 736 737 @onerror - 738 */ 739 740 void impl_cleanMemory(); 741 742 /**_______________________________________________________________________________________________________ 743 @short - 744 @descr - 745 746 @seealso - 747 748 @param - 749 750 @return - 751 752 @onerror - 753 */ 754 755 IMPL_TextlistItem* impl_searchTopic( const UNO3_OUSTRING& sTopic , 756 sal_Bool bbeforeProgress ); 757 758 //____________________________________________________________________________________________________________ 759 // debug methods 760 //____________________________________________________________________________________________________________ 761 762 private: 763 764 /**_______________________________________________________________________________________________________ 765 @short - 766 @descr - 767 768 @seealso - 769 770 @param - 771 772 @return - 773 774 @onerror - 775 */ 776 777 #ifdef DBG_UTIL 778 779 sal_Bool impl_debug_checkParameter( const UNO3_OUSTRING& sTopic, const UNO3_OUSTRING& sText, sal_Bool bbeforeProgress ); // addText, updateText 780 sal_Bool impl_debug_checkParameter( const UNO3_OUSTRING& rTopic, sal_Bool bbeforeProgress ); // removeText 781 782 #endif 783 //____________________________________________________________________________________________________________ 784 // private variables 785 //____________________________________________________________________________________________________________ 786 787 private: 788 789 IMPL_Textlist* m_pTextlist_Top ; // Elements before progress 790 UNO3_REFERENCE< UNO3_XFIXEDTEXT > m_xTopic_Top ; // (used, if parameter "beforeProgress"=sal_True in "addText, updateText, removeText") 791 UNO3_REFERENCE< UNO3_XFIXEDTEXT > m_xText_Top ; 792 793 IMPL_Textlist* m_pTextlist_Bottom ; // Elements below of progress 794 UNO3_REFERENCE< UNO3_XFIXEDTEXT > m_xTopic_Bottom ; // (used, if parameter "beforeProgress"=sal_False in "addText, updateText, removeText") 795 UNO3_REFERENCE< UNO3_XFIXEDTEXT > m_xText_Bottom ; 796 797 UNO3_REFERENCE< UNO3_XPROGRESSBAR > m_xProgressBar ; 798 UNO3_REFERENCE< UNO3_XBUTTON > m_xButton ; 799 UNO3_RECTANGLE m_a3DLine ; 800 801 }; // class ProgressMonitor 802 803 } // namespace unocontrols 804 805 #endif // #ifndef _UNOCONTROLS_PROGRESSMONITOR_CTRL_HXX 806