wined3d: Don't unregister a window unless the window proc is what we expect it to be.
[wine] / programs / winhlp32 / callback.c
1 /*
2  * Help Viewer - DLL callback into WineHelp
3  *
4  * Copyright 2004 Eric Pouech
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
21 #define WIN32_LEAN_AND_MEAN
22
23 #include <stdio.h>
24
25 #include "windows.h"
26 #include "winhelp.h"
27
28 #include "wine/debug.h"
29
30 WINE_DEFAULT_DEBUG_CHANNEL(winhelp);
31
32 static WORD CALLBACK WHD_GetFSError(void)
33 {
34     WINE_FIXME("()\n");
35     return 0;
36 }
37
38 static HANDLE CALLBACK WHD_Open(LPSTR name, BYTE flags)
39 {
40     unsigned    mode = 0;
41
42     WINE_FIXME("(%s %x)\n", wine_dbgstr_a(name), flags);
43     switch (flags)
44     {
45     case 0: mode = GENERIC_READ | GENERIC_WRITE; break;
46     case 2: mode = GENERIC_READ; break;
47     default: WINE_FIXME("Undocumented flags %x\n", flags);
48     }
49     return CreateFile(name, mode, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
50                       OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
51 }
52
53 static WORD CALLBACK WHD_Close(HANDLE fs)
54 {
55     WINE_FIXME("(%p)\n", fs);
56     CloseHandle(fs);
57     return 0;
58 }
59
60 static HANDLE CALLBACK WHD_OpenBag(HANDLE fs, LPSTR name, BYTE flags)
61 {
62     WINE_FIXME("(%p %s %x)\n", fs, name, flags);
63     return NULL;
64 }
65
66 static HANDLE CALLBACK WHD_CloseBag(HANDLE bag)
67 {
68     WINE_FIXME("()\n");
69     return NULL;
70 }
71
72 static LONG CALLBACK WHD_ReadBag(HANDLE bag, BYTE* ptr, LONG len)
73 {
74     WINE_FIXME("()\n");
75     return 0;
76 }
77
78 static LONG CALLBACK WHD_TellBag(HANDLE bag)
79 {
80     WINE_FIXME("()\n");
81     return 0;
82 }
83
84 static LONG CALLBACK WHD_SeekBag(HANDLE bag, LONG offset, WORD whence)
85 {
86     WINE_FIXME("()\n");
87     return 0;
88 }
89
90 static BOOL CALLBACK WHD_IsEofBag(HANDLE bag)
91 {
92     WINE_FIXME("()\n");
93     return FALSE;
94 }
95
96 static LONG CALLBACK WHD_SizeBag(HANDLE bag)
97 {
98     WINE_FIXME("()\n");
99     return 0;
100 }
101
102 static BOOL CALLBACK WHD_Access(HANDLE fs, LPSTR name, BYTE flags)
103 {
104     WINE_FIXME("()\n");
105     return FALSE;
106 }
107
108 static WORD CALLBACK WHD_LLInfoFromBag(HANDLE bag, WORD opt, LPWORD p1, LPLONG p2, LPLONG p3)
109 {
110     WINE_FIXME("()\n");
111     return 0;
112 }
113
114 static WORD CALLBACK WHD_LLInfoFromFile(HANDLE fs, LPSTR name, WORD opt, LPWORD p1, LPLONG p2, LPLONG p3)
115 {
116     WINE_FIXME("()\n");
117     return 0;
118 }
119
120 static void CALLBACK WHD_Error(int err)
121 {
122     WINE_FIXME("()\n");
123 }
124
125 static void CALLBACK WHD_ErrorString(LPSTR err)
126 {
127     WINE_FIXME("()\n");
128 }
129
130 static ULONG_PTR CALLBACK WHD_GetInfo(WORD what, HWND hnd)
131 {
132     ULONG_PTR ret = 0;
133
134     WINE_TRACE("(%x %p)\n", what, hnd);
135     switch (what)
136     {
137     case 0: break;
138     case 1: /* instance */ ret = (ULONG_PTR)Globals.hInstance; break;
139     case 3: /* current window */ ret = (ULONG_PTR)Globals.active_win->hMainWnd; break;
140     case 2: /* main window */
141     case 4: /* handle to opened file */
142     case 5: /* foreground color */
143     case 6: /* background color */
144     case 7: /* topic number */
145     case 8: /* current opened file name */
146         WINE_FIXME("NIY %u\n", what);
147         break;
148     default:
149         WINE_FIXME("Undocumented %u\n", what);
150         break;
151     }
152     return ret;
153 }
154
155 static LONG CALLBACK WHD_API(LPSTR x, WORD xx, DWORD xxx)
156 {
157     WINE_FIXME("()\n");
158     return 0;
159 }
160
161 const struct winhelp_callbacks Callbacks =
162 {
163     WHD_GetFSError,
164     WHD_Open,
165     WHD_Close,
166     WHD_OpenBag,
167     WHD_CloseBag,
168     WHD_ReadBag,
169     WHD_TellBag,
170     WHD_SeekBag,
171     WHD_IsEofBag,
172     WHD_SizeBag,
173     WHD_Access,
174     WHD_LLInfoFromBag,
175     WHD_LLInfoFromFile,
176     WHD_Error,
177     WHD_ErrorString,
178     WHD_GetInfo,
179     WHD_API
180 };