1 // Copyright (c) 1996-1999 Matra Datavision
2 // Copyright (c) 1999-2012 OPEN CASCADE SAS
4 // The content of this file is subject to the Open CASCADE Technology Public
5 // License Version 6.5 (the "License"). You may not use the content of this file
6 // except in compliance with the License. Please obtain a copy of the License
7 // at http://www.opencascade.org and read it completely before using this file.
9 // The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
10 // main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12 // The Original Code and all software distributed under the License is
13 // distributed on an "AS IS" basis, without warranty of any kind, and the
14 // Initial Developer hereby disclaims all such warranties, including without
15 // limitation, any warranties of merchantability, fitness for a particular
16 // purpose or non-infringement. Please see the License for the specific terms
17 // and conditions governing the rights and limitations under the License.
19 // include windows.h first to have all definitions available
22 #include <WNT_Window.hxx>
25 //*** This window procedure provides management of the window background. ***//
26 //*** Background belongs to the window class but we need that windows which ***//
27 //*** are based on the same class have different backgrounds. So, we are ***//
28 //*** using window subclassing technique to provide this ability. ***//
30 LRESULT CALLBACK WNT_WndProc (
31 HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam
41 wd = (WINDOW_DATA* )GetWindowLongPtr (hwnd, GWLP_USERDATA);
42 win = (WNT_Window* )wd->WNT_Window_Ptr;
43 lpfnWndProc = (WNDPROC )win->WndProc();
45 if ( msg == WM_ERASEBKGND && !( wd -> dwFlags & WDF_NOERASEBKGRND ) ) {
51 hOldPal = SelectPalette ( hDC, wd -> hPal, FALSE );
53 if ( RealizePalette ( hDC ) )
59 GetClipBox ( hDC, &invRect );
60 FillRect ( hDC, &invRect, ( HBRUSH )( win -> HBackground () ) );
64 SelectPalette ( hDC, hOldPal, FALSE );
68 } else if ( msg == WM_MOVE ) {
72 wp.length = sizeof ( WINDOWPLACEMENT );
73 GetWindowPlacement ( hwnd, &wp );
76 wp.rcNormalPosition.left, wp.rcNormalPosition.top,
77 wp.rcNormalPosition.right, wp.rcNormalPosition.bottom
82 return CallWindowProc ( lpfnWndProc, hwnd, msg, wParam, lParam );