1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
|
#ifndef NULLSOFT_WINAMP_OMBROWSER_TOOLBAR_HEADER
#define NULLSOFT_WINAMP_OMBROWSER_TOOLBAR_HEADER
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif
#include <wtypes.h>
// registered classes
#define TOOLCLS_STATIC "static"
#define TOOLCLS_BUTTON "button"
#define TOOLCLS_RATING "rating"
#define TOOLCLS_PROGRESS "progress"
#define TOOLCLS_ADDRESSBAR "addressbar"
#define TOOLITEM_SEPARATOR "separator"
#define TOOLITEM_SPACE "space"
#define TOOLITEM_FLEXSPACE "spaceFlexible"
#define TOOLITEM_CHEVRON "chevron"
#define TOOLITEM_BUTTON_HOME (TOOLCLS_BUTTON "Home")
#define TOOLITEM_BUTTON_BACK (TOOLCLS_BUTTON "Back")
#define TOOLITEM_BUTTON_FORWARD (TOOLCLS_BUTTON "Forward")
#define TOOLITEM_BUTTON_STOP (TOOLCLS_BUTTON "Stop")
#define TOOLITEM_BUTTON_REFRESH (TOOLCLS_BUTTON "Refresh")
#define TOOLITEM_BUTTON_HISTORY (TOOLCLS_BUTTON "History")
#define TOOLITEM_CMDLINK_INFO (TOOLCLS_BUTTON "Info")
#define TOOLITEM_CMDLINK_REPORT (TOOLCLS_BUTTON "Report")
#define TOOLITEM_CMDLINK_UNSUBSCRIBE (TOOLCLS_BUTTON "Unsubscribe")
#define TOOLITEM_USERRATING (TOOLCLS_RATING "User")
#define TOOLITEM_DOWNLOADPROGRESS (TOOLCLS_PROGRESS "Download")
#define TOOLITEM_ADDRESSBAR (TOOLCLS_ADDRESSBAR "Main")
#define TOOLITEM_BUTTON_SCRIPTERROR (TOOLCLS_BUTTON "ScriptError")
#define TOOLITEM_BUTTON_SECURECONNECTION (TOOLCLS_BUTTON "SecureConnection")
#define NWC_ONLINEMEDIATOOLBAR L"Nullsoft_omBrowserToolbar"
BOOL Toolbar_RegisterClass(HINSTANCE hInstance);
#define ITEM_ERR ((INT)-1)
// styles
#define TBS_LOCKUPDATE 0x00000001 // do not reset directly use Toolbar_LockUpdate().
#define TBS_AUTOHIDE 0x00000002
#define TBS_BOTTOMDOCK 0x00000004
#define TBS_TABSTOP 0x00000008
#define TBS_SHOWADDRESS 0x00000010
#define TBS_FORCEADDRESS 0x00000020
#define TBS_FANCYADDRESS 0x00000040
// item styles
#define TBIS_HIDDEN 0x0001
#define TBIS_DISABLED 0x0002
#define TBIS_CHEVRONONLY 0x0004 // show item only in chevron
#define TBIS_NOCHEVRON 0x0008 // show item in toolbar and ignore in chevron
#define TBIS_POPUP 0x0010 // item only take space when visible
// messages
#define TBM_FIRST (WM_USER + 10)
#define TBM_UPDATESKIN (TBM_FIRST + 0) //wParam = not used, lParam = (LPARAM)(BOOL)fRedraw.
#define Toolbar_UpdateSkin(/*HWND*/ __hToolbar, /*BOOL*/ __fRedraw)\
(SENDMSG(__hToolbar, TBM_UPDATESKIN, 0, (LPARAM)(__fRedraw)))
#define TBM_GETIDEALHEIGHT (TBM_FIRST + 1)
#define Toolbar_GetIdealHeight(/*HNWD*/__hToolbar)\
((INT)SendMessage((__hToolbar), TBM_GETIDEALHEIGHT, 0, 0L))
#define TBM_GETICONSIZE (TBM_FIRST + 3)
#define Toolbar_GetIconSize(/*HWND*/ __hToolbar, /*INT*/ __iconIndex, /*PSIZE*/ __sizeOut)\
((BOOL)SendMessage((__hToolbar), TBM_GETICONSIZE, (WPARAM)(__iconIndex), (LPARAM)(__sizeOut)))
#define TBM_SENDCOMMAND (TBM_FIRST + 4)
#define Toolbar_SendCommand(/*HWND*/ __hToolbar, /*INT*/ __commandId)\
((BOOL)SendMessage((__hToolbar), TBM_SENDCOMMAND, (WPARAM)(__commandId), 0L))
typedef struct __TOOLBARDRAWICONPARAM
{
HDC hdcDst;
INT iconIndex;
INT x;
INT y;
INT cx;
INT cy;
UINT itemState;
} TOOLBARDRAWICONPARAM;
#define TBM_DRAWICON (TBM_FIRST + 5)
#define Toolbar_DrawIcon(/*HWND*/ __hToolbar, /*TOOLBARDRAWICONPARAM* */ __toolbarDrawIconParam)\
((BOOL)SendMessage((__hToolbar), TBM_DRAWICON, 0, (LPARAM)(__toolbarDrawIconParam)))
#define Toolbar_LockUpdate(/*HWND*/ __hToolbar, /*BOOL*/__fLock)\
(SendMessage((__hToolbar), WM_SETREDRAW, (WPARAM)(0 == (__fLock)), 0L))
#define TBM_GETITEMCOUNT (TBM_FIRST + 6)
#define Toolbar_GetItemCount(/*HWND*/ __hToolbar)\
((INT)SendMessage((__hToolbar), TBM_GETITEMCOUNT, 0, 0L))
#define TBM_CLEAR (TBM_FIRST + 7)
#define Toolbar_Clear(/*HWND*/ __hToolbar)\
((BOOL)SendMessage((__hToolbar), TBM_CLEAR, 0, 0L))
#define TBIP_FIRST 0x0000
#define TBIP_LAST 0xFFFFFF
typedef struct __TOOLBARINSERTITEM
{
INT cbSize;
INT insertBefore; // you can use TBIP_XXX here
LPCSTR pszName;
UINT style;
} TOOLBARINSERTITEM;
#define TBM_INSERTITEM (TBM_FIRST + 8) // wParam - not used, lParam = (LPARAM)(TOOLBARINSERTITEM*)pInsertItem; Return item index or ITEM_ERR
#define Toolbar_InsertItem(/*HWND*/ __hToolbar, /*TOOLBARINSERTITEM*/ __pInsertItem)\
((INT)SendMessage((__hToolbar), TBM_INSERTITEM, 0, (LPARAM)__pInsertItem))
#define TBM_FINDITEM (TBM_FIRST + 9)
#define Toolbar_FindItem(/*HWND*/ __hToolbar, /*LPCSTR*/ __pszItemName)\
((INT)SendMessage((__hToolbar), TBM_FINDITEM, 0, (LPARAM)(__pszItemName)))
#define TBM_REMOVEITEM (TBM_FIRST + 10) // itemName can be INT index
#define Toolbar_RemoveItem(/*HWND*/ __hToolbar, /*LPCSTR*/__pszItemName)\
((BOOL)SendMessage((__hToolbar), TBM_REMOVEITEM, 0, (LPARAM)(__pszItemName)))
#define TBM_SETITEMINT (TBM_FIRST + 11) // itemName can be INT index
#define Toolbar_SetItemInt(/*HWND*/ __hToolbar, /*LPCSTR*/ __pszItemName, /*INT*/ __intValue)\
((BOOL)SendMessage((__hToolbar), TBM_SETITEMINT, (WPARAM)(__intValue), (LPARAM)(__pszItemName)))
#define TBM_SETITEMSTRING (TBM_FIRST + 12) // itemName can be INT index
#define Toolbar_SetItemString(/*HWND*/ __hToolbar, /*LPCSTR*/ __pszItemName, /*LPCWSTR*/ __stringValue)\
((BOOL)SendMessage((__hToolbar), TBM_SETITEMSTRING, (WPARAM)(__stringValue), (LPARAM)(__pszItemName)))
#define TBM_GETBKCOLOR (TBM_FIRST + 13)
#define Toolbar_GetBkColor(/*HWND*/ __hToolbar)\
((COLORREF)SendMessage((__hToolbar), TBM_GETBKCOLOR, 0, 0L))
#define TBM_GETFGCOLOR (TBM_FIRST + 14)
#define Toolbar_GetFgColor(/*HWND*/ __hToolbar)\
((COLORREF)SendMessage((__hToolbar), TBM_GETFGCOLOR, 0, 0L))
#define TBM_GETTEXTCOLOR (TBM_FIRST + 15)
#define Toolbar_GetTextColor(/*HWND*/ __hToolbar)\
((COLORREF)SendMessage((__hToolbar), TBM_GETTEXTCOLOR, 0, 0L))
#define TBM_GETHILITECOLOR (TBM_FIRST + 16)
#define Toolbar_GetHiliteColor(/*HWND*/ __hToolbar)\
((COLORREF)SendMessage((__hToolbar), TBM_GETHILITECOLOR, 0, 0L))
#define TBM_ENABLEITEM (TBM_FIRST + 17) // itemName can be INT index
#define Toolbar_EnableItem(/*HWND*/ __hToolbar, /*LPCSTR*/ __pszItemName, /*BOOL*/ __fEnable)\
((BOOL)SendMessage((__hToolbar), TBM_ENABLEITEM, (WPARAM)(__fEnable), (LPARAM)(__pszItemName)))
#define TBM_SHOWITEM (TBM_FIRST + 18) // itemName can be INT index
#define Toolbar_ShowItem(/*HWND*/ __hToolbar, /*LPCSTR*/ __pszItemName, /*BOOL*/ __fShow)\
((BOOL)SendMessage((__hToolbar), TBM_SHOWITEM, (WPARAM)(__fShow), (LPARAM)(__pszItemName)))
#define TBM_UPDATETIP (TBM_FIRST + 19)
#define Toolbar_UpdateTip(/*HWND*/ __hToolbar)\
((BOOL)SendMessage((__hToolbar), TBM_UPDATETIP, 0, 0L))
typedef struct __TOOLBARTEXTMETRIC
{
INT height;
INT baseY;
INT origY;
INT aveCharWidth;
INT overhang;
} TOOLBARTEXTMETRIC;
#define TBM_GETTEXTMETRICS (TBM_FIRST + 20)
#define Toolbar_GetTextMetrics(/*HWND*/ __hToolbar, /*TOOLBARTEXTMETRIC* */ __textMetric)\
((BOOL)SendMessage((__hToolbar), TBM_GETTEXTMETRICS, 0, (LPARAM)__textMetric))
#define TBM_GETBKBRUSH (TBM_FIRST + 21)
#define Toolbar_GetBkBrush(/*HWND*/ __hToolbar)\
((HBRUSH)SendMessage((__hToolbar), TBM_GETBKBRUSH, 0, 0L))
typedef struct __TOOLBARLAYOUT
{
const RECT *prcParent; // [in] - parent window rect
HWND insertAfter; // [out] - toolar insert after
RECT toolbarRect; // [out] - toolbar rect
RECT clientRect; // [out] - new parent client rect
} TOOLBARLAYOUT;
#define TBM_LAYOUT (TBM_FIRST + 22)
#define Toolbar_Layout(/*HWND*/ __hToolbar, /*TOOLBARLAYOUT* */ __pLayout)\
((BOOL)SendMessage((__hToolbar), TBM_LAYOUT, 0, (LPARAM)(__pLayout)))
#define TBNS_NEXTITEM MAKEINTRESOURCEA(0)
#define TBNS_PREVITEM MAKEINTRESOURCEA(1)
#define TBM_NEXTITEM (TBM_FIRST + 23)
#define Toolbar_NextItem(/*HWND*/ __hToolbar, /*LPCSTR*/ __pszItemName, /*BOOL*/ __fUseName)\
((BOOL)SendMessage((__hToolbar), TBM_NEXTITEM, (WPARAM)(__fUseName), (LPARAM)(__pszItemName)))
#define TBM_GETITEMSTYLE (TBM_FIRST + 24) // itemName can be INT index,
#define Toolbar_GetItemStyle(/*HWND*/ __hToolbar, /*LPCSTR*/ __pszItemName, /*UINT*/ __fMask)\
((UINT)SendMessage((__hToolbar), TBM_GETITEMSTYLE, (WPARAM)(__fMask), (LPARAM)(__pszItemName)))
#define TBM_GETITEMCOMMAND (TBM_FIRST + 25) // itemName can be INT index,
#define Toolbar_GetItemCommand(/*HWND*/ __hToolbar, /*LPCSTR*/ __pszItemName)\
((INT)SendMessage((__hToolbar), TBM_GETITEMCOMMAND, 0, (LPARAM)(__pszItemName)))
#define TBM_SETITEMDESCRIPTION (TBM_FIRST + 26) // itemName can be INT index
#define Toolbar_SetItemDescription(/*HWND*/ __hToolbar, /*LPCSTR*/ __pszItemName, /*LPCWSTR*/__pszDescription)\
((BOOL)SendMessage((__hToolbar), TBM_SETITEMDESCRIPTION, (WPARAM)(__pszDescription), (LPARAM)(__pszItemName)))
typedef struct __TBITEMINFO
{
INT commandId;
UINT style;
LPWSTR pszText;
INT cchText;
LPWSTR pszDescription;
INT cchDescription;
} TBITEMINFO;
#define TBM_GETITEMINFO (TBM_FIRST + 27) // itemName can be INT index
#define Toolbar_GetItemInfo(/*HWND*/ __hToolbar, /*LPCSTR*/ __pszItemName, /*TBITEM* */__itemInfo)\
((BOOL)SendMessage((__hToolbar), TBM_GETITEMINFO, (WPARAM)(__itemInfo), (LPARAM)(__pszItemName)))
#define TBPF_NORMAL 0x00000000
#define TBPF_NOSERVICECOMMANDS 0x00000001
#define TBPF_READONLYADDRESS 0x00000004
#define TBM_AUTOPOPULATE (TBM_FIRST + 28) //wParam - (WPARAM)(UINT)populateFlags; lParam = (LPARAM)(ifc_omservice*)service; Return: number of buttons added.
#define Toolbar_AutoPopulate(/*HWND*/ __hToolbar, /*ifc_omservice* */ __service, /*UINT*/__populateFlags)\
((UINT)SendMessage((__hToolbar), TBM_AUTOPOPULATE, (WPARAM)(__populateFlags), (LPARAM)(__service)))
#define TBM_ENABLEBOTTOMDOCK (TBM_FIRST + 29) //wParam - not used; lParam = (LPARAM)(BOOL)fEnable; Return: previous state.
#define Toolbar_EnableBottomDock(/*HWND*/ __hToolbar, /*BOOL*/ __fEnable)\
((BOOL)SendMessage((__hToolbar), TBM_ENABLEBOTTOMDOCK, 0, (LPARAM)(__fEnable)))
#define TBM_ENABLEAUTOHIDE (TBM_FIRST + 30) //wParam - not used; lParam = (LPARAM)(BOOL)fEnable; Return: previous state.
#define Toolbar_EnableAutoHide(/*HWND*/ __hToolbar, /*BOOL*/ __fEnable)\
((BOOL)SendMessage((__hToolbar), TBM_ENABLEAUTOHIDE, 0, (LPARAM)(__fEnable)))
#define TBM_ENABLETABSTOP (TBM_FIRST + 31) //wParam - not used; lParam = (LPARAM)(BOOL)fEnable; Return: previous state.
#define Toolbar_EnableTabStop(/*HWND*/ __hToolbar, /*BOOL*/ __fEnable)\
((BOOL)SendMessage((__hToolbar), TBM_ENABLETABSTOP, 0, (LPARAM)(__fEnable)))
#define TBM_SETBROWSERHOST (TBM_FIRST + 32) //wParam = 0, lParam = (LPARAM)(HWND)hwndBrowserHost.
#define Toolbar_SetBrowserHost(/*HWND*/ __hStatusbar, /*HWND*/ __hwndBrowserHost)\
((BOOL)SENDMSG(__hStatusbar, TBM_SETBROWSERHOST, 0, (LPARAM)(__hwndBrowserHost)))
#define TBM_GETEDITCOLOR (TBM_FIRST + 33)
#define Toolbar_GetEditColor(/*HWND*/ __hToolbar)\
((COLORREF)SendMessage((__hToolbar), TBM_GETEDITCOLOR, 0, 0L))
#define TBM_GETEDITBKCOLOR (TBM_FIRST + 34)
#define Toolbar_GetEditBkColor(/*HWND*/ __hToolbar)\
((COLORREF)SendMessage((__hToolbar), TBM_GETEDITBKCOLOR, 0, 0L))
#define TBM_GETIMAGELISTHEIGHT (TBM_FIRST + 35)
#define Toolbar_GetImageListHeight(/*HWND*/ __hToolbar)\
((INT)SendMessage((__hToolbar), TBM_GETIMAGELISTHEIGHT, 0, 0L))
#define TBM_GETNEXTTABITEM (TBM_FIRST + 36)
#define Toolbar_GetNextTabItem(/*HWND*/ __hToolbar, /*LPCSTR*/ __pszItemName, /*BOOL*/ __fPrevious)\
((INT)SendMessage((__hToolbar), TBM_GETNEXTTABITEM, (BOOL)(__fPrevious), (LPARAM)(__pszItemName)))
#define TBM_CHECKHIDE (TBM_FIRST + 37) // wParam - not used, lParam = (LPARAM)(BOOL)__fImmediate
#define Toolbar_CheckHide(/*HWND*/ __hToolbar, /*BOOL*/ __fImmediate)\
(SendMessage((__hToolbar), TBM_CHECKHIDE, 0, (BOOL)(__fImmediate)))
#define TBM_ENABLEFORCEADDRESS (TBM_FIRST + 38) //wParam - not used; lParam = (LPARAM)(BOOL)fEnable; Return: previous state.
#define Toolbar_EnableForceAddress(/*HWND*/ __hToolbar, /*BOOL*/ __fEnable)\
((BOOL)SendMessage((__hToolbar), TBM_ENABLEFORCEADDRESS, 0, (LPARAM)(__fEnable)))
#define TBM_ENABLEFANCYADDRESS (TBM_FIRST + 39) //wParam - not used; lParam = (LPARAM)(BOOL)fEnable; Return: previous state.
#define Toolbar_EnableFancyAddress(/*HWND*/ __hToolbar, /*BOOL*/ __fEnable)\
((BOOL)SendMessage((__hToolbar), TBM_ENABLEFANCYADDRESS, 0, (LPARAM)(__fEnable)))
#define TBM_GETTEXTLENGTH (TBM_FIRST + 40) // wParam - (WPARAM)(size_t*)__textLengthOut, lParam - (LPARAM)(LPCSTR)(__itemName); Return TRUE if supported
#define Toolbar_GetTextLength(/*HWND*/ __hToolbar, /*LPCSTR*/ __pszItemName, /*size_t* */ __textLengthOut)\
((BOOL)SendMessage((__hToolbar), TBM_GETTEXTLENGTH, (WPARAM)(__textLengthOut), (LPARAM)(__pszItemName)))
// Nitifications (WM_COMMAND)
#define TBN_DOCKCHANGED 1
#define TBN_AUTOHIDECHANGED 2
#define TBN_TABSTOPCHANGED 3
#endif //NULLSOFT_WINAMP_OMBROWSER_TOOLBAR_HEADER
|