2005-07-24 16:12:37 +02:00
|
|
|
/* $Id$ */
|
|
|
|
|
2005-07-24 08:09:54 +02:00
|
|
|
#ifndef WIN32_H
|
|
|
|
#define WIN32_H
|
|
|
|
|
2006-12-10 00:55:56 +01:00
|
|
|
#include <windows.h>
|
2005-07-27 21:22:38 +02:00
|
|
|
bool MyShowCursor(bool show);
|
|
|
|
|
2005-07-24 08:09:54 +02:00
|
|
|
typedef void (*Function)(int);
|
2006-11-28 20:58:13 +01:00
|
|
|
bool LoadLibraryList(Function proc[], const char *dll);
|
|
|
|
|
2006-12-03 18:47:53 +01:00
|
|
|
char *convert_from_fs(const wchar_t *name, char *utf8_buf, size_t buflen);
|
|
|
|
wchar_t *convert_to_fs(const char *name, wchar_t *utf16_buf, size_t buflen);
|
|
|
|
|
2006-12-10 12:46:43 +01:00
|
|
|
/* Function shortcuts for UTF-8 <> UNICODE conversion. When unicode is not
|
|
|
|
* defined these macros return the string passed to them, with UNICODE
|
|
|
|
* they return a pointer to the converted string. The only difference between
|
|
|
|
* XX_TO_YY and XX_TO_YY_BUFFER is that with the buffer variant you can
|
|
|
|
* specify where to put the converted string (and how long it can be). Without
|
|
|
|
* the buffer and internal buffer is used, of max 512 characters */
|
2006-11-28 20:58:13 +01:00
|
|
|
#if defined(UNICODE)
|
2006-12-03 18:47:53 +01:00
|
|
|
# define MB_TO_WIDE(str) OTTD2FS(str)
|
|
|
|
# define MB_TO_WIDE_BUFFER(str, buffer, buflen) convert_to_fs(str, buffer, buflen)
|
|
|
|
# define WIDE_TO_MB(str) FS2OTTD(str)
|
|
|
|
# define WIDE_TO_MB_BUFFER(str, buffer, buflen) convert_from_fs(str, buffer, buflen)
|
2006-11-28 20:58:13 +01:00
|
|
|
#else
|
(svn r9358) [0.5] -Backport from trunk (r9055, r9082, r9083, r9084, r9085, r9086):
- Codechange: Change windows unicode handling and allow a pure non-unicode build to function. (r9055)
- Codechange: [win32] Update VS2003 and VS2005 project files to build in UNICODE mode. When making a release it is probably better to make two binaries, one without UNICODE, the other with, guaranteeing full Win9x compatibility (UNICODE with MSLU also works, without it's even better). (r9082)
- Codechange: Be more lenient when trimming UTF-8 strings and don't terminate the string when an invalid encoding is encountered, but only focus on maximum length. (r9083)
- Fix: [win9x] Clipboard paste for Windows95 (doesn't have CF_UNICODETEXT) correctly converts the input to the current locale. (r9084)
- Fix: [win32] Move the initialisation of _codepage (non-UNICODE) to winMain as a dedicated server, or different video driver will not have a win32 messageloop. (r9085)
- Fix: [win32] Rewrite keyboard input and handle all keypresses in a WM_CHAR event. This saves us from doing translation (ToUnicode[Ex], ToAscii[Ex]), and we get free IME-input support as a plus. (r9086)
2007-03-20 01:02:18 +01:00
|
|
|
extern uint _codepage; // local code-page in the system @see win32_v.cpp:WM_INPUTLANGCHANGE
|
2006-12-03 18:47:53 +01:00
|
|
|
# define MB_TO_WIDE(str) (str)
|
|
|
|
# define MB_TO_WIDE_BUFFER(str, buffer, buflen) (str)
|
|
|
|
# define WIDE_TO_MB(str) (str)
|
|
|
|
# define WIDE_TO_MB_BUFFER(str, buffer, buflen) (str)
|
2006-11-28 20:58:13 +01:00
|
|
|
#endif
|
2005-07-24 08:09:54 +02:00
|
|
|
|
2006-12-10 00:55:56 +01:00
|
|
|
/* Override SHGetFolderPath with our custom implementation */
|
|
|
|
#if defined(SHGetFolderPath)
|
|
|
|
#undef SHGetFolderPath
|
|
|
|
#endif
|
|
|
|
#define SHGetFolderPath OTTDSHGetFolderPath
|
|
|
|
|
|
|
|
HRESULT OTTDSHGetFolderPath(HWND, int, HANDLE, DWORD, LPTSTR);
|
|
|
|
|
2006-12-03 20:03:38 +01:00
|
|
|
#if defined(__MINGW32__)
|
|
|
|
#define SHGFP_TYPE_CURRENT 0
|
|
|
|
#endif /* __MINGW32__ */
|
|
|
|
|
2005-09-18 22:56:44 +02:00
|
|
|
#endif /* WIN32_H */
|