aboutsummaryrefslogtreecommitdiff
path: root/Src/Winamp/Main.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Winamp/Main.h')
-rw-r--r--Src/Winamp/Main.h1179
1 files changed, 1179 insertions, 0 deletions
diff --git a/Src/Winamp/Main.h b/Src/Winamp/Main.h
new file mode 100644
index 00000000..8af94615
--- /dev/null
+++ b/Src/Winamp/Main.h
@@ -0,0 +1,1179 @@
+#ifndef _MAIN_H_
+#define _MAIN_H_
+#ifdef __cplusplus
+
+//#pragma warning(error:4311)
+extern "C"
+{
+#endif
+#include <windows.h>
+//#include <windowsx.h>
+#include "wasabicfg.h"
+#include "wa_ipc.h"
+#include "config.h"
+#include "dpi.h"
+#ifndef __cplusplus
+#include "Plush/plush.h"
+#endif
+
+#define APSTUDIO_INVOKED
+#include "resource.h"
+
+#include <mbstring.h>
+#include <shlwapi.h>
+#include <stdio.h>
+#include <strsafe.h>
+#include <shlobj.h>
+#include <commctrl.h>
+#include <shobjidl.h>
+#include <shellapi.h>
+#include "in2.h"
+#include "strutil.h"
+#include "../nu/trace.h"
+#ifndef NO_INPLACE_RESOLVE
+
+#if defined(_WIN64)
+ #include "../Elevator/IFileTypeRegistrar_64.h"
+#else
+ #include "../Elevator/IFileTypeRegistrar_32.h"
+#endif
+
+#endif
+ /* configuration */
+
+ //#undef MAX_PATH
+ //#define MAX_PATH 512
+#define OFFSCREEN_Y_POS -30000
+#define MAX_URL 4096
+extern HINSTANCE language_pack_instance;
+#define UPDATE_DISPLAY_TIMER 38
+#define STATS_TIMER 64
+
+#define SPLASH_DELAY 2000
+#define APP_NAME "Winamp"
+#ifdef __alpha
+#define APP_VERSION_PLATFORM "(AXP)"
+#elif defined(_WIN64)
+#define APP_VERSION_PLATFORM "(x64)"
+#elif defined(_WIN32_WINCE)
+#define APP_VERSION_PLATFORM "(CE)"
+#else
+#define APP_VERSION_PLATFORM "(x86)"
+#endif
+ extern const char app_name[], app_version[], app_version_string[];
+#define BIGINT 1000000000
+
+#define MAINMENU_OPTIONS_BASE (11+g_mm_optionsbase_adj)
+#define WINDOWMENU_FFWINDOWS_BASE (3+g_mm_ffwindowsbase_adj)
+
+#define HIDDEN_TRAP -33
+
+#define WINDOW_WIDTH 275
+#define WINDOW_HEIGHT 116
+
+
+#define FALLBACK_FONT L"Arial"
+//#define DEFAULT_FONT "Arial Unicode MS"
+ #define DEFAULT_FONT L"Arial"
+ //extern prefsDlgRec *g_piprefsdlgs;
+
+#define CAPTION_SIZE (MAX_PATH+128)
+
+#define AUDITSIZE 10
+
+//#define CLASSIC_SKIN_NAME L"Winamp Classic"
+#define MODERN_SKIN_NAME L"Winamp Modern"
+#define BENTO_SKIN_NAME L"Bento"
+#define BIG_BENTO_SKIN_NAME L"Big Bento"
+
+ /***********************
+ *** about.c
+ */
+ void about_dialog(void);
+
+
+ extern int about_lastpage;
+ extern HWND about_hwnd;
+
+
+ /***********************
+ *** about2.c
+ */
+ void About2_Start(HWND hwndParent);
+ void About2_Kill();
+
+ /***********************
+ *** bookmark.c
+ */
+ void Bookmark_additem(wchar_t *fn, wchar_t *ft);
+ void Bookmark_AddCommandline(wchar_t *commandLine);
+
+ /***********************
+ *** burn.cpp
+ */
+ int burn_start(burnCDStruct *param);
+ unsigned int burn_doBurn(char *cmdline, HWND winampWnd, HINSTANCE winampInstance);
+
+ /***********************
+ *** config.c
+ */
+ // configuration variables/with defaults
+ #ifndef NO_INPLACE_RESOLVE
+ int GetRegistrar(IFileTypeRegistrar **registrar, BOOL use_fallback);
+ #endif
+ void init_config();
+ void setup_config(void);
+ void config_write(int);
+ void config_read(int);
+ BOOL config_setup_filetypes(int mode);
+ void config_adddesktop(void);
+ int config_isregistered(wchar_t *);
+ BOOL config_registermediaplayer(DWORD accessEnabled);
+ BOOL config_register_capability(wchar_t *ext, int mode);
+ void config_register(wchar_t *ext, int reg);
+ void config_setinifile(wchar_t *inifile);
+ void config_setinidir(const wchar_t *inidir);
+ void config_setm3udir(const wchar_t *m3udir);
+ void config_setm3ubase(const wchar_t *m3ubase);
+ void config_load_langpack_var(void);
+ void config_save_langpack_var(void);
+ int config_isdircontext(void);
+ BOOL config_setup_filetype(const wchar_t *winamp_file, const wchar_t *name, BOOL use_fallback);
+ BOOL config_adddircontext(BOOL use_fallback);
+ int config_iscdplayer(void);
+ BOOL config_removedircontext(BOOL use_fallback);
+ BOOL config_regcdplayer(int reg, int mode);
+ void config_remove_winamp_keys(void);
+ void config_agent_add(void);
+ void config_agent_remove(void);
+ void regmimetype(const wchar_t *mtype, const wchar_t *programname, const wchar_t *ext, int nsonly);
+ void RemoveRegistrar();
+
+ /***********************
+ *** convert.cpp
+ */
+ int convert_file(convertFileStruct *cfs);
+ void convert_end(convertFileStruct *cfs);
+ int convert_fileW(convertFileStructW *cfs);
+ void convert_endW(convertFileStructW *cfs);
+ HWND convert_config(convertConfigStruct *ccs);
+ void convert_config_end(convertConfigStruct *ccs);
+ void convert_enumfmts(converterEnumFmtStruct *cefs);
+ void convert_setPriority(convertSetPriority *csp);
+ void convert_setPriorityW(convertSetPriorityW *csp);
+ int convert_setConfigItem(convertConfigItem *cci);
+ int convert_getConfigItem(convertConfigItem *cci);
+ int convert_file_test(convertFileStructW *cfs);
+
+ /***********************
+ *** dde.c
+ */
+ int dde_addstart(HWND hwnd);
+ void dde_delstart(void);
+ int dde_isquicklaunchavailable(void);
+ void dde_addquicklaunch(HWND hwnd);
+ void dde_adddesktop(HWND hwnd);
+ void dde_remdesktop(void);
+ void dde_remquicklaunch(void);
+
+ /***********************
+ *** dock.c
+ */
+ void FixMainWindowRect(RECT *r);
+ void EstMainWindowRect(RECT *r);
+ void EstEQWindowRect(RECT *r);
+ void EstPLWindowRect(RECT *r);
+ void EstVidWindowRect(RECT *r);
+ void SetVidWindowRect(RECT *r);
+ void SetMainWindowRect(RECT *r);
+ void SetEQWindowRect(RECT *r);
+ void SetPLWindowRect(RECT *r);
+ void MoveRect(RECT *r, int x, int y);
+ int IsWindowAttached(RECT rc, RECT rc2);
+ void SnapWindowToWindow(RECT *rcSrc, RECT rcDest);
+ void AdjustSnap(RECT old1, RECT old2, RECT *new1, RECT *new2);
+ int IsPointInRect(int x, int y, RECT *r);
+ void FixOverlaps(RECT *r1, RECT *r2);
+
+
+ /***********************
+ *** draw.c
+ */
+ extern int (WINAPI *jtf_drawtext)(HDC, LPCWSTR, int, LPRECT, UINT);
+ void draw_set_plbm(HBITMAP);
+ extern int pe_fontheight;
+ extern HPALETTE draw_hpal;
+ void draw_firstinit(void);
+ void draw_finalquit(void);
+ void draw_init(void);
+ void draw_paint(HWND hwnd);
+ void draw_printclient(HDC hdc, LPARAM drawingOptions);
+ void draw_kill(void);
+ void draw_clear(void);
+ void draw_monostereo(int value); // 0 is neither, 1 is mono, 2 is stereo
+ void draw_shuffle(int on, int pressed);
+ void draw_repeat(int on, int pressed);
+ void draw_eqplbut(int eqon, int eqpressed, int plon, int plpressed);
+ void draw_volumebar(int volume, int pressed); // volume is 0-51
+ void draw_panbar(int volume, int pressed);
+ void draw_songname(const wchar_t *name, int *position, int songlen);
+ void draw_positionbar(int position, int pressed); // position is 0-256
+ void draw_bitmixrate(int bitrate, int mixrate);
+ void draw_buttonbar(int buttonpressed); // starts at 0 with leftmost, -1 = no button
+ void draw_playicon(int whichicon); // 0 = none, 1 = play, 2 = stop, 4 = pause
+ void draw_time(int minutes, int seconds, int clear);
+ void draw_sa(unsigned char *values, int draw); // array of 12 bands, starting with leftmost, of 0..7
+ void draw_tbuttons(int b1, int b2, int b3, int b4);
+ void draw_setnoupdate(int);
+ void draw_tbar(int active, int windowshade, int egg);
+ void draw_eject(int pressed);
+ void draw_clutterbar(int enable);
+ void update_volume_text(int songlen);
+ void update_panning_text(int songlen);
+
+ /*****************
+ *** draw_eq.c
+ */
+ extern int eq_init;
+ void draw_eq_init();
+ void draw_eq_kill();
+ void draw_paint_eq(HWND hwnd);
+ void draw_printclient_eq(HDC hdc, LPARAM /*drawingOptions*/);
+ void draw_eq_tbutton(int b3, int wsb);
+ void draw_eq_slid(int which, int pos, int pressed); // left to right, 0-64
+ void draw_eq_tbar(int active);
+ void draw_eq_onauto(int on, int autoon, int onpressed, int autopressed);
+ void draw_eq_presets(int pressed);
+ void draw_eq_graphthingy(void);
+
+ /*****************
+ *** draw_pe.c
+ *** for functions that accept HDC as the first parameter,
+ *** hdc can be NULL, and it will use the Window DC
+ */
+ extern int pe_init;
+ void draw_pe_init();
+ void draw_pe_kill();
+ void draw_pe_tbutton(int b2, int b3, int b2_ws);
+ void draw_paint_pe(HWND hwnd);
+ void draw_printclient_pe(HWND hwnd, HDC hdc, LPARAM drawingOptions);
+ void draw_reinit_plfont(int notifyOthers);
+ void draw_pe_tbar(HWND hwnd, HDC hdc, int state);
+ void draw_pe_vslide(HWND hwnd, HDC hdc, int pushed, int pos); // pos 0..100
+ void draw_pe_timedisp(HDC hdc, int minutes, int seconds, int tlm, int clear);
+
+ void draw_pe_addbut(int which); // -1 = none, 0 = file, 1 = dir, 2 = loc
+ void draw_pe_rembut(int which); // -1 = none, 0 = sel, 1 = crop, 2 = all
+ void draw_pe_selbut(int which); // -1 = none, 0 = all, 1 = none, 2=inv
+ void draw_pe_miscbut(int which); // -1 = none, 0 = inf, 1 = sort, 2=misc
+ void draw_pe_iobut(int which); // -1 = none, 0 = load, 1=save, 2=clear
+
+ /*****************
+ *** draw_vw.c
+ */
+ extern int vw_init;
+ void draw_vw_init();
+ void draw_vw_kill();
+ void draw_vw_tbar(int state);
+ void draw_vw(HDC hdcout);
+ void draw_paint_vw(HWND hwnd);
+ void draw_vw_tbutton(int b3);
+ void draw_vw_mbuts(int whichb);
+ void draw_vw_info(wchar_t *t, int erase);
+
+ /*****************
+ *** dsp.c
+ */
+ void dsp_init(void);
+ void dsp_quit(void);
+ int dsp_dosamples(short int *samples, int numsamples, int bps, int nch, int srate);
+ int dsp_isactive(void);
+
+ /*****************
+ *** eq.c
+ */
+ extern unsigned char eq_tab[10];
+ void eq_dialog(HWND, int);
+ void eq_autoload(const char *mp3fn);
+ LRESULT CALLBACK EQ_WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
+
+
+ /*****************
+ *** embedwnd.cpp
+ */
+ #ifdef __cplusplus
+ typedef struct _EMBEDWND
+ {
+ HWND hLastFocus;
+ } EMBEDWND;
+ #include "../nu/CGlobalAtom.h"
+ static CGlobalAtom EMBEDWND_PROPW(L"EMBDEWND");
+ #define GetEmbedWnd(__hwnd) ((EMBEDWND*)GetPropW(__hwnd, EMBEDWND_PROPW))
+ #endif
+
+ extern LRESULT CALLBACK emb_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+
+ extern HWND embedWindow(embedWindowState *state);
+ extern void SnapWindowToAllWindows(RECT *outrc, HWND hwndNoSnap);
+ extern BOOL SnapToScreen(RECT *outrc);
+
+ extern CRITICAL_SECTION embedcs;
+ extern embedWindowState *embedwndlist; // linked list
+ extern int embedwndlist_cnt;
+#define EMBED_STATE_EXTRA_LINK 0
+#define EMBED_STATE_EXTRA_ATTACHED 1
+#define EMBED_STATE_EXTRA_GUID 4 // note this reserved 5-7 also
+#define EMBED_STATE_EXTRA_REPARENTING 62
+#define EMBED_STATE_EXTRA_FFROOTWND 63
+
+ /*****************
+ *** equi.c
+ */
+ extern int minimize_hack_winamp;
+ extern int do_volbar_active, do_panbar_active;
+
+ void eq_ui_handlecursor(void);
+ void equi_handlemouseevent(int x, int y, int type, int stats);
+ void ui_handlecursor(void);
+
+ BOOL DoTrackPopup(HMENU hMenu, UINT fuFlags, int x, int y, HWND hwnd);
+
+ /*****************
+ *** gen.cpp
+ */
+
+ void load_genplugins();
+ void unload_genplugins();
+
+ /*****************
+ *** html.c
+ */
+ void doHtmlPlaylist(void);
+
+ /*****************
+ *** http.c
+ */
+ int httpRetrieveFile(HWND hwnd, const char *url, char *file, char *dlgtitle);
+ int httpRetrieveFileW(HWND hwnd, const char *url, const wchar_t *file, const wchar_t *dlgtitle);
+
+ /*****************
+ *** in.c
+ */
+
+ extern In_Module *in_mod;
+ int in_init();
+ void in_deinit();
+ In_Module *in_setmod(wchar_t *filename);
+ In_Module *in_setmod_noplay(const wchar_t *filename, int *start_offs); // starts at *start_offs, sets *start_offs with the value of the module used
+ char *in_getfltstr(void);
+ wchar_t *in_getfltstrW(BOOL skip);
+ char *in_getextlist(void);
+ wchar_t *in_getextlistW();
+ int in_getouttime(void);
+ int in_getlength(void);
+ void in_pause(int p);
+ int in_seek(int time_in_ms);
+ int in_open(const wchar_t *fn);
+ void in_setvol(int v);
+ void in_setpan(int p);
+ void in_close(void);
+ int in_infobox(HWND hwnd, const wchar_t *fn);
+ int in_get_extended_fileinfoW(const wchar_t *fn, const wchar_t *metadata, wchar_t *dest, size_t destlen);
+ int in_get_extended_fileinfo(const char *fn, const char *metadata, char *dest, size_t destlen);
+ int in_set_extended_fileinfo(const char *fn, const char *metadata, char *dest);
+ int in_set_extended_fileinfoW(const wchar_t *fn, const wchar_t *metadata, wchar_t *data);
+ int in_write_extended_fileinfo();
+ void eq_set(int on, char data[10], int preamp);
+ void in_flush(int ms);
+
+ /**************
+ *** jump.c
+ */
+ void SetJumpComparator(void *functionPtr);
+ void SetJumpComparatorW(void *functionPtr);
+ int jump_dialog(HWND hwnd);
+ int jump_file_dialog(HWND hwnd);
+
+
+
+ /***************
+ *** m3u.c
+ */
+ int savem3ufn(const wchar_t *filename, int rel, int useBase);
+
+ /* main.c */
+
+#include "buildType.h"
+
+#ifndef WM_MOUSEWHEEL
+#define WM_MOUSEWHEEL 0x20A
+#endif
+ extern UINT songChangeBroadcastMessage;
+ extern HMENU main_menu, top_menu, systray_menu, g_submenus_bookmarks1,
+ g_submenus_bookmarks2, g_submenus_skins1, g_submenus_skins2,
+ g_submenus_vis, g_submenus_options, g_submenus_lang,
+ g_submenus_play, v5_top_menu;
+ extern int unique_loword_command;
+ extern int g_submenus_lang_id;
+ extern char g_audiocdletter[];
+ extern int g_audiocdletters;
+ extern int g_dropaot_timer_set;
+ extern int is_install;
+ extern int g_fsapp;
+ extern int g_restoreaot_timer_set;
+ extern int bNoHwndOther;
+ extern int g_safeMode;
+ void tealike_crappy_code(unsigned long v[2], unsigned long k[4]);
+ void UpdateAudioCDMenus(HMENU hmenu);
+ void MoveOffscreen(HWND hwnd);
+ void ResolveEnvironmentVariables(wchar_t *string, size_t stringSize);
+ extern int g_main_created;
+ extern int g_noreg;
+ extern wchar_t szAppName[64]; // window class name, generated on the fly.
+ extern int g_fullstop;
+ extern int vis_fullscreen;
+ extern int stat_isit; // used for faster version checking
+ extern int g_mm_ffoptionsbase_adj;
+ extern int no_notify_play;
+ extern int last_no_notify_play;
+ extern int disable_skin_cursors;
+ extern int disable_skin_borders;
+ extern int g_exit_disabled;
+ extern UINT g_scrollMsg;
+ LRESULT CALLBACK Main_WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
+ extern int Ipc_WindowToggle(INT_PTR which, INT_PTR how);
+ extern int eggstat;
+ extern int last_brate, g_need_titleupd, g_need_infoupd;
+ extern int g_stopaftercur;
+ extern int g_has_deleted_current;
+
+ extern int g_has_video_plugin, g_no_video_loaded;
+ extern char *audits[AUDITSIZE];
+ extern int audit_ptr;
+
+ extern HWND hTooltipWindow, hEQTooltipWindow, hVideoTooltipWindow, hPLTooltipWindow/*, hPL2TooltipWindow*/;
+ extern HWND hMainWindow, hEQWindow, hPLWindow, /*hMBWindow, */hVideoWindow;
+ extern HINSTANCE hMainInstance;
+ extern HANDLE hMainThread;
+ extern DWORD mainThreadId;
+ extern int paused;
+ extern int playing;
+ extern wchar_t caption[CAPTION_SIZE];
+ extern wchar_t FileName[FILENAME_SIZE];
+ extern wchar_t FileTitle[FILETITLE_SIZE];
+ extern wchar_t FileTitleNum[FILETITLE_SIZE];
+ extern char *app_date;
+ extern int g_srate, g_brate, g_nch, g_srate_exact;
+
+ extern int g_mm_optionsbase_adj;
+ extern int g_mm_ffwindowsbase_adj;
+ extern HWND g_dialog_box_parent;
+ extern int g_restartonquit;
+ extern char playlist_custom_font[128];
+ extern wchar_t playlist_custom_fontW[128];
+ extern int config_custom_plfont;
+ extern int disable_skin_cursors;
+ LRESULT sendMlIpc(int msg, WPARAM param);
+ extern HWND hExternalVisWindow;
+ int CALLBACK WINAPI BrowseCallbackProc( HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
+ int CALLBACK WINAPI BrowseCallbackProc_Download(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData);
+ BOOL CALLBACK browseEnumProc(HWND hwnd, LPARAM lParam);
+ int Main_OnClose(HWND hwnd);
+#define DIALOG_PARENT(w) (g_dialog_box_parent?g_dialog_box_parent:w)
+ int CreateMainWindow();
+ void BuildAppName();
+ WPARAM WinampMessageLoop();
+
+
+ /***************
+ *** metrics.c
+ */
+ #define METRICS_EMAIL 0x0001
+ #define METRICS_COUNTRY 0x0002
+ #define METRICS_ANNOUNCEMENTS 0x0003
+ #define METRICS_GENDER 0x0004
+
+ INT GetMetricsValueW(const char *data, const char *pszType, void *pDest, int cbDest);
+ BOOL SetMetricsValueW(const char *data, const char *pszType, const void *pVal, int cbVal);
+ BOOL SendMetrics(const char *data, HWND hwndParent);
+ INT GetMetricsSize(const char *data);
+
+
+ /***************
+ *** verchk.c
+ */
+ void newversioncheck(void);
+ void Ping(const char *url);
+
+ /***************
+ *** ole.cpp
+ */
+ void InitDragDrops();
+ void UninitDragDrops();
+ void Ole_initDragDrop(void);
+ void Ole_uninitDragDrop(void);
+ void *Ole_getDropTarget(void);
+
+ /***************
+ *** options.c
+ */
+#define PREFS_UNICODE ((_prefsDlgRec *)1)
+#define PREFS_ACP ((_prefsDlgRec *)0)
+ extern int g_taskbar_dirty;
+ extern intptr_t prefs_last_page;
+ extern RECT prefs_rect, alt3_rect, ctrle_rect, about_rect,
+ loc_rect, time_rect, load_rect, editinfo_rect;
+ extern HWND prefs_hwnd;
+ void prefs_dialog(int modal);
+ void prefs_liveDlgAdd(prefsDlgRec * p);
+ void prefs_liveDlgRemove(prefsDlgRec * p);
+ void prefs_liveDlgUpdate(prefsDlgRec * p);
+ void SetDialogBoxFromFile(FILE *fp, HWND hwndDlg, int id);
+ /***************
+ *** options_playlist.cpp
+ */
+ void UpdatePlaylistFontSizeText(void);
+ void UpdateManualAdvanceState(void);
+ /***************
+ *** options_skin.cpp
+ */
+ typedef struct _ENUMSKIN
+ {
+ const wchar_t *pszFileName;
+ const wchar_t *pszName;
+ int nType;
+ int bActive;
+ } ENUMSKIN;
+
+ #define SKIN_FILETYPE_EMBED 3
+ #define SKIN_FILETYPE_DIR 0
+ #define SKIN_FILETYPE_ZIP 1
+ #define SKIN_FILETYPE_WSZ 2
+ #define SKIN_FILETYPE_WAL 4
+
+
+ typedef int (CALLBACK *ENUMSKINPROC)(ENUMSKIN* /*pes*/, void * /*user*/); // return 0 to stop enumeration
+ int EnumerateSkins(ENUMSKINPROC fnEnumSkin, void *user);
+ /***************
+ *** options_general.cpp
+ */
+ typedef struct _ENUMLANG
+ {
+ const wchar_t *pszFileName;
+ const wchar_t *pszName;
+ int nType;
+ int bActive;
+ } ENUMLANG;
+
+ //#define LANG_FILETYPE_LNG 1 // DEPRECATED: no longer a supported type
+ #define LANG_FILETYPE_WLZ 2
+ #define LANG_FILETYPE_EMBED 3
+ #define LANG_FILETYPE_ZIP 4 // added 5.66
+ #define LANG_FILETYPE_DIR 0 // added 5.66
+
+ typedef int (CALLBACK *ENUMLANGPROC)(ENUMLANG* /*pel*/, void * /*user*/); // return 0 to stop enumeration
+ int EnumerateLanguages(ENUMLANGPROC fnEnumLang, void *user);
+ void LangSwitchToLangPrompt(HWND hwndDlg, wchar_t* newLang);
+ /***************
+ *** out.c
+ */
+ extern Out_Module *out_modules[32];
+ extern Out_Module *out_mod;
+ void out_init();
+ void out_deinit();
+ void out_setwnd();
+ void out_changed(HINSTANCE hLib, int enabled);
+
+ /***************
+ *** peui.c
+ */
+ void peui_handlemouseevent(HWND hwnd, int x, int y, int type, int stats);
+ void pe_ui_handlecursor(HWND hwnd);
+
+
+ /****************
+ *** play.c
+ */
+ void getNewFile(int, HWND, const wchar_t *);
+ LRESULT getNewLocation(int, HWND); // if the int param is -1, returns a HGLOBAL to the thing instead of acting on it
+ void StartPlaying();
+ void StopPlaying(int);
+ void PausePlaying();
+ void UnPausePlaying();
+ void PlayThing(const char *thing, int clearlist);
+ void BeginPlayback();
+
+
+ /***************
+ *** playlist.c
+ */
+ __declspec(dllexport) extern wchar_t *(*plstring_wcsdup)(const wchar_t *str);
+ __declspec(dllexport) extern wchar_t *(*plstring_malloc)(size_t str_size);
+ __declspec(dllexport) extern void (*plstring_release)(wchar_t *str);
+ __declspec(dllexport) extern void (*plstring_retain)(wchar_t *str);
+
+ int LoadPlaylistByExtension(const wchar_t *fn, const wchar_t *ext, int whattodo, int useBase);
+ int PlayList_getitem2W(int position, wchar_t *filename, wchar_t *filetitle);
+ int PlayList_getitem_jtfW(int position, wchar_t *str);
+ void PlayList_getcurrent_tupdate(wchar_t *FileName, wchar_t *FileTitle);
+ int IsPlaylistExtension(const wchar_t *extension);
+ int IsPlaylistExtensionA(const char *extension);
+ int LoadPlaylist(const wchar_t *filename, int whattodo, int doMIMEcheck); // returns -1 if not a playlist, 0 on success, 1 on failure
+ void plstring_init();
+
+ extern wchar_t playlistStr[19];
+
+ void PlayList_UpdateTitle(const wchar_t *filename);
+ int PlayList_GetNextSelected(int start);
+ int PlayList_GetSelectedCount();
+ void PlayList_updateitem(int position);
+ void PlayList_getcurrent_onstop(wchar_t *filename, wchar_t *filetitle);
+ int PlayList_gethidden(int pos);
+ int PlayList_ishidden(int pos);
+ int PlayList_alldone(int pos);
+ int PlayList_hasanycurtain(int pos);
+ int PlayList_current_hidden(void);
+ const char *PlayList_getcurtain(int pos);
+ const char *PlayList_getExtInf( int pos );
+ //const char *PlayList_getbrowser(int pos);
+ void PlayList_resetcurrent(void);
+ int PlayList_getitem(int position, wchar_t *filename, wchar_t *filetitle);
+ int PlayList_getitem2(int position, char *filename, char *filetitle);
+ int PlayList_getitem3(int position, char *filetitle, char *filelength);
+ int PlayList_getitem3W(int position, wchar_t *filetitle, wchar_t *filelength);
+ int PlayList_getitem_pl(int position, wchar_t *);
+ int PlayList_getlength(void);
+ int PlayList_deleteitem(int item);
+ void PlayList_delete(void);
+ void PlayList_destroy(void);
+ void PlayList_append(const wchar_t *filename, int is_nde_string);
+ void PlayList_appendthing(const wchar_t *url, int doMIMEcheck, int is_nde_string);
+ void PlayList_append_withinfo(const wchar_t *filename, const wchar_t *title, const wchar_t *ext, int length, int is_nde_string);
+ void PlayList_append_withinfo_curtain(const wchar_t *filename, const wchar_t *title, int length, char *curtain, const wchar_t *ext, int is_nde_string);
+ void PlayList_append_withinfo_hidden(const wchar_t *filename, const wchar_t *title, int length, char *curtain/*, char *browser*/);
+ void PlayList_getcurrent(wchar_t *filename, wchar_t *filetitle, wchar_t *filetitlenum);
+ void PlayList_GetCurrentTitle(wchar_t *filetitle, int cchLen);
+ void PlayList_setcurrent(const wchar_t *filename, wchar_t *filetitle);
+ void PlayList_swap(int e1, int e2);
+ int PlayList_setposition(int pos);
+ int PlayList_advance(int byval);
+ int PlayList_getPosition();
+ int PlayList_getNextPosition();
+ void PlayList_addfromdlg(const wchar_t *fns); // replace with api_playlistmanager
+ void PlayList_refreshtitle(void);
+ wchar_t *PlayList_gettitle(const wchar_t *filename, int useID3);
+ const wchar_t *PlayList_GetCachedTitle(const wchar_t *filename);
+ int PlayList_randpos(int);
+ void PlayList_randomize(void);
+ void PlayList_reverse(void);
+ void PlayList_sort(int, int start_p);
+ void PlayList_adddir(const wchar_t *path, int recurse); // returns 0 if path was invalid // replace with api_playlistmanager
+ void PlayList_updaterandpos(void);
+ void PlayList_makerelative(const wchar_t *listfile, wchar_t *filename, int useBase);
+ int PlayList_getsonglength(int x);
+ int PlayList_gettotallength(void);
+ int PlayList_getcurrentlength(void);
+ int PlayList_getselect(int);
+ int PlayList_getselect2(int x, wchar_t *filename);
+ void PlayList_setselect(int, int);
+ void PlayList_setlastlen(int x);
+ void PlayList_setitem(int x, const wchar_t *filename, wchar_t *filetitle);
+ void PlayList_saveend(int start);
+ void PlayList_restoreend(void);
+ void PlayList_setcached(int x, int cached);
+ int PlayList_getcached(int x);
+ void PlayList_SetLastItem_RepeatCount( int count);
+ int PlayList_getrepeatcount(int pos);
+ void PlayList_terminate_lasthidden(void);
+ void PlayList_SetLastItem_Range(unsigned long starttime, unsigned long endtime);
+ unsigned long PlayList_GetItem_Start(int pos);
+ unsigned long PlayList_GetItem_End(int pos);
+ void PlayList_insert(int position, const wchar_t *filename);
+
+ /**************
+ *** pledit.c
+ */
+ LRESULT CALLBACK PE_WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
+ void pleditDlg(HWND, int);
+ void plEditRefresh(void);
+ void plEditSelect(int song);
+ extern int pledit_disp_offs;
+ void PE_Cmd(windowCommand *wc);
+
+ /***************
+ *** pls.c
+ */
+ void saveplsfn(const wchar_t *fn);
+ int loadpls(HWND, int);
+ int savepls(HWND hwnd);
+
+ /************************
+ *** sa.c
+ */
+ extern volatile int sa_curmode;
+ void SpectralAnalyzer_Create();
+ void SpectralAnalyzer_Destroy();
+ void sa_setthread(int enabled);
+ void sa_deinit(void);
+ void sa_init(int numframes);
+ int sa_add(char *values, int timestamp, int csa);
+ char *sa_get(int timestamp, int csa, char data[75*2 + 8]);
+
+ /************************
+ *** set.c
+ */
+ void set_caption(int alt_cb, wchar_t *format, ...);
+ void set_aot(int);
+ void set_priority(void);
+ void set_taskbar(void);
+ void set_visopts(void);
+ void do_caption_autoscroll(void);
+ void set_pl_wnd_tooltip(void);
+ void set_vid_wnd_tooltip(void);
+
+ /***********************
+ *** shell.cpp
+ */
+ HRESULT ResolveShortCut(HWND hwnd, LPCWSTR pszShortcutFile, LPWSTR pszPath);
+ //void CreateShortCut(HWND hwnd, LPCSTR pszShortcutFile, LPCSTR pszExe, LPCSTR, int);
+ void Shell_Free(void *p);
+
+ /************************
+ *** skins.c
+ */
+ BOOL _cleanupDirW(const wchar_t *dir);
+ extern int g_skinloadedmanually, g_skinmissinggenff;
+ void CreateDirectoryForFileW(wchar_t *fn, wchar_t *base); // shared for use with wlz files
+ void Skin_Random(void);
+ void Skin_Load(void);
+ void Skin_CleanupZip(void);
+ void Skin_CleanupAfterCrash(void);
+ BOOL Skin_Check_Modern_Support();
+ int Skin_GetRegionPointList(int eq, int **points, int **counts);
+ /* The indices of Skin_PLColors:
+ 0 - text color - playlist
+ 1 - text color - currently playing playlist entry
+ 2 - background color - playlist
+ 3 - background color - selected playlist entry
+ 4 - text color - video window info, minibrowser info
+ 5 - background - video window info, minibrowser info */
+ extern int Skin_PLColors[6], Skin_UseGenNums;
+ extern char Skin_PLFont[128];
+ extern wchar_t Skin_PLFontW[128];
+ extern HWND skin_hwnd;
+#define N_CURSORS 29
+ extern HCURSOR Skin_Cursors[N_CURSORS];
+
+
+ /*************************
+ *** splash.c
+ */
+ void splashDlg(int wait_in_ms);
+
+
+ /*************************
+ *** stats.c
+ */
+ void Stats_OnPlay(const wchar_t *playstring);
+ void stats_write(void); // sets some final stats and writes to disk
+ void stats_getuidstr(char *str);
+ void stats_init();
+ void stats_save(); // just writes to disk
+
+ /***********************
+ *** systray.c
+ */
+ extern int systray_intray;
+ void systray_minimize(wchar_t *tip);
+ void systray_restore(void);
+
+ /* ui.c */
+ extern int ui_songposition;
+ extern int ui_songposition_dir;
+ extern int ui_songposition_tts;
+ extern int do_posbar_active;
+
+ void ui_doscrolling();
+ void ui_handlemouseevent(int x, int y, int type, int stats); // x,y, -1=up,0=move,1=down, stats = kbstats
+ void ui_reset();
+ void ui_drawtime(int time_elapsed, int mode); // mode=0 means called from timer, mode=1 forced
+
+ /***********************
+ *** util.c
+ */
+ LPCWSTR RepairMutlilineString(LPWSTR pszBuffer, INT cchBufferMax);
+ void recent_add(const wchar_t *loc);
+ int IsUrl(const char *url);
+ //int IsCharSpace(char digit);
+ //int IsCharSpaceW(wchar_t digit);
+ int IsCharDigit(char digit);
+ int IsCharDigitW(wchar_t digit);
+ void mbprintf(char *file, int line, char *format, ...);
+ void link_handledraw(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
+ LRESULT link_handlecursor(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
+ void link_startsubclass(HWND hwndDlg, UINT id);
+ void myOpenURL(HWND, const wchar_t *url);
+ void myOpenURLWithFallback(HWND, wchar_t *url, wchar_t *fallbackUrl);
+ char *my_strdup(char *s);
+ int geticonid(int x);
+ int isInetAvailable(void);
+ unsigned int getDay(void);
+ const wchar_t *scanstr_backcW(const wchar_t *str, const wchar_t *toscan, const wchar_t *defval);
+ void getViewport(RECT *r, HWND wnd, int full, RECT *sr);
+ BOOL windowOffScreen(HWND hwnd, POINT pt);
+
+ LPCWSTR BuildFullPath(LPCWSTR pszPathRoot, LPCWSTR pszPath, LPWSTR pszDest, INT cchDest); //
+ INT ComparePath(LPCWSTR pszPath1, LPCWSTR pszPath2, LPCWSTR pszPathRoot); //
+ BOOL DisabledWindow_OnMouseClick(HWND hwnd); // call it in WM_SETCURSOR
+
+ /***************
+ *** functions related to uxtheme.dll
+ */
+
+
+ #define ETDT_DISABLE 0x01
+ #define ETDT_ENABLE 0x02
+ #define ETDT_USETABTEXTURE 0x04
+ #define ETDT_ENABLETAB (ETDT_ENABLE | ETDT_USETABTEXTURE)
+ #define ETDT_USEAEROWIZARDTABTEXTURE 0x08
+ #define ETDT_ENABLEAEROWIZARDTAB (ETDT_ENABLE | ETDT_USEAEROWIZARDTABTEXTURE)
+ #define ETDT_VALIDBITS (ETDT_DISABLE | ETDT_ENABLE | ETDT_USETABTEXTURE | ETDT_USEAEROWIZARDTABTEXTURE)
+
+ int IsWinXPTheme(void);
+ void DoWinXPStyle(HWND tab);
+ int IsAero(void);
+ BOOL IsVista(void);
+ BOOL IsVistaOrLower(void);
+ BOOL IsWin8(void);
+
+ HRESULT WAEnableThemeDialogTexture(HWND hwnd, DWORD dwFlags);
+
+ /***************
+ *** lang.cpp
+ */
+ HINSTANCE Lang_InitLangSupport(HINSTANCE, const GUID);
+ void Lang_FollowUserDecimalLocale(void);
+ void Lang_CleanupZip(void);
+ void Lang_CleanupAfterCrash(void);
+ void Lang_EndLangSupport(void);
+ HINSTANCE Lang_FakeWinampLangHInst(HINSTANCE adjustedHInst);
+ void Lang_LocaliseAgentOnTheFly(BOOL refresh);
+
+ int extract_wlz_to_dir(wchar_t* readme_only_wlz_extraction, BOOL *skip);
+ char *getString(UINT uID, char *str, size_t maxlen);
+ wchar_t *getGUIDstr(const GUID, wchar_t *target);
+
+ int LPMessageBox(HWND parent, UINT idMessage, UINT idTitle, UINT type);
+ wchar_t *getStringW(UINT uID, wchar_t *str, size_t maxlen);
+ #define LPCreateDialog(id, parent, proc) \
+ LPCreateDialogParam(id, parent, (DLGPROC)proc, 0)
+ HWND LPCreateDialogParam(int id, HWND parent, DLGPROC proc, LPARAM param);
+ #define LPDialogBox(id, parent, proc) \
+ LPDialogBoxParam(id, parent, (DLGPROC)proc, 0)
+ INT_PTR LPDialogBoxParam(int id, HWND parent, DLGPROC proc, LPARAM param);
+ #define LPDialogBoxW(id, parent, proc) \
+ LPDialogBoxParamW(id, parent, (DLGPROC)proc, 0)
+ INT_PTR LPDialogBoxParamW(int id, HWND parent, DLGPROC proc, LPARAM param);
+ #define LPCreateDialogW(id, parent, proc) \
+ LPCreateDialogParamW(id, parent, (DLGPROC)proc, 0)
+ HWND LPCreateDialogParamW(int id, HWND parent, DLGPROC proc, LPARAM param);
+ HMENU LPLoadMenu(UINT id);
+
+ /***************
+ *** video.cpp
+ */
+ extern int g_video_numaudiotracks;
+ extern int g_video_curaudiotrack;
+ void Browser_Create();
+ void Browser_Destroy();
+ extern wchar_t vidoutbuf_save[1024];
+ extern int is_fullscreen_video;
+ int ShowVideoWindow(int init_state);
+ void HideVideoWindow(int autoStop);
+ LRESULT CALLBACK video_WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
+ int video_isVideoPlaying();
+ int videoIsFullscreen();
+ void videoToggleFullscreen();
+ void videoForceFullscreenOff();
+ HWND video_Create();
+
+ /***************
+ *** video_ipc.cpp
+ */
+ int WINAPI VideoIPCProcedure(int which, WPARAM data, LRESULT *returnValue);
+
+ /***
+ ** videoui.c
+ */
+ void videoui_handlemouseevent(int x, int y, int type, int stats);
+
+ /***********************
+ *** vis.c
+ */
+ int vis_running();
+ void vis_start(HWND, wchar_t*);
+ void vis_stop();
+ void vsa_init(int numframes);
+ void vsa_deinit(void);
+ void vis_setinfo(int srate, int nch);
+ int vsa_getmode(int *sp, int *wa);
+ void vis_setprio(void);
+ int vsa_add(void *data, int timestamp);
+ int sa_add(char *values, int timestamp, int csa);
+ void sa_addpcmdata(void *PCMData, int nch, int bps, int timestamp);
+ void vsa_addpcmdata(void *PCMData, int nch, int bps, int timestamp);
+
+ LRESULT CALLBACK VIS_WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
+ extern HWND hVisWindow, hPLVisWindow;
+
+ void vis_setextwindow(HWND hwnd);
+
+ /***********************
+ *** rand.cpp
+ */
+ int warand();
+ float warandf();
+
+ /*******************
+ *** ipc.cpp
+ */
+ LRESULT Main_OnIPC(HWND hwnd, int which, WPARAM data);
+ LRESULT wa_register_ipc(WPARAM data);
+
+ /*******************
+ *** fullscreen.cpp
+ */
+ void BeginFullscreenAppMonitor();
+ void EndFullscreenAppMonitor();
+ void restoreAOT();
+ void dropAOT();
+
+ /*******************
+ *** main_mouse.cpp
+ */
+ int Main_OnRButtonUp(HWND hwnd, int x, int y, UINT flags);
+ int Main_OnLButtonUp(HWND hwnd, int x, int y, UINT flags);
+ int Main_OnCaptureChanged(HWND hwnd);
+ int Main_OnLButtonDown(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags);
+ int Main_OnLButtonDblClk(HWND hwnd, BOOL fDoubleClick, int x, int y, UINT keyFlags);
+ int Main_OnMouseMove(HWND hwnd, int x, int y, UINT keyFlags);
+
+ /*******************
+ *** main_nonclient.cpp
+ */
+ UINT Main_OnNCHitTest(HWND hwnd, int x, int y);
+ BOOL Main_OnNCActivate(HWND hwnd, BOOL fActive, HWND hwndActDeact, BOOL fMinimized);
+ UINT Main_OnNCCalcSize(HWND hwnd, BOOL fCalcValidRects, NCCALCSIZE_PARAMS * lpcsp);
+
+ /*******************
+ *** main_display.cpp
+ */
+ int Main_OnGetText(wchar_t *text, int sizeCch);
+ int Main_OnDisplayChange(HWND hwnd);
+ int Main_OnQueryNewPalette(HWND hwnd);
+ int Main_OnPaletteChanged(HWND hwnd, HWND hwndPaletteChange);
+
+ /*******************
+ *** main_buttons.cpp
+ */
+ int Main_OnButton1(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
+ int Main_OnButton2(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
+ int Main_OnButton3(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
+ int Main_OnButton4(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
+ int Main_OnButton5(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
+
+ /*******************
+ *** main_close.cpp
+ */
+ void Main_OnEndSession(HWND hwnd, BOOL fEnding);
+ int Main_OnClose(HWND hwnd);
+ int Main_OnDestroy(HWND hwnd);
+
+ /*******************
+ *** main_init.cpp
+ */
+ void RegisterWinamp();
+ BOOL InitApplication(HINSTANCE hInstance);
+ BOOL InitInstance(HINSTANCE hInstance, int nCmdShow);
+
+ /*******************
+ *** browser.cpp
+ */
+ /*
+ void LaunchBrowser(const char *url);
+ void OpenBrowser();
+ void Browser_toggleVisible(int showing);
+ void CloseBrowser();
+ void Browser_init();
+ void Browser_kill();
+ */
+
+ /*******************
+ *** ExternalCOM.cpp
+ */
+ DISPID __cdecl JSAPI1_GenerateUniqueDispatchId();
+ HRESULT __cdecl JSAPI1_Initialize();
+ HRESULT __cdecl JSAPI1_Uninitialize();
+ HRESULT __cdecl JSAPI1_SkinChanged();
+ HRESULT __cdecl JSAPI1_CurrentTitleChanged();
+
+ /*******************
+ *** SkinUtils.cpp
+ */
+ const char *GetFontName();
+ const wchar_t *GetFontNameW();
+ int GetFontSize();
+
+ /***
+ *** ASXv2.cpp
+ */
+ void loadasxv2fn(const wchar_t *filename, int whattodo);
+ /*******************
+ *** Wasabi.cpp
+ */
+ void Wasabi_Load();
+ void Wasabi_Unload();
+ void Wasabi_FindSystemServices();
+ void Wasabi_ForgetSystemServices();
+
+ /*******************
+ *** W5S.cpp
+ */
+ void w5s_init();
+ void w5s_deinit();
+
+ /*******************
+ *** vu.cpp
+ */
+ void vu_init(int numframes, int srate);
+ void vu_deinit();
+ void VU_Create();
+ void VU_Destroy();
+ int vu_add(char *values, int timestamp);
+ int export_vu_get(int channel);
+ void calcVuData(unsigned char *out, char *data, const int channels, const int bits);
+
+ // PlayQueue.cpp
+ int PlayQueue_OnEOF();
+
+ // paths.cpp
+ BOOL UtilGetSpecialFolderPath(HWND hwnd, TCHAR *path, int folder);
+
+ // cmdline.cpp
+ void GetParameter(const wchar_t *commandLine, wchar_t *yourBuffer, size_t yourBufferSize);
+
+ // unsorted
+ void readwrite_client_uid(int isWrite, wchar_t uid_str[64]);
+ BOOL read_compatmode();
+
+ extern char metric_plugin_list[];
+ char *export_sa_get_deprecated();
+ char *export_sa_get(char data[75*2 + 8]);
+ void export_sa_setreq(int);
+ extern HWND jump_hwnd, jump_hwnd2;
+ wchar_t *remove_urlcodesW(wchar_t *p);
+ int PlayList_get_lastlen();
+ HBITMAP draw_LBitmap(LPCTSTR bmname, const wchar_t *filename);
+ extern void draw_mb_info(char *t, int erase);
+ extern void FormString(char *in, char *out, int maxlen);
+ extern int plmodified, plcleared, plneedsave;
+ extern int g_has_deleted_current;
+ void peui_reset(HWND hwnd);
+ extern int volatile sa_override;
+ extern int deferring_show;
+ extern int g_showcode;
+
+ extern int eq_startuphack, pe_startuphack;
+ extern int g_skinloadedmanually;
+ void vis_init();
+ void resizeMediaWnd (HWND hwnd);
+ extern int g_skinloadedmanually;
+ int writeEQfile_init(wchar_t *file, char *name, unsigned char *tab);
+ extern int playlist_open(HWND hwnd);
+ extern int setPlRating(int rating);
+ extern int setCurrentRating(int rating);
+ extern int got_ml;
+ int peui_isrbuttoncaptured();
+ extern void makeurlcodes(char *in, char *out);
+ extern HIMAGELIST toolbarIcons;
+ extern struct ITaskbarList3* pTaskbar3;
+ void OnTaskbarButtonCreated(BOOL force);
+ LRESULT Main_OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct);
+ LRESULT Main_OnWASystray(HWND hwnd, int id);
+ LRESULT Main_OnWAMPEGEOF(HWND hwnd);
+ LRESULT Main_OnSize(HWND hwnd, UINT state, int cx, int cy);
+ LRESULT Main_OnTimer(HWND hwnd, UINT id);
+ LRESULT Main_OnDropFiles(HWND hwnd, HDROP hdrop);
+ LRESULT Main_OnCopyData(HWND hwnd, COPYDATASTRUCT *cds);
+ extern int m_converting;
+ void DoInstall(int is_install);
+ wchar_t *ParseParameters(wchar_t *lpszCmdParam, int *bAdd, int *bBookmark, int *bHandle, int *nCmdShow, int *bCommand, int *bCmdParam, int *bAllowCompat);
+ #ifdef BETA
+ void ParseParametersExpired(wchar_t *lpszCmdParam);
+ #endif
+ void reg_associated_filetypes(int force);
+ wchar_t *FindNextCommand(wchar_t *cmdLine);
+ void parseCmdLine(wchar_t *cmdline, HWND hwnd);
+ wchar_t *CheckFileBase(wchar_t *lpszCmdParam, HWND hwnd_other, int *exit, int mode);
+ #define CheckSkin(lpszCmdParam, hwnd_other, exit) CheckFileBase(lpszCmdParam, hwnd_other, exit, 0)
+ #define CheckLang(lpszCmdParam, hwnd_other, exit) CheckFileBase(lpszCmdParam, hwnd_other, exit, 1)
+
+ void LoadPathsIni();
+ LRESULT Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
+ extern int g_BookmarkTop, g_SkinTop, g_LangTop;
+ extern int g_open_ml_item_in_pe;
+ void RegisterConfigGroups();
+ void CopyExtendedFileInfo(const wchar_t *source, const wchar_t *destination);
+
+ int ResizeComboBoxDropDown(HWND hwndDlg, UINT id, const char* str, int width);
+ int ResizeComboBoxDropDownW(HWND hwndDlg, UINT id, const wchar_t *str, int width);
+
+ // creditsrend.c
+
+ void render_togglecredits();
+ void render_quit(void);
+ void render_render(unsigned char *framebuffer, HDC hdc);
+ void render_init(int w, int h, char *pal);
+
+ // InW.cpp
+ int InW_IsOurFile(In_Module *mod, const wchar_t *filename);
+ int InW_Play(In_Module *mod, const wchar_t *filename);
+ int InW_InfoBox(In_Module *mod, const wchar_t *filename, HWND parent);
+ void InW_GetFileInfo(In_Module *mod, const wchar_t *filename, wchar_t *title, int *length);
+
+ // conversions.cpp
+ void Float32_To_Int16_Clip(void *destinationBuffer, signed int destinationStride, void *sourceBuffer, signed int sourceStride, unsigned int count);
+ void Float32_To_Int24_Clip(void *destinationBuffer, signed int destinationStride, void *sourceBuffer, signed int sourceStride, unsigned int count);
+
+ HANDLE DuplicateCurrentThread();
+
+ /* dwm.cpp */
+ extern BOOL atti_present;
+ void DisableVistaPreview();
+ void DoTheVistaVideoDance();
+ void RegisterThumbnailTab(HWND hWnd);
+ void UnregisterThumbnailTab(HWND hWnd);
+ void OnIconicThumbnail(int width, int height);
+ void OnThumbnailPreview();
+ void RefreshIconicThumbnail();
+
+ /* handler.cpp */
+ int HandleFilename(const wchar_t *filename);
+
+ /* IVideoD3DOSD.cpp */
+ HMODULE FindD3DX9();
+
+ /* AlbumArt.cpp */
+ void CleanNameForPath(wchar_t *name);
+
+ /* application.cpp */
+ BOOL IsDirectMouseWheelMessage(const UINT uMsg);
+ BOOL DirectMouseWheel_EnableConvertToMouseWheel(HWND hwnd, BOOL enable);
+ BOOL DirectMouseWheel_IsConvertToMouseWheelEnabled(HWND hwnd);
+ BOOL DirectMouseWheel_ProcessDialogMessage(HWND hwnd, unsigned int uMsg, WPARAM wParam, LPARAM lParam, const int controls[], int controlslen);
+ HWND ActiveChildWindowFromPoint(HWND hwnd, POINTS cursor_s, const int *controls, size_t controlsCount);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+#endif \ No newline at end of file