annotate foosdk/sdk/foobar2000/shared/shared.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #ifndef _SHARED_DLL__SHARED_H_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 #define _SHARED_DLL__SHARED_H_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 #include "../../pfc/pfc.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 #include <assert.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 // Global flag - whether it's OK to leak static objects as they'll be released anyway by process death
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 #define FB2K_LEAK_STATIC_OBJECTS PFC_LEAK_STATIC_OBJECTS
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 #define FB2K_TARGET_MICROSOFT_STORE 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 #if defined(_WIN32) && ! FB2K_TARGET_MICROSOFT_STORE
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 #define FB2K_SUPPORT_CRASH_LOGS 1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 #ifndef FB2K_SUPPORT_CRASH_LOGS
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 #define FB2K_SUPPORT_CRASH_LOGS 0
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 #include <signal.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 #ifdef _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 #include <windows.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 #include <ddeml.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 #include <commctrl.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 #include <uxtheme.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 //#include <tmschema.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 #include <vssym32.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 #define SHARED_API /*NOTHROW*/ __stdcall
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 #ifndef SHARED_EXPORTS
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 #define SHARED_EXPORT __declspec(dllimport) SHARED_API
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 #define SHARED_EXPORT __declspec(dllexport) SHARED_API
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 #else // _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 #define SHARED_API
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 #define SHARED_EXPORT
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 #endif // _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 #ifdef _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 typedef HANDLE uSortString_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 typedef void* uSortString_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 // Implemented for non-Windows as well
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 void SHARED_EXPORT uOutputDebugString(const char * msg);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 unsigned SHARED_EXPORT uCharLower(unsigned c);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 unsigned SHARED_EXPORT uCharUpper(unsigned c);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 int SHARED_EXPORT uStringCompare(const char * elem1, const char * elem2);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 int SHARED_EXPORT uCharCompare(t_uint32 p_char1,t_uint32 p_char2);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 uSortString_t SHARED_EXPORT uSortStringCreate(const char * src);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 int SHARED_EXPORT uSortStringCompare(uSortString_t string1,uSortString_t string2);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 int SHARED_EXPORT uSortStringCompareEx(uSortString_t string1,uSortString_t string2,uint32_t flags);//flags - see win32 CompareString
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 int SHARED_EXPORT uSortPathCompare(uSortString_t string1,uSortString_t string2);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 void SHARED_EXPORT uSortStringFree(uSortString_t string);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 pfc::eventHandle_t SHARED_EXPORT GetInfiniteWaitEvent();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 } // extern "C"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 #ifdef _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 LRESULT SHARED_EXPORT uSendMessageText(HWND wnd,UINT msg,WPARAM wp,const char * text);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 LRESULT SHARED_EXPORT uSendDlgItemMessageText(HWND wnd,UINT id,UINT msg,WPARAM wp,const char * text);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 BOOL SHARED_EXPORT uGetWindowText(HWND wnd,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 BOOL SHARED_EXPORT uSetWindowText(HWND wnd,const char * p_text);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 BOOL SHARED_EXPORT uSetWindowTextEx(HWND wnd,const char * p_text,size_t p_text_length);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75 BOOL SHARED_EXPORT uGetDlgItemText(HWND wnd,UINT id,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 BOOL SHARED_EXPORT uSetDlgItemText(HWND wnd,UINT id,const char * p_text);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 BOOL SHARED_EXPORT uSetDlgItemTextEx(HWND wnd,UINT id,const char * p_text,size_t p_text_length);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78 BOOL SHARED_EXPORT uBrowseForFolder(HWND parent,const char * title,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 BOOL SHARED_EXPORT uBrowseForFolderWithFile(HWND parent,const char * title,pfc::string_base & out,const char * p_file_to_find);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 int SHARED_EXPORT uMessageBox(HWND wnd,const char * text,const char * caption,UINT type);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81 BOOL SHARED_EXPORT uAppendMenu(HMENU menu,UINT flags,UINT_PTR id,const char * content);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 BOOL SHARED_EXPORT uInsertMenu(HMENU menu,UINT position,UINT flags,UINT_PTR id,const char * content);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 int SHARED_EXPORT uStringCompare_ConvertNumbers(const char * elem1,const char * elem2);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 HINSTANCE SHARED_EXPORT uLoadLibrary(const char * name);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 HANDLE SHARED_EXPORT uCreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,BOOL bManualReset,BOOL bInitialState, const char * lpName);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 DWORD SHARED_EXPORT uGetModuleFileName(HMODULE hMod,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87 BOOL SHARED_EXPORT uSetClipboardString(const char * ptr);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 BOOL SHARED_EXPORT uGetClipboardString(pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89 BOOL SHARED_EXPORT uSetClipboardRawData(UINT format,const void * ptr,t_size size);//does not empty the clipboard
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 BOOL SHARED_EXPORT uGetClassName(HWND wnd,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 t_size SHARED_EXPORT uCharLength(const char * src);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 #ifdef DragQueryFile // don't declare if relevant Windows #include has been omitted, breaks on HDROP
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 BOOL SHARED_EXPORT uDragQueryFile(HDROP hDrop,UINT idx,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 UINT SHARED_EXPORT uDragQueryFileCount(HDROP hDrop);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 BOOL SHARED_EXPORT uGetTextExtentPoint32(HDC dc,const char * text,UINT cb,LPSIZE size);//note, cb is number of bytes, not actual unicode characters in the string (read: plain strlen() will do)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 BOOL SHARED_EXPORT uExtTextOut(HDC dc,int x,int y,UINT flags,const RECT * rect,const char * text,UINT cb,const int * lpdx);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 BOOL SHARED_EXPORT uTextOutColors(HDC dc,const char * src,UINT len,int x,int y,const RECT * clip,BOOL is_selected,DWORD default_color);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 BOOL SHARED_EXPORT uTextOutColorsTabbed(HDC dc,const char * src,UINT src_len,const RECT * item,int border,const RECT * clip,BOOL selected,DWORD default_color,BOOL use_columns);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 UINT SHARED_EXPORT uGetTextHeight(HDC dc);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 UINT SHARED_EXPORT uGetFontHeight(HFONT font);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 BOOL SHARED_EXPORT uChooseColor(DWORD * p_color,HWND parent,DWORD * p_custom_colors);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 HCURSOR SHARED_EXPORT uLoadCursor(HINSTANCE hIns,const char * name);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 HICON SHARED_EXPORT uLoadIcon(HINSTANCE hIns,const char * name);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105 HMENU SHARED_EXPORT uLoadMenu(HINSTANCE hIns,const char * name);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 BOOL SHARED_EXPORT uGetEnvironmentVariable(const char * name,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 HMODULE SHARED_EXPORT uGetModuleHandle(const char * name);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 UINT SHARED_EXPORT uRegisterWindowMessage(const char * name);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 BOOL SHARED_EXPORT uMoveFile(const char * src,const char * dst);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 BOOL SHARED_EXPORT uDeleteFile(const char * fn);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 DWORD SHARED_EXPORT uGetFileAttributes(const char * fn);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 BOOL SHARED_EXPORT uFileExists(const char * fn);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 BOOL SHARED_EXPORT uRemoveDirectory(const char * fn);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 HANDLE SHARED_EXPORT uCreateFile(const char * p_path,DWORD p_access,DWORD p_sharemode,LPSECURITY_ATTRIBUTES p_security_attributes,DWORD p_createmode,DWORD p_flags,HANDLE p_template);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 HANDLE SHARED_EXPORT uCreateFileMapping(HANDLE hFile,LPSECURITY_ATTRIBUTES lpFileMappingAttributes,DWORD flProtect,DWORD dwMaximumSizeHigh,DWORD dwMaximumSizeLow,const char * lpName);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 BOOL SHARED_EXPORT uCreateDirectory(const char * fn,LPSECURITY_ATTRIBUTES blah);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 HANDLE SHARED_EXPORT uCreateMutex(LPSECURITY_ATTRIBUTES blah,BOOL bInitialOwner,const char * name);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 BOOL SHARED_EXPORT uGetLongPathName(const char * name,pfc::string_base & out);//may just fail to work on old windows versions, present on win98/win2k+
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 BOOL SHARED_EXPORT uGetFullPathName(const char * name,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 BOOL SHARED_EXPORT uSearchPath(const char * path, const char * filename, const char * extension, pfc::string_base & p_out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 BOOL SHARED_EXPORT uFixPathCaps(const char * path,pfc::string_base & p_out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 //BOOL SHARED_EXPORT uFixPathCapsQuick(const char * path,pfc::string_base & p_out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 void SHARED_EXPORT uGetCommandLine(pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124 BOOL SHARED_EXPORT uGetTempPath(pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 BOOL SHARED_EXPORT uGetTempFileName(const char * path_name,const char * prefix,UINT unique,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 //! Win32 GetOpenFileName/GetSaveFileName wrapper. \n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 //! Extension mask uses | instead of \0 for delimiter; "Text files|*.txt|foo files|*.foo"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 BOOL SHARED_EXPORT uGetOpenFileName(HWND parent,const char * p_ext_mask,unsigned def_ext_mask,const char * p_def_ext,const char * p_title,const char * p_directory,pfc::string_base & p_filename,BOOL b_save);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 HANDLE SHARED_EXPORT uLoadImage(HINSTANCE hIns,const char * name,UINT type,int x,int y,UINT flags);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 UINT SHARED_EXPORT uRegisterClipboardFormat(const char * name);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 BOOL SHARED_EXPORT uGetClipboardFormatName(UINT format,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 BOOL SHARED_EXPORT uFormatSystemErrorMessage(pfc::string_base & p_out,DWORD p_code);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 // New in 1.1.12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 HANDLE SHARED_EXPORT CreateFileAbortable( __in LPCWSTR lpFileName,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138 __in DWORD dwDesiredAccess,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 __in DWORD dwShareMode,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 __in_opt LPSECURITY_ATTRIBUTES lpSecurityAttributes,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 __in DWORD dwCreationDisposition,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 __in DWORD dwFlagsAndAttributes,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 // Template file handle NOT supported.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 __in_opt HANDLE hAborter
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 int SHARED_EXPORT uCompareString(DWORD flags,const char * str1,size_t len1,const char * str2,size_t len2);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 class NOVTABLE uGetOpenFileNameMultiResult : public pfc::list_base_const_t<const char*>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 inline t_size GetCount() {return get_count();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154 inline const char * GetFileName(t_size index) {return get_item(index);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 virtual ~uGetOpenFileNameMultiResult() {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 typedef uGetOpenFileNameMultiResult * puGetOpenFileNameMultiResult;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 puGetOpenFileNameMultiResult SHARED_EXPORT uGetOpenFileNameMulti(HWND parent,const char * p_ext_mask,unsigned def_ext_mask,const char * p_def_ext,const char * p_title,const char * p_directory);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 // new in fb2k 1.1.1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 puGetOpenFileNameMultiResult SHARED_EXPORT uBrowseForFolderEx(HWND parent,const char * title, const char * initPath);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 puGetOpenFileNameMultiResult SHARED_EXPORT uEvalKnownFolder(const GUID& id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 class NOVTABLE uFindFile
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 protected:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 uFindFile() {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 virtual BOOL FindNext()=0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173 virtual const char * GetFileName()=0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 virtual t_uint64 GetFileSize()=0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 virtual DWORD GetAttributes()=0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 virtual FILETIME GetCreationTime()=0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 virtual FILETIME GetLastAccessTime()=0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 virtual FILETIME GetLastWriteTime()=0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 virtual ~uFindFile() {};
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 inline bool IsDirectory() {return (GetAttributes() & FILE_ATTRIBUTE_DIRECTORY) ? true : false;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 typedef uFindFile * puFindFile;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 puFindFile SHARED_EXPORT uFindFirstFile(const char * path);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 HINSTANCE SHARED_EXPORT uShellExecute(HWND wnd,const char * oper,const char * file,const char * params,const char * dir,int cmd);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188 HWND SHARED_EXPORT uCreateStatusWindow(LONG style,const char * text,HWND parent,UINT id);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 BOOL SHARED_EXPORT uShellNotifyIcon(DWORD dwMessage,HWND wnd,UINT id,UINT callbackmsg,HICON icon,const char * tip);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 BOOL SHARED_EXPORT uShellNotifyIconEx(DWORD dwMessage,HWND wnd,UINT id,UINT callbackmsg,HICON icon,const char * tip,const char * balloon_title,const char * balloon_msg);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 HWND SHARED_EXPORT uCreateWindowEx(DWORD dwExStyle,const char * lpClassName,const char * lpWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 BOOL SHARED_EXPORT uGetSystemDirectory(pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 BOOL SHARED_EXPORT uGetWindowsDirectory(pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 BOOL SHARED_EXPORT uSetCurrentDirectory(const char * path);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 BOOL SHARED_EXPORT uGetCurrentDirectory(pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 BOOL SHARED_EXPORT uExpandEnvironmentStrings(const char * src,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 BOOL SHARED_EXPORT uGetUserName(pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 BOOL SHARED_EXPORT uGetShortPathName(const char * src,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 HSZ SHARED_EXPORT uDdeCreateStringHandle(DWORD ins,const char * src);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204 BOOL SHARED_EXPORT uDdeQueryString(DWORD ins,HSZ hsz,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205 UINT SHARED_EXPORT uDdeInitialize(LPDWORD pidInst,PFNCALLBACK pfnCallback,DWORD afCmd,DWORD ulRes);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206 BOOL SHARED_EXPORT uDdeAccessData_Text(HDDEDATA data,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208 HIMAGELIST SHARED_EXPORT uImageList_LoadImage(HINSTANCE hi, const char * lpbmp, int cx, int cGrow, COLORREF crMask, UINT uType, UINT uFlags);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
210 #define uDdeFreeStringHandle DdeFreeStringHandle
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
211 #define uDdeCmpStringHandles DdeCmpStringHandles
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
212 #define uDdeKeepStringHandle DdeKeepStringHandle
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
213 #define uDdeUninitialize DdeUninitialize
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
214 #define uDdeNameService DdeNameService
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
215 #define uDdeFreeDataHandle DdeFreeDataHandle
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
216
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
217
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
218 typedef TVINSERTSTRUCTA uTVINSERTSTRUCT;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
219
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
220 HTREEITEM SHARED_EXPORT uTreeView_InsertItem(HWND wnd,const uTVINSERTSTRUCT * param);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
221 LPARAM SHARED_EXPORT uTreeView_GetUserData(HWND wnd,HTREEITEM item);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
222 bool SHARED_EXPORT uTreeView_GetText(HWND wnd,HTREEITEM item,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
223
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
224 #define uSetWindowsHookEx SetWindowsHookEx
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
225 #define uUnhookWindowsHookEx UnhookWindowsHookEx
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
226 #define uCallNextHookEx CallNextHookEx
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
227
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
228 typedef TCITEMA uTCITEM;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
229 int SHARED_EXPORT uTabCtrl_InsertItem(HWND wnd,t_size idx,const uTCITEM * item);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
230 int SHARED_EXPORT uTabCtrl_SetItem(HWND wnd,t_size idx,const uTCITEM * item);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
231
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
232 int SHARED_EXPORT uGetKeyNameText(LONG lparam,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
233
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
234 void SHARED_EXPORT uFixAmpersandChars(const char * src,pfc::string_base & out);//for system tray icon
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
235 void SHARED_EXPORT uFixAmpersandChars_v2(const char * src,pfc::string_base & out);//for other controls
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
236
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
237 #if FB2K_SUPPORT_CRASH_LOGS
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
238 t_size SHARED_EXPORT uPrintCrashInfo(LPEXCEPTION_POINTERS param,const char * extrainfo,char * out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
239 enum {uPrintCrashInfo_max_length = 1024};
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
240
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
241 void SHARED_EXPORT uPrintCrashInfo_Init(const char * name);//called only by the exe on startup
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
242 void SHARED_EXPORT uPrintCrashInfo_SetComponentList(const char * p_info);//called only by the exe on startup
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
243 void SHARED_EXPORT uPrintCrashInfo_AddEnvironmentInfo(const char * p_info);//called only by the exe on startup
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
244 void SHARED_EXPORT uPrintCrashInfo_SetDumpPath(const char * name);//called only by the exe on startup
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
245
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
246
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
247 #endif // FB2K_SUPPORT_CRASH_LOGS
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
248
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
249 void SHARED_EXPORT uDumpCrashInfo(LPEXCEPTION_POINTERS param);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
250
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
251 BOOL SHARED_EXPORT uListBox_GetText(HWND listbox,UINT index,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
252
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
253 void SHARED_EXPORT uPrintfV(pfc::string_base & out,const char * fmt,va_list arglist);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
254 static inline void uPrintf(pfc::string_base & out,const char * fmt,...) {va_list list;va_start(list,fmt);uPrintfV(out,fmt,list);va_end(list);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
255
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
256
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
257 class NOVTABLE uResource
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
258 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
259 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
260 virtual const void * GetPointer() = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
261 virtual unsigned GetSize() = 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
262 virtual ~uResource() {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
263 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
264
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
265 typedef uResource* puResource;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
266
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
267 puResource SHARED_EXPORT uLoadResource(HMODULE hMod,const char * name,const char * type,WORD wLang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL) );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
268 puResource SHARED_EXPORT LoadResourceEx(HMODULE hMod,const TCHAR * name,const TCHAR * type,WORD wLang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL) );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
269 HRSRC SHARED_EXPORT uFindResource(HMODULE hMod,const char * name,const char * type,WORD wLang = MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL) );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
270
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
271 BOOL SHARED_EXPORT uLoadString(HINSTANCE ins,UINT id,pfc::string_base & out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
272
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
273 BOOL SHARED_EXPORT uGetMenuString(HMENU menu,UINT id,pfc::string_base & out,UINT flag);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
274 BOOL SHARED_EXPORT uModifyMenu(HMENU menu,UINT id,UINT flags,UINT newitem,const char * data);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
275 UINT SHARED_EXPORT uGetMenuItemType(HMENU menu,UINT position);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
276
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
277
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
278 // New in 1.3.4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
279 // Load a system library safely - forcibly look in system directories, not elsewhere.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
280 HMODULE SHARED_EXPORT LoadSystemLibrary(const TCHAR * name);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
281
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
282 void SHARED_EXPORT uPrintCrashInfo_OnEvent(const char * message, t_size length);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
283 void SHARED_EXPORT uPrintCrashInfo_StartLogging(const char * path);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
284
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
285 }//extern "C"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
286
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
287
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
288 inline char * uCharNext(char * src) {return src+uCharLength(src);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
289 inline const char * uCharNext(const char * src) {return src+uCharLength(src);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
290
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
291
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
292 inline pfc::string uGetWindowText(HWND wnd) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
293 pfc::string8 temp;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
294 if (!uGetWindowText(wnd,temp)) temp = "";
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
295 return temp;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
296 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
297
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
298 inline pfc::string uGetDlgItemText(HWND wnd,UINT id) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
299 pfc::string8 temp;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
300 if (!uGetDlgItemText(wnd,id,temp)) temp = "";
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
301 return temp;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
302 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
303
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
304 #define uMAKEINTRESOURCE(x) ((const char*)LOWORD(x))
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
305
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
306 //other
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
307
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
308 #define uIsDialogMessage IsDialogMessage
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
309 #define uGetMessage GetMessage
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
310 #define uPeekMessage PeekMessage
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
311 #define uDispatchMessage DispatchMessage
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
312
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
313 #define uCallWindowProc CallWindowProc
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
314 #define uDefWindowProc DefWindowProc
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
315 #define uGetWindowLong GetWindowLong
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
316 #define uSetWindowLong SetWindowLong
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
317
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
318 #define uEndDialog EndDialog
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
319 #define uDestroyWindow DestroyWindow
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
320 #define uGetDlgItem GetDlgItem
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
321 #define uEnableWindow EnableWindow
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
322 #define uGetDlgItemInt GetDlgItemInt
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
323 #define uSetDlgItemInt SetDlgItemInt
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
324
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
325 #define uSendMessage SendMessage
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
326 #define uSendDlgItemMessage SendDlgItemMessage
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
327 #define uSendMessageTimeout SendMessageTimeout
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
328 #define uSendNotifyMessage SendNotifyMessage
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
329 #define uSendMessageCallback SendMessageCallback
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
330 #define uPostMessage PostMessage
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
331 #define uPostThreadMessage PostThreadMessage
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
332
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
333
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
334 class uStringPrintf
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
335 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
336 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
337 inline explicit uStringPrintf(const char * fmt,...)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
338 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
339 va_list list;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
340 va_start(list,fmt);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
341 uPrintfV(m_data,fmt,list);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
342 va_end(list);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
343 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
344 inline operator const char * () const {return m_data.get_ptr();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
345 inline t_size length() const {return m_data.length();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
346 inline bool is_empty() const {return length() == 0;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
347 inline const char * get_ptr() const {return m_data.get_ptr();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
348 const char * toString() const {return get_ptr();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
349 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
350 pfc::string8_fastalloc m_data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
351 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
352
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
353 inline LRESULT uButton_SetCheck(HWND wnd,UINT id,bool state) {return uSendDlgItemMessage(wnd,id,BM_SETCHECK,state ? BST_CHECKED : BST_UNCHECKED,0); }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
354 inline bool uButton_GetCheck(HWND wnd,UINT id) {return uSendDlgItemMessage(wnd,id,BM_GETCHECK,0,0) == BST_CHECKED;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
355
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
356 inline BOOL uGetLongPathNameEx(const char * name,pfc::string_base & out)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
357 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
358 if (uGetLongPathName(name,out)) return TRUE;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
359 return uGetFullPathName(name,out);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
360 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
361
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
362 #endif // _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
363
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
364 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
365 int SHARED_EXPORT stricmp_utf8(const char * p1,const char * p2) throw();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
366 int SHARED_EXPORT stricmp_utf8_ex(const char * p1,t_size len1,const char * p2,t_size len2) throw();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
367 int SHARED_EXPORT stricmp_utf8_stringtoblock(const char * p1,const char * p2,t_size p2_bytes) throw();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
368 int SHARED_EXPORT stricmp_utf8_partial(const char * p1,const char * p2,t_size num = ~0) throw();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
369 int SHARED_EXPORT stricmp_utf8_max(const char * p1,const char * p2,t_size p1_bytes) throw();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
370 t_size SHARED_EXPORT uReplaceStringAdd(pfc::string_base & out,const char * src,t_size src_len,const char * s1,t_size len1,const char * s2,t_size len2,bool casesens);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
371 t_size SHARED_EXPORT uReplaceCharAdd(pfc::string_base & out,const char * src,t_size src_len,unsigned c1,unsigned c2,bool casesens);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
372 //all lengths in uReplaceString functions are optional, set to -1 if parameters is a simple null-terminated string
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
373 void SHARED_EXPORT uAddStringLower(pfc::string_base & out,const char * src,t_size len = ~0);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
374 void SHARED_EXPORT uAddStringUpper(pfc::string_base & out,const char * src,t_size len = ~0);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
375 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
376
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
377 class comparator_stricmp_utf8 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
378 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
379 static int compare(const char * p_string1,const char * p_string2) throw() {return stricmp_utf8(p_string1,p_string2);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
380 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
381
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
382 inline void uStringLower(pfc::string_base & out,const char * src,t_size len = ~0) {out.reset();uAddStringLower(out,src,len);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
383 inline void uStringUpper(pfc::string_base & out,const char * src,t_size len = ~0) {out.reset();uAddStringUpper(out,src,len);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
384
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
385 inline t_size uReplaceString(pfc::string_base & out,const char * src,t_size src_len,const char * s1,t_size len1,const char * s2,t_size len2,bool casesens)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
386 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
387 out.reset();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
388 return uReplaceStringAdd(out,src,src_len,s1,len1,s2,len2,casesens);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
389 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
390
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
391 inline t_size uReplaceChar(pfc::string_base & out,const char * src,t_size src_len,unsigned c1,unsigned c2,bool casesens)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
392 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
393 out.reset();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
394 return uReplaceCharAdd(out,src,src_len,c1,c2,casesens);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
395 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
396
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
397 class string_lower
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
398 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
399 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
400 explicit string_lower(const char * ptr,t_size p_count = ~0) {uAddStringLower(m_data,ptr,p_count);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
401 inline operator const char * () const {return m_data.get_ptr();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
402 inline t_size length() const {return m_data.length();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
403 inline bool is_empty() const {return length() == 0;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
404 inline const char * get_ptr() const {return m_data.get_ptr();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
405 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
406 pfc::string8 m_data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
407 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
408
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
409 class string_upper
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
410 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
411 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
412 explicit string_upper(const char * ptr,t_size p_count = ~0) {uAddStringUpper(m_data,ptr,p_count);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
413 inline operator const char * () const {return m_data.get_ptr();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
414 inline t_size length() const {return m_data.length();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
415 inline bool is_empty() const {return length() == 0;}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
416 inline const char * get_ptr() const {return m_data.get_ptr();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
417 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
418 pfc::string8 m_data;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
419 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
420
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
421 #ifdef _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
422 struct t_font_description
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
423 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
424 enum
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
425 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
426 m_facename_length = LF_FACESIZE*2,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
427 m_height_dpi = 480,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
428 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
429
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
430 t_uint32 m_height;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
431 t_uint32 m_weight;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
432 t_uint8 m_italic;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
433 t_uint8 m_charset;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
434 char m_facename[m_facename_length];
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
435
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
436 bool operator==(const t_font_description & other) const {return g_equals(*this, other);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
437 bool operator!=(const t_font_description & other) const {return !g_equals(*this, other);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
438
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
439 static bool g_equals(const t_font_description & v1, const t_font_description & v2) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
440 return v1.m_height == v2.m_height && v1.m_weight == v2.m_weight && v1.m_italic == v2.m_italic && v1.m_charset == v2.m_charset && pfc::strcmp_ex(v1.m_facename, m_facename_length, v2.m_facename, m_facename_length) == 0;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
441 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
442
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
443 HFONT SHARED_EXPORT create() const;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
444 bool SHARED_EXPORT popup_dialog(HWND p_parent);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
445 void SHARED_EXPORT from_font(HFONT p_font);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
446 static t_font_description SHARED_EXPORT g_from_font(HFONT p_font);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
447 static t_font_description SHARED_EXPORT g_from_logfont(LOGFONT const & lf);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
448 static t_font_description SHARED_EXPORT g_from_system(int id = TMT_MENUFONT);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
449
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
450 template<typename t_stream,typename t_abort> void to_stream(t_stream p_stream,t_abort & p_abort) const;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
451 template<typename t_stream,typename t_abort> void from_stream(t_stream p_stream,t_abort & p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
452 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
453
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
454 /* relevant types not yet defined here */ template<typename t_stream,typename t_abort> void t_font_description::to_stream(t_stream p_stream,t_abort & p_abort) const {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
455 p_stream->write_lendian_t(m_height,p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
456 p_stream->write_lendian_t(m_weight,p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
457 p_stream->write_lendian_t(m_italic,p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
458 p_stream->write_lendian_t(m_charset,p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
459 p_stream->write_string(m_facename,PFC_TABSIZE(m_facename),p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
460 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
461
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
462 /* relevant types not yet defined here */ template<typename t_stream,typename t_abort> void t_font_description::from_stream(t_stream p_stream,t_abort & p_abort) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
463 p_stream->read_lendian_t(m_height,p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
464 p_stream->read_lendian_t(m_weight,p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
465 p_stream->read_lendian_t(m_italic,p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
466 p_stream->read_lendian_t(m_charset,p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
467 pfc::string8 temp;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
468 p_stream->read_string(temp,p_abort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
469 strncpy_s(m_facename,temp,PFC_TABSIZE(m_facename));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
470 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
471
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
472
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
473 struct t_modal_dialog_entry
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
474 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
475 HWND m_wnd_to_poke;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
476 bool m_in_use;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
477 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
478
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
479 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
480 void SHARED_EXPORT ModalDialog_Switch(t_modal_dialog_entry & p_entry);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
481 void SHARED_EXPORT ModalDialog_PokeExisting();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
482 bool SHARED_EXPORT ModalDialog_CanCreateNew();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
483
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
484 HWND SHARED_EXPORT FindOwningPopup(HWND p_wnd);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
485 void SHARED_EXPORT PokeWindow(HWND p_wnd);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
486 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
487
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
488 inline bool ModalDialogPrologue() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
489 bool rv = ModalDialog_CanCreateNew();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
490 if (!rv) ModalDialog_PokeExisting();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
491 return rv;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
492 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
493
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
494 //! The purpose of modal_dialog_scope is to help to avoid the modal dialog recursion problem. Current toplevel modal dialog handle is stored globally, so when creation of a new modal dialog is blocked, it can be activated to indicate the reason for the task being blocked.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
495 class modal_dialog_scope {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
496 public:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
497 //! This constructor initializes the modal dialog scope with specified dialog handle.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
498 inline modal_dialog_scope(HWND p_wnd) throw() : m_initialized(false) {initialize(p_wnd);}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
499 //! This constructor leaves the scope uninitialized (you can call initialize() later with your window handle).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
500 inline modal_dialog_scope() throw() : m_initialized(false) {}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
501 inline ~modal_dialog_scope() throw() {deinitialize();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
502
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
503 //! Returns whether creation of a new modal dialog is allowed (false when there's another one active).\n
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
504 //! NOTE: when calling context is already inside a modal dialog that you own, you should not be checking this before creating a new modal dialog.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
505 inline static bool can_create() throw(){return ModalDialog_CanCreateNew();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
506 //! Activates the top-level modal dialog existing, if one exists.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
507 inline static void poke_existing() throw() {ModalDialog_PokeExisting();}
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
508
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
509 //! Initializes the scope with specified window handle.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
510 void initialize(HWND p_wnd) throw()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
511 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
512 if (!m_initialized)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
513 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
514 m_initialized = true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
515 m_entry.m_in_use = true;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
516 m_entry.m_wnd_to_poke = p_wnd;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
517 ModalDialog_Switch(m_entry);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
518 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
519 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
520
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
521 void deinitialize() throw()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
522 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
523 if (m_initialized)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
524 {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
525 ModalDialog_Switch(m_entry);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
526 m_initialized = false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
527 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
528 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
529
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
530
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
531
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
532 private:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
533 modal_dialog_scope(const modal_dialog_scope & p_scope) = delete;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
534 const modal_dialog_scope & operator=(const modal_dialog_scope &) = delete;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
535
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
536 t_modal_dialog_entry m_entry;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
537
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
538 bool m_initialized;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
539 };
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
540
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
541 #endif // _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
542
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
543 #include "audio_math.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
544 #ifdef _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
545 #include "win32_misc.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
546 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
547
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
548 #include "fb2kdebug.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
549
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
550 #if FB2K_LEAK_STATIC_OBJECTS
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
551 #define FB2K_STATIC_OBJECT(TYPE, NAME) static TYPE & NAME = * new TYPE;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
552 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
553 #define FB2K_STATIC_OBJECT(TYPE, NAME) static TYPE NAME;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
554 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
555
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
556
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
557 #ifdef _MSC_VER
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
558 #define FB2K_DEPRECATED __declspec(deprecated)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
559 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
560 #define FB2K_DEPRECATED
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
561 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
562
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
563
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
564 namespace fb2k {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
565 #ifdef _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
566 typedef HWND hwnd_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
567 typedef HICON hicon_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
568 typedef HMENU hmenu_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
569 typedef HFONT hfont_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
570 #else
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
571 typedef void* hwnd_t; // Mac: bridged NSObject, context specific (NSWindow, NSView, NSViewController)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
572 typedef void* hicon_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
573 typedef void* hmenu_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
574 typedef void* hfont_t;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
575 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
576
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
577 inline void messageBeep() {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
578 #ifdef _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
579 MessageBeep(0);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
580 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
581 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
582 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
583
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
584 #ifdef __APPLE__
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
585 #include "shared-apple.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
586 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
587
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
588 #ifndef _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
589 #include "shared-nix.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
590 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
591
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
592
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
593 #endif //_SHARED_DLL__SHARED_H_