1 /* 2 * Native Font control 3 * 4 * Copyright 1998, 1999 Eric Kohl 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 * 20 * NOTES 21 * This is just a dummy control. An author is needed! Any volunteers? 22 * I will only improve this control once in a while. 23 * Eric <ekohl@abo.rhein-zeitung.de> 24 * 25 * TODO: 26 * - All messages. 27 * - All notifications. 28 */ 29 30 #include <stdarg.h> 31 32 #include "windef.h" 33 #include "winbase.h" 34 #include "wingdi.h" 35 #include "winuser.h" 36 #include "commctrl.h" 37 #include "comctl32.h" 38 #include "wine/debug.h" 39 40 WINE_DEFAULT_DEBUG_CHANNEL(nativefont); 41 42 typedef struct 43 { 44 HWND hwndSelf; /* my own handle */ 45 } NATIVEFONT_INFO; 46 47 #define NATIVEFONT_GetInfoPtr(hwnd) ((NATIVEFONT_INFO *)GetWindowLongPtrW (hwnd, 0)) 48 49 static LRESULT 50 NATIVEFONT_Create (HWND hwnd) 51 { 52 NATIVEFONT_INFO *infoPtr; 53 54 /* allocate memory for info structure */ 55 infoPtr = Alloc (sizeof(NATIVEFONT_INFO)); 56 SetWindowLongPtrW (hwnd, 0, (DWORD_PTR)infoPtr); 57 58 /* initialize info structure */ 59 infoPtr->hwndSelf = hwnd; 60 61 return 0; 62 } 63 64 static LRESULT 65 NATIVEFONT_Destroy (NATIVEFONT_INFO *infoPtr) 66 { 67 /* free control info data */ 68 SetWindowLongPtrW( infoPtr->hwndSelf, 0, 0 ); 69 Free (infoPtr); 70 71 return 0; 72 } 73 74 static LRESULT WINAPI 75 NATIVEFONT_WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 76 { 77 NATIVEFONT_INFO *infoPtr = NATIVEFONT_GetInfoPtr(hwnd); 78 79 TRACE("hwnd=%p msg=%04x wparam=%08lx lparam=%08lx\n", 80 hwnd, uMsg, wParam, lParam); 81 82 if (!infoPtr && (uMsg != WM_CREATE)) 83 return DefWindowProcW( hwnd, uMsg, wParam, lParam ); 84 85 switch (uMsg) 86 { 87 case WM_CREATE: 88 return NATIVEFONT_Create (hwnd); 89 90 case WM_DESTROY: 91 return NATIVEFONT_Destroy (infoPtr); 92 93 case WM_MOVE: 94 case WM_SIZE: 95 case WM_SHOWWINDOW: 96 case WM_WINDOWPOSCHANGING: 97 case WM_WINDOWPOSCHANGED: 98 case WM_SETFONT: 99 case WM_GETDLGCODE: 100 /* FIXME("message %04x seen but stubbed\n", uMsg); */ 101 return DefWindowProcW (hwnd, uMsg, wParam, lParam); 102 103 default: 104 if ((uMsg >= WM_USER) && (uMsg < WM_APP) && !COMCTL32_IsReflectedMessage(uMsg)) 105 ERR("unknown msg %04x wp=%08lx lp=%08lx\n", 106 uMsg, wParam, lParam); 107 return DefWindowProcW (hwnd, uMsg, wParam, lParam); 108 } 109 } 110 111 112 VOID 113 NATIVEFONT_Register (void) 114 { 115 WNDCLASSW wndClass; 116 117 ZeroMemory (&wndClass, sizeof(WNDCLASSW)); 118 wndClass.style = CS_GLOBALCLASS; 119 wndClass.lpfnWndProc = NATIVEFONT_WindowProc; 120 wndClass.cbClsExtra = 0; 121 wndClass.cbWndExtra = sizeof(NATIVEFONT_INFO *); 122 wndClass.hCursor = LoadCursorW (0, (LPWSTR)IDC_ARROW); 123 wndClass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); 124 wndClass.lpszClassName = WC_NATIVEFONTCTLW; 125 126 RegisterClassW (&wndClass); 127 } 128 129 130 VOID 131 NATIVEFONT_Unregister (void) 132 { 133 UnregisterClassW (WC_NATIVEFONTCTLW, NULL); 134 } 135