mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-26 17:16:20 +00:00
Fix compilation of NLMISC under MinGW
This commit is contained in:
parent
15dc492690
commit
3dd11fe157
29 changed files with 157 additions and 84 deletions
|
@ -875,9 +875,9 @@ MACRO(NL_SETUP_BUILD)
|
||||||
ENDIF(APPLE)
|
ENDIF(APPLE)
|
||||||
|
|
||||||
# Fix "relocation R_X86_64_32 against.." error on x64 platforms
|
# Fix "relocation R_X86_64_32 against.." error on x64 platforms
|
||||||
IF(TARGET_X64 AND WITH_STATIC AND NOT WITH_STATIC_DRIVERS)
|
IF(TARGET_X64 AND WITH_STATIC AND NOT WITH_STATIC_DRIVERS AND NOT MINGW)
|
||||||
ADD_PLATFORM_FLAGS("-fPIC")
|
ADD_PLATFORM_FLAGS("-fPIC")
|
||||||
ENDIF(TARGET_X64 AND WITH_STATIC AND NOT WITH_STATIC_DRIVERS)
|
ENDIF(TARGET_X64 AND WITH_STATIC AND NOT WITH_STATIC_DRIVERS AND NOT MINGW)
|
||||||
|
|
||||||
SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -ftemplate-depth-48")
|
SET(PLATFORM_CXXFLAGS "${PLATFORM_CXXFLAGS} -ftemplate-depth-48")
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,9 @@
|
||||||
#include "events.h"
|
#include "events.h"
|
||||||
#include "rect.h"
|
#include "rect.h"
|
||||||
#include "game_device.h"
|
#include "game_device.h"
|
||||||
#define NOMINMAX
|
#ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
#endif
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <dinput.h>
|
#include <dinput.h>
|
||||||
|
|
||||||
|
@ -101,7 +103,7 @@ public:
|
||||||
* \param we A windows eventsemitter. Can be NULL. Needed if you want to mix WIN32 events and Direct Input events
|
* \param we A windows eventsemitter. Can be NULL. Needed if you want to mix WIN32 events and Direct Input events
|
||||||
* (for example, a Direct Input Mouse and a Win32 Keyboard)
|
* (for example, a Direct Input Mouse and a Win32 Keyboard)
|
||||||
*/
|
*/
|
||||||
static CDIEventEmitter *create(HINSTANCE hinst, HWND hwnd, CWinEventEmitter *we);
|
static CDIEventEmitter *create(HINSTANCE hinst, HWND hwnd, CWinEventEmitter *we) throw(EDirectInput);
|
||||||
~CDIEventEmitter();
|
~CDIEventEmitter();
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
|
@ -220,7 +220,7 @@ private:
|
||||||
|
|
||||||
static TOldWinProcMap _OldWinProcMap;
|
static TOldWinProcMap _OldWinProcMap;
|
||||||
|
|
||||||
bool initInternal(HINSTANCE hInstance, HWND ownerWindow, uint32 localId, uint32 foreignId = NULL);
|
bool initInternal(HINSTANCE hInstance, HWND ownerWindow, uint32 localId, uint32 foreignId = 0);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static LRESULT CALLBACK listenerProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
static LRESULT CALLBACK listenerProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||||||
|
|
|
@ -86,6 +86,10 @@
|
||||||
# define NL_COMP_VC_VERSION 60
|
# define NL_COMP_VC_VERSION 60
|
||||||
# define NL_COMP_NEED_PARAM_ON_METHOD
|
# define NL_COMP_NEED_PARAM_ON_METHOD
|
||||||
# endif
|
# endif
|
||||||
|
# elif defined(__MINGW32__)
|
||||||
|
# define NL_COMP_MINGW
|
||||||
|
# define NL_COMP_GCC
|
||||||
|
# define NL_NO_ASM
|
||||||
# endif
|
# endif
|
||||||
# if defined(_HAS_TR1) && (_HAS_TR1 + 0) // VC9 TR1 feature pack or later
|
# if defined(_HAS_TR1) && (_HAS_TR1 + 0) // VC9 TR1 feature pack or later
|
||||||
# define NL_ISO_STDTR1_AVAILABLE
|
# define NL_ISO_STDTR1_AVAILABLE
|
||||||
|
@ -93,9 +97,13 @@
|
||||||
# define NL_ISO_STDTR1_NAMESPACE std::tr1
|
# define NL_ISO_STDTR1_NAMESPACE std::tr1
|
||||||
# endif
|
# endif
|
||||||
# ifdef _DEBUG
|
# ifdef _DEBUG
|
||||||
# define NL_DEBUG
|
# ifndef NL_DEBUG
|
||||||
|
# define NL_DEBUG
|
||||||
|
# endif
|
||||||
# elif defined (NDEBUG)
|
# elif defined (NDEBUG)
|
||||||
# define NL_RELEASE
|
# ifndef NL_RELEASE
|
||||||
|
# define NL_RELEASE
|
||||||
|
# endif
|
||||||
# else
|
# else
|
||||||
# error "Don't know the compilation mode"
|
# error "Don't know the compilation mode"
|
||||||
# endif
|
# endif
|
||||||
|
@ -109,7 +117,9 @@
|
||||||
# define _WIN32_WINNT 0x0600 // force VISTA minimal version in 64 bits
|
# define _WIN32_WINNT 0x0600 // force VISTA minimal version in 64 bits
|
||||||
# endif
|
# endif
|
||||||
// define NOMINMAX to be sure that windows includes will not define min max macros, but instead, use the stl template
|
// define NOMINMAX to be sure that windows includes will not define min max macros, but instead, use the stl template
|
||||||
# define NOMINMAX
|
# ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
# ifdef __APPLE__
|
# ifdef __APPLE__
|
||||||
# define NL_OS_MAC
|
# define NL_OS_MAC
|
||||||
|
|
|
@ -22,7 +22,9 @@
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
|
|
||||||
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
|
||||||
#define NOMINMAX
|
#ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
#endif
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
#include "displayer.h"
|
#include "displayer.h"
|
||||||
|
|
|
@ -26,6 +26,9 @@
|
||||||
#include <csetjmp>
|
#include <csetjmp>
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
|
#ifdef NL_COMP_MINGW
|
||||||
|
# define HAVE_BOOLEAN
|
||||||
|
#endif
|
||||||
#include <jpeglib.h>
|
#include <jpeglib.h>
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -53,7 +53,9 @@
|
||||||
# define _WIN32_WINNT 0x0400
|
# define _WIN32_WINNT 0x0400
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# define NOMINMAX
|
# ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
#elif defined (NL_OS_UNIX)
|
#elif defined (NL_OS_UNIX)
|
||||||
# define NL_WIN_CALLBACK
|
# define NL_WIN_CALLBACK
|
||||||
|
|
|
@ -20,7 +20,9 @@
|
||||||
#include "nel/misc/common.h"
|
#include "nel/misc/common.h"
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
# define NOMINMAX
|
# ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
# include <io.h>
|
# include <io.h>
|
||||||
# include <tchar.h>
|
# include <tchar.h>
|
||||||
|
@ -37,6 +39,7 @@
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
#ifndef NL_COMP_MINGW
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
# pragma message( " " )
|
# pragma message( " " )
|
||||||
|
|
||||||
|
@ -69,6 +72,7 @@ extern "C" long _ftol2( double dblSource ) { return _ftol( dblSource ); }
|
||||||
|
|
||||||
|
|
||||||
#endif // NL_OS_WINDOWS
|
#endif // NL_OS_WINDOWS
|
||||||
|
#endif // !NL_COMP_MINGW
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG_NEW
|
#ifdef DEBUG_NEW
|
||||||
|
@ -1040,7 +1044,7 @@ bool openDoc (const char *document)
|
||||||
HINSTANCE result = ShellExecuteA(NULL, "open", document, NULL,NULL, SW_SHOWDEFAULT);
|
HINSTANCE result = ShellExecuteA(NULL, "open", document, NULL,NULL, SW_SHOWDEFAULT);
|
||||||
|
|
||||||
// If it failed, get the .htm regkey and lookup the program
|
// If it failed, get the .htm regkey and lookup the program
|
||||||
if ((UINT)result <= HINSTANCE_ERROR)
|
if ((uintptr_t)result <= HINSTANCE_ERROR)
|
||||||
{
|
{
|
||||||
if (GetRegKey(HKEY_CLASSES_ROOT, ext.c_str(), key) == ERROR_SUCCESS)
|
if (GetRegKey(HKEY_CLASSES_ROOT, ext.c_str(), key) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,8 +34,10 @@
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
# define _WIN32_WINDOWS 0x0410
|
# define _WIN32_WINDOWS 0x0410
|
||||||
|
# ifndef NL_COMP_MINGW
|
||||||
# define WINVER 0x0400
|
# define WINVER 0x0400
|
||||||
# define NOMINMAX
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
# include <direct.h>
|
# include <direct.h>
|
||||||
# include <tchar.h>
|
# include <tchar.h>
|
||||||
|
@ -445,7 +447,7 @@ public:
|
||||||
|
|
||||||
EDebug() { _Reason = "Nothing about EDebug"; }
|
EDebug() { _Reason = "Nothing about EDebug"; }
|
||||||
|
|
||||||
~EDebug () { }
|
virtual ~EDebug() throw() {}
|
||||||
|
|
||||||
EDebug(EXCEPTION_POINTERS * pexp) : m_pexp(pexp) { nlassert(pexp != 0); createWhat(); }
|
EDebug(EXCEPTION_POINTERS * pexp) : m_pexp(pexp) { nlassert(pexp != 0); createWhat(); }
|
||||||
EDebug(const EDebug& se) : m_pexp(se.m_pexp) { createWhat(); }
|
EDebug(const EDebug& se) : m_pexp(se.m_pexp) { createWhat(); }
|
||||||
|
@ -755,7 +757,7 @@ public:
|
||||||
|
|
||||||
HANDLE getProcessHandle()
|
HANDLE getProcessHandle()
|
||||||
{
|
{
|
||||||
return CSystemInfo::isNT()?GetCurrentProcess():(HANDLE)GetCurrentProcessId();
|
return CSystemInfo::isNT()?GetCurrentProcess():(HANDLE)(uintptr_t)GetCurrentProcessId();
|
||||||
}
|
}
|
||||||
|
|
||||||
// return true if found
|
// return true if found
|
||||||
|
@ -797,7 +799,7 @@ public:
|
||||||
while (findAndErase(rawType, "classvector<char,class char_traits<char>,class allocator<char> >", "string")) ;
|
while (findAndErase(rawType, "classvector<char,class char_traits<char>,class allocator<char> >", "string")) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
string getFuncInfo (DWORD funcAddr, DWORD stackAddr)
|
string getFuncInfo (uintptr_t funcAddr, uintptr_t stackAddr)
|
||||||
{
|
{
|
||||||
string str ("NoSymbol");
|
string str ("NoSymbol");
|
||||||
|
|
||||||
|
@ -853,7 +855,7 @@ public:
|
||||||
|
|
||||||
if (stop==0 && (parse[i] == ',' || parse[i] == ')'))
|
if (stop==0 && (parse[i] == ',' || parse[i] == ')'))
|
||||||
{
|
{
|
||||||
ULONG *addr = (ULONG*)(stackAddr) + 2 + pos2++;
|
uintptr_t *addr = (uintptr_t*)(stackAddr) + 2 + pos2++;
|
||||||
|
|
||||||
string displayType = type;
|
string displayType = type;
|
||||||
cleanType (type, displayType);
|
cleanType (type, displayType);
|
||||||
|
@ -882,7 +884,7 @@ public:
|
||||||
}
|
}
|
||||||
else if (type == "char*")
|
else if (type == "char*")
|
||||||
{
|
{
|
||||||
if (!IsBadReadPtr(addr,sizeof(char*)) && *addr != NULL)
|
if (!IsBadReadPtr(addr,sizeof(char*)) && *addr != 0)
|
||||||
{
|
{
|
||||||
if (!IsBadStringPtrA((char*)*addr,32))
|
if (!IsBadStringPtrA((char*)*addr,32))
|
||||||
{
|
{
|
||||||
|
@ -920,7 +922,7 @@ public:
|
||||||
{
|
{
|
||||||
if (!IsBadReadPtr(addr,sizeof(string*)))
|
if (!IsBadReadPtr(addr,sizeof(string*)))
|
||||||
{
|
{
|
||||||
if (*addr != NULL)
|
if (*addr != 0)
|
||||||
{
|
{
|
||||||
if (!IsBadReadPtr((void*)*addr,sizeof(string)))
|
if (!IsBadReadPtr((void*)*addr,sizeof(string)))
|
||||||
sprintf (tmp, "\"%s\"", ((string*)*addr)->c_str());
|
sprintf (tmp, "\"%s\"", ((string*)*addr)->c_str());
|
||||||
|
@ -929,9 +931,9 @@ public:
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!IsBadReadPtr(addr,sizeof(ULONG*)))
|
if (!IsBadReadPtr(addr,sizeof(uintptr_t*)))
|
||||||
{
|
{
|
||||||
if(*addr == NULL)
|
if(*addr == 0)
|
||||||
sprintf (tmp, "<NULL>");
|
sprintf (tmp, "<NULL>");
|
||||||
else
|
else
|
||||||
sprintf (tmp, "0x%p", *addr);
|
sprintf (tmp, "0x%p", *addr);
|
||||||
|
@ -956,7 +958,7 @@ public:
|
||||||
if (disp != 0)
|
if (disp != 0)
|
||||||
{
|
{
|
||||||
str += " + ";
|
str += " + ";
|
||||||
str += toString ((uint32)disp);
|
str += toString ((uintptr_t)disp);
|
||||||
str += " bytes";
|
str += " bytes";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1166,7 +1168,8 @@ void createDebug (const char *logPath, bool logInFile, bool eraseLastLog)
|
||||||
initAcquireTimeMap();
|
initAcquireTimeMap();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifndef NL_COMP_MINGW
|
||||||
|
# ifdef NL_OS_WINDOWS
|
||||||
// if (!IsDebuggerPresent ())
|
// if (!IsDebuggerPresent ())
|
||||||
{
|
{
|
||||||
// Use an environment variable to share the value among the EXE and its child DLLs
|
// Use an environment variable to share the value among the EXE and its child DLLs
|
||||||
|
@ -1180,7 +1183,8 @@ void createDebug (const char *logPath, bool logInFile, bool eraseLastLog)
|
||||||
SetEnvironmentVariable( SE_TRANSLATOR_IN_MAIN_MODULE, _T("1") );
|
SetEnvironmentVariable( SE_TRANSLATOR_IN_MAIN_MODULE, _T("1") );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // NL_OS_WINDOWS
|
# endif // NL_OS_WINDOWS
|
||||||
|
#endif //!NL_COMP_MINGW
|
||||||
|
|
||||||
INelContext::getInstance().setErrorLog(new CLog (CLog::LOG_ERROR));
|
INelContext::getInstance().setErrorLog(new CLog (CLog::LOG_ERROR));
|
||||||
INelContext::getInstance().setWarningLog(new CLog (CLog::LOG_WARNING));
|
INelContext::getInstance().setWarningLog(new CLog (CLog::LOG_WARNING));
|
||||||
|
|
|
@ -217,7 +217,7 @@ static void BuildCtrlName(LPCDIDEVICEOBJECTINSTANCE lpddoi,
|
||||||
|
|
||||||
//============================================================================
|
//============================================================================
|
||||||
// A callback to enumerate the controls of a device
|
// A callback to enumerate the controls of a device
|
||||||
static BOOL CALLBACK DIEnumDeviceObjectsCallback
|
BOOL CALLBACK DIEnumDeviceObjectsCallback
|
||||||
(
|
(
|
||||||
LPCDIDEVICEOBJECTINSTANCE lpddoi,
|
LPCDIDEVICEOBJECTINSTANCE lpddoi,
|
||||||
LPVOID pvRef
|
LPVOID pvRef
|
||||||
|
|
|
@ -113,8 +113,8 @@ static const CKeyConv DIToNel[] =
|
||||||
{DIK_CONVERT, KeyCONVERT, "CONVERT", false},
|
{DIK_CONVERT, KeyCONVERT, "CONVERT", false},
|
||||||
{DIK_NOCONVERT, KeyNONCONVERT, "NOCONVERT", true},
|
{DIK_NOCONVERT, KeyNONCONVERT, "NOCONVERT", true},
|
||||||
//
|
//
|
||||||
{DIK_KANA, KeyKANA, false},
|
{DIK_KANA, KeyKANA, "KANA", false},
|
||||||
{DIK_KANJI, KeyKANJI, false},
|
{DIK_KANJI, KeyKANJI, "KANJI", false},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ CDIKeyboard::CDIKeyboard(CWinEventEmitter *we, HWND hwnd)
|
||||||
_RepeatPeriod = (uint) (1000.f / (keybSpeed * (27.5f / 31.f) + 2.5f));
|
_RepeatPeriod = (uint) (1000.f / (keybSpeed * (27.5f / 31.f) + 2.5f));
|
||||||
}
|
}
|
||||||
// get keyboard layout
|
// get keyboard layout
|
||||||
_KBLayout = ::GetKeyboardLayout(NULL);
|
_KBLayout = ::GetKeyboardLayout(0);
|
||||||
|
|
||||||
_RepetitionDisabled.resize(NumKeys);
|
_RepetitionDisabled.resize(NumKeys);
|
||||||
_RepetitionDisabled.clearAll();
|
_RepetitionDisabled.clearAll();
|
||||||
|
|
|
@ -27,6 +27,12 @@
|
||||||
#define new DEBUG_NEW
|
#define new DEBUG_NEW
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef NL_COMP_MINGW
|
||||||
|
# undef FIELD_OFFSET
|
||||||
|
# define FIELD_OFFSET(t,f) offsetof(t,f)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
namespace NLMISC
|
namespace NLMISC
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -78,7 +84,7 @@ void CDIMouse::setMouseMode(TAxis axis, TAxisMode axisMode)
|
||||||
//======================================================
|
//======================================================
|
||||||
CDIMouse::TAxisMode CDIMouse::getMouseMode(TAxis axis) const
|
CDIMouse::TAxisMode CDIMouse::getMouseMode(TAxis axis) const
|
||||||
{
|
{
|
||||||
nlassert(axis < NumMouseAxis);
|
nlassert((int)axis < (int)NumMouseAxis);
|
||||||
return _MouseAxisMode[axis];
|
return _MouseAxisMode[axis];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,8 +39,10 @@
|
||||||
// these defines is for IsDebuggerPresent(). it'll not compile on windows 95
|
// these defines is for IsDebuggerPresent(). it'll not compile on windows 95
|
||||||
// just comment this and the IsDebuggerPresent to compile on windows 95
|
// just comment this and the IsDebuggerPresent to compile on windows 95
|
||||||
# define _WIN32_WINDOWS 0x0410
|
# define _WIN32_WINDOWS 0x0410
|
||||||
# define WINVER 0x0400
|
# ifndef NL_COMP_MINGW
|
||||||
# define NOMINMAX
|
# define WINVER 0x0400
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
#else
|
#else
|
||||||
# define IsDebuggerPresent() false
|
# define IsDebuggerPresent() false
|
||||||
|
|
|
@ -57,7 +57,7 @@ void *nlGetSymbolAddress(NL_LIB_HANDLE libHandle, const std::string &procName)
|
||||||
{
|
{
|
||||||
void *res = 0;
|
void *res = 0;
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
res = GetProcAddress(libHandle, procName.c_str());
|
res = (void *)GetProcAddress(libHandle, procName.c_str());
|
||||||
#elif defined(NL_OS_UNIX)
|
#elif defined(NL_OS_UNIX)
|
||||||
res = dlsym(libHandle, procName.c_str());
|
res = dlsym(libHandle, procName.c_str());
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -19,7 +19,9 @@
|
||||||
#include "nel/misc/log.h"
|
#include "nel/misc/log.h"
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
# define NOMINMAX
|
# ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
# include <process.h>
|
# include <process.h>
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -24,7 +24,9 @@
|
||||||
#include "nel/misc/debug.h"
|
#include "nel/misc/debug.h"
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
# define NOMINMAX
|
# ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
# include <imagehlp.h>
|
# include <imagehlp.h>
|
||||||
# pragma comment(lib, "imagehlp.lib")
|
# pragma comment(lib, "imagehlp.lib")
|
||||||
|
@ -148,7 +150,7 @@ static string getSourceInfo (DWORD_TYPE addr)
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
static DWORD_TYPE __stdcall GetModuleBase(HANDLE hProcess, DWORD_TYPE dwReturnAddress)
|
static uintptr_t __stdcall GetModuleBase(HANDLE hProcess, uintptr_t dwReturnAddress)
|
||||||
{
|
{
|
||||||
IMAGEHLP_MODULE moduleInfo;
|
IMAGEHLP_MODULE moduleInfo;
|
||||||
|
|
||||||
|
@ -169,9 +171,15 @@ static DWORD_TYPE __stdcall GetModuleBase(HANDLE hProcess, DWORD_TYPE dwReturnAd
|
||||||
|
|
||||||
if (cch && (lstrcmp(szFile, "DBFN")== 0))
|
if (cch && (lstrcmp(szFile, "DBFN")== 0))
|
||||||
{
|
{
|
||||||
if (!SymLoadModule(hProcess,
|
char mn[] = { 'M', 'N', 0x00 };
|
||||||
NULL, "MN",
|
#ifdef NL_OS_WIN64
|
||||||
NULL, (DWORD) memoryBasicInfo.AllocationBase, 0))
|
if (!SymLoadModule64(
|
||||||
|
#else
|
||||||
|
if (!SymLoadModule(
|
||||||
|
#endif
|
||||||
|
hProcess,
|
||||||
|
NULL, mn,
|
||||||
|
NULL, (uintptr_t)memoryBasicInfo.AllocationBase, 0))
|
||||||
{
|
{
|
||||||
// DWORD dwError = GetLastError();
|
// DWORD dwError = GetLastError();
|
||||||
// nlinfo("Error: %d", dwError);
|
// nlinfo("Error: %d", dwError);
|
||||||
|
@ -179,17 +187,23 @@ static DWORD_TYPE __stdcall GetModuleBase(HANDLE hProcess, DWORD_TYPE dwReturnAd
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!SymLoadModule(hProcess,
|
#ifdef NL_OS_WIN64
|
||||||
NULL, ((cch) ? szFile : NULL),
|
if (!SymLoadModule64(
|
||||||
NULL, (DWORD) memoryBasicInfo.AllocationBase, 0))
|
#else
|
||||||
|
if (!SymLoadModule(
|
||||||
|
#endif
|
||||||
|
hProcess,
|
||||||
|
NULL, ((cch) ? szFile : NULL),
|
||||||
|
NULL, (uintptr_t)memoryBasicInfo.AllocationBase, 0))
|
||||||
{
|
{
|
||||||
// DWORD dwError = GetLastError();
|
// DWORD dwError = GetLastError();
|
||||||
// nlinfo("Error: %d", dwError);
|
// nlinfo("Error: %d", dwError);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (DWORD) memoryBasicInfo.AllocationBase;
|
return (uintptr_t)memoryBasicInfo.AllocationBase;
|
||||||
}
|
}
|
||||||
// else
|
// else
|
||||||
// nlinfo("Error is %d", GetLastError());
|
// nlinfo("Error is %d", GetLastError());
|
||||||
|
@ -250,19 +264,13 @@ static void displayCallStack (CLog *log)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NL_OS_WIN64
|
// FIXME: Implement this for MinGW
|
||||||
WOW64_CONTEXT context;
|
#ifndef NL_COMP_MINGW
|
||||||
#else
|
|
||||||
CONTEXT context;
|
CONTEXT context;
|
||||||
#endif
|
|
||||||
::ZeroMemory (&context, sizeof(context));
|
::ZeroMemory (&context, sizeof(context));
|
||||||
context.ContextFlags = CONTEXT_FULL;
|
context.ContextFlags = CONTEXT_FULL;
|
||||||
|
|
||||||
#ifdef NL_OS_WIN64
|
|
||||||
if (Wow64GetThreadContext (GetCurrentThread(), &context) == FALSE)
|
|
||||||
#else
|
|
||||||
if (GetThreadContext (GetCurrentThread(), &context) == FALSE)
|
if (GetThreadContext (GetCurrentThread(), &context) == FALSE)
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
nlwarning ("DISP: GetThreadContext(%p) failed", GetCurrentThread());
|
nlwarning ("DISP: GetThreadContext(%p) failed", GetCurrentThread());
|
||||||
return;
|
return;
|
||||||
|
@ -309,6 +317,7 @@ static void displayCallStack (CLog *log)
|
||||||
|
|
||||||
log->displayNL (" %s : %s", srcInfo.c_str(), symInfo.c_str());
|
log->displayNL (" %s : %s", srcInfo.c_str(), symInfo.c_str());
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // NL_OS_WINDOWS
|
#else // NL_OS_WINDOWS
|
||||||
|
|
|
@ -44,8 +44,10 @@ using namespace std;
|
||||||
// these defines are for IsDebuggerPresent(). It'll not compile on windows 95
|
// these defines are for IsDebuggerPresent(). It'll not compile on windows 95
|
||||||
// just comment this and the IsDebuggerPresent to compile on windows 95
|
// just comment this and the IsDebuggerPresent to compile on windows 95
|
||||||
#define _WIN32_WINDOWS 0x0410
|
#define _WIN32_WINDOWS 0x0410
|
||||||
#define WINVER 0x0400
|
#ifndef NL_COMP_MINGW
|
||||||
#define NOMINMAX
|
# define WINVER 0x0400
|
||||||
|
# define NOMINMAX
|
||||||
|
#endif
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
#ifdef DEBUG_NEW
|
#ifdef DEBUG_NEW
|
||||||
|
|
|
@ -25,7 +25,9 @@
|
||||||
#include "nel/misc/xml_pack.h"
|
#include "nel/misc/xml_pack.h"
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
# define NOMINMAX
|
# ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
# include <sys/types.h>
|
# include <sys/types.h>
|
||||||
# include <sys/stat.h>
|
# include <sys/stat.h>
|
||||||
|
|
|
@ -23,7 +23,9 @@
|
||||||
#include "nel/misc/path.h"
|
#include "nel/misc/path.h"
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
# define NOMINMAX
|
# ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
# include <windowsx.h>
|
# include <windowsx.h>
|
||||||
# include <winuser.h>
|
# include <winuser.h>
|
||||||
|
@ -232,7 +234,7 @@ TReportResult report (const std::string &title, const std::string &header, const
|
||||||
|
|
||||||
// create the edit control
|
// create the edit control
|
||||||
HWND edit = CreateWindowW (L"EDIT", NULL, WS_BORDER | WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_READONLY | ES_LEFT | ES_MULTILINE, 7, 70, 429, 212, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
HWND edit = CreateWindowW (L"EDIT", NULL, WS_BORDER | WS_CHILD | WS_VISIBLE | WS_HSCROLL | WS_VSCROLL | ES_READONLY | ES_LEFT | ES_MULTILINE, 7, 70, 429, 212, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
||||||
SendMessage (edit, WM_SETFONT, (LONG) font, TRUE);
|
SendMessage (edit, WM_SETFONT, (WPARAM) font, TRUE);
|
||||||
|
|
||||||
// set the edit text limit to lot of :)
|
// set the edit text limit to lot of :)
|
||||||
SendMessage (edit, EM_LIMITTEXT, ~0U, 0);
|
SendMessage (edit, EM_LIMITTEXT, ~0U, 0);
|
||||||
|
@ -246,7 +248,7 @@ TReportResult report (const std::string &title, const std::string &header, const
|
||||||
{
|
{
|
||||||
// create the combo box control
|
// create the combo box control
|
||||||
checkIgnore = CreateWindowW (L"BUTTON", L"Don't display this report again", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX | BS_CHECKBOX, 7, 290, 429, 18, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
checkIgnore = CreateWindowW (L"BUTTON", L"Don't display this report again", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX | BS_CHECKBOX, 7, 290, 429, 18, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
||||||
SendMessage (checkIgnore, WM_SETFONT, (LONG) font, TRUE);
|
SendMessage (checkIgnore, WM_SETFONT, (WPARAM) font, TRUE);
|
||||||
|
|
||||||
if(ignoreNextTime)
|
if(ignoreNextTime)
|
||||||
{
|
{
|
||||||
|
@ -256,28 +258,28 @@ TReportResult report (const std::string &title, const std::string &header, const
|
||||||
|
|
||||||
// create the debug button control
|
// create the debug button control
|
||||||
debug = CreateWindowW (L"BUTTON", L"Debug", WS_CHILD | WS_VISIBLE, 7, 315, 75, 25, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
debug = CreateWindowW (L"BUTTON", L"Debug", WS_CHILD | WS_VISIBLE, 7, 315, 75, 25, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
||||||
SendMessage (debug, WM_SETFONT, (LONG) font, TRUE);
|
SendMessage (debug, WM_SETFONT, (WPARAM) font, TRUE);
|
||||||
|
|
||||||
if (debugButton == 0)
|
if (debugButton == 0)
|
||||||
EnableWindow(debug, FALSE);
|
EnableWindow(debug, FALSE);
|
||||||
|
|
||||||
// create the ignore button control
|
// create the ignore button control
|
||||||
ignore = CreateWindowW (L"BUTTON", L"Ignore", WS_CHILD | WS_VISIBLE, 75+7+7, 315, 75, 25, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
ignore = CreateWindowW (L"BUTTON", L"Ignore", WS_CHILD | WS_VISIBLE, 75+7+7, 315, 75, 25, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
||||||
SendMessage (ignore, WM_SETFONT, (LONG) font, TRUE);
|
SendMessage (ignore, WM_SETFONT, (WPARAM) font, TRUE);
|
||||||
|
|
||||||
if (ignoreButton == 0)
|
if (ignoreButton == 0)
|
||||||
EnableWindow(ignore, FALSE);
|
EnableWindow(ignore, FALSE);
|
||||||
|
|
||||||
// create the quit button control
|
// create the quit button control
|
||||||
quit = CreateWindowW (L"BUTTON", L"Quit", WS_CHILD | WS_VISIBLE, 75+75+7+7+7, 315, 75, 25, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
quit = CreateWindowW (L"BUTTON", L"Quit", WS_CHILD | WS_VISIBLE, 75+75+7+7+7, 315, 75, 25, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
||||||
SendMessage (quit, WM_SETFONT, (LONG) font, TRUE);
|
SendMessage (quit, WM_SETFONT, (WPARAM) font, TRUE);
|
||||||
|
|
||||||
if (quitButton == 0)
|
if (quitButton == 0)
|
||||||
EnableWindow(quit, FALSE);
|
EnableWindow(quit, FALSE);
|
||||||
|
|
||||||
// create the debug button control
|
// create the debug button control
|
||||||
sendReport = CreateWindowW (L"BUTTON", L"Don't send the report", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, 7, 315+32, 429, 18, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
sendReport = CreateWindowW (L"BUTTON", L"Don't send the report", WS_CHILD | WS_VISIBLE | BS_AUTOCHECKBOX, 7, 315+32, 429, 18, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
||||||
SendMessage (sendReport, WM_SETFONT, (LONG) font, TRUE);
|
SendMessage (sendReport, WM_SETFONT, (WPARAM) font, TRUE);
|
||||||
|
|
||||||
string formatedHeader;
|
string formatedHeader;
|
||||||
if (header.empty())
|
if (header.empty())
|
||||||
|
@ -302,7 +304,7 @@ TReportResult report (const std::string &title, const std::string &header, const
|
||||||
|
|
||||||
// create the label control
|
// create the label control
|
||||||
HWND label = CreateWindowW (L"STATIC", (LPCWSTR)uc.c_str(), WS_CHILD | WS_VISIBLE /*| SS_WHITERECT*/, 7, 7, 429, 51, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
HWND label = CreateWindowW (L"STATIC", (LPCWSTR)uc.c_str(), WS_CHILD | WS_VISIBLE /*| SS_WHITERECT*/, 7, 7, 429, 51, dialog, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(dialog, GWLP_HINSTANCE), NULL);
|
||||||
SendMessage (label, WM_SETFONT, (LONG) font, TRUE);
|
SendMessage (label, WM_SETFONT, (WPARAM) font, TRUE);
|
||||||
|
|
||||||
|
|
||||||
DebugDefaultBehavior = debugButton==1;
|
DebugDefaultBehavior = debugButton==1;
|
||||||
|
|
|
@ -20,7 +20,9 @@
|
||||||
#include "nel/misc/debug.h"
|
#include "nel/misc/debug.h"
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
# define NOMINMAX
|
# ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
#else
|
#else
|
||||||
# include <sys/types.h>
|
# include <sys/types.h>
|
||||||
|
|
|
@ -43,9 +43,11 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#define NOMINMAX
|
# ifndef __MINGW32__
|
||||||
#include <WinSock2.h>
|
#define NOMINMAX
|
||||||
#include <windows.h>
|
# endif
|
||||||
|
# include <WinSock2.h>
|
||||||
|
# include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif // NL_STDMISC_H
|
#endif // NL_STDMISC_H
|
||||||
|
|
|
@ -19,7 +19,9 @@
|
||||||
#include "nel/misc/system_info.h"
|
#include "nel/misc/system_info.h"
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
# define NOMINMAX
|
# ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
# include <WinNT.h>
|
# include <WinNT.h>
|
||||||
# include <tchar.h>
|
# include <tchar.h>
|
||||||
|
@ -1484,7 +1486,8 @@ bool CSystemInfo::getVideoInfo (std::string &deviceName, uint64 &driverVersion)
|
||||||
{
|
{
|
||||||
VS_FIXEDFILEINFO *info;
|
VS_FIXEDFILEINFO *info;
|
||||||
UINT len;
|
UINT len;
|
||||||
if (_VerQueryValue(&buffer[0], "\\", (VOID**)&info, &len))
|
char bslash[] = { '\\', 0x00 };
|
||||||
|
if (_VerQueryValue(&buffer[0], bslash, (VOID**)&info, &len))
|
||||||
{
|
{
|
||||||
driverVersion = (((uint64)info->dwFileVersionMS)<<32)|info->dwFileVersionLS;
|
driverVersion = (((uint64)info->dwFileVersionMS)<<32)|info->dwFileVersionLS;
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -18,7 +18,9 @@
|
||||||
#include "nel/misc/system_utils.h"
|
#include "nel/misc/system_utils.h"
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
#define NOMINMAX
|
#ifndef NL_COMP_MINGW
|
||||||
|
#define NOMINMAX
|
||||||
|
#endif
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
#ifdef _WIN32_WINNT_WIN7
|
#ifdef _WIN32_WINNT_WIN7
|
||||||
|
@ -222,7 +224,7 @@ bool CSystemUtils::supportUnicode()
|
||||||
bool CSystemUtils::isAzertyKeyboard()
|
bool CSystemUtils::isAzertyKeyboard()
|
||||||
{
|
{
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
uint16 klId = uint16((uint32)GetKeyboardLayout(0) & 0xFFFF);
|
uint16 klId = uint16((uintptr_t)GetKeyboardLayout(0) & 0xFFFF);
|
||||||
// 0x040c is French, 0x080c is Belgian
|
// 0x040c is French, 0x080c is Belgian
|
||||||
if (klId == 0x040c || klId == 0x080c)
|
if (klId == 0x040c || klId == 0x080c)
|
||||||
return true;
|
return true;
|
||||||
|
@ -312,7 +314,8 @@ bool CSystemUtils::setRegKey(const string &ValueName, const string &Value)
|
||||||
HKEY hkey;
|
HKEY hkey;
|
||||||
DWORD dwDisp;
|
DWORD dwDisp;
|
||||||
|
|
||||||
if (RegCreateKeyExA(HKEY_CURRENT_USER, RootKey.c_str(), 0, "", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, &dwDisp) == ERROR_SUCCESS)
|
char nstr[] = { 0x00 };
|
||||||
|
if (RegCreateKeyExA(HKEY_CURRENT_USER, RootKey.c_str(), 0, nstr, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hkey, &dwDisp) == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
if (RegSetValueExA(hkey, ValueName.c_str(), 0L, REG_SZ, (const BYTE *)Value.c_str(), (DWORD)(Value.size())+1) == ERROR_SUCCESS)
|
if (RegSetValueExA(hkey, ValueName.c_str(), 0L, REG_SZ, (const BYTE *)Value.c_str(), (DWORD)(Value.size())+1) == ERROR_SUCCESS)
|
||||||
res = true;
|
res = true;
|
||||||
|
|
|
@ -20,7 +20,9 @@
|
||||||
#include "nel/misc/debug.h"
|
#include "nel/misc/debug.h"
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
# define NOMINMAX
|
# ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
#endif // NL_OS_WINDOWS
|
#endif // NL_OS_WINDOWS
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,9 @@
|
||||||
#include "nel/misc/thread.h"
|
#include "nel/misc/thread.h"
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
# define NOMINMAX
|
# ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
#elif defined (NL_OS_UNIX)
|
#elif defined (NL_OS_UNIX)
|
||||||
# include <sys/time.h>
|
# include <sys/time.h>
|
||||||
|
|
|
@ -18,8 +18,9 @@
|
||||||
#include "nel/misc/win_displayer.h"
|
#include "nel/misc/win_displayer.h"
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
|
#ifndef NL_COMP_MINGW
|
||||||
#define NOMINMAX
|
# define NOMINMAX
|
||||||
|
#endif
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <windowsx.h>
|
#include <windowsx.h>
|
||||||
#include <winuser.h>
|
#include <winuser.h>
|
||||||
|
@ -263,7 +264,7 @@ void CWinDisplayer::updateLabels ()
|
||||||
{
|
{
|
||||||
access.value()[i].Hwnd = CreateWindowW (L"STATIC", L"", WS_CHILD | WS_VISIBLE | SS_SIMPLE, 0, 0, 0, 0, _HWnd, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(_HWnd, GWLP_HINSTANCE), NULL);
|
access.value()[i].Hwnd = CreateWindowW (L"STATIC", L"", WS_CHILD | WS_VISIBLE | SS_SIMPLE, 0, 0, 0, 0, _HWnd, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(_HWnd, GWLP_HINSTANCE), NULL);
|
||||||
}
|
}
|
||||||
SendMessage ((HWND)access.value()[i].Hwnd, WM_SETFONT, (LONG) _HFont, TRUE);
|
SendMessage ((HWND)access.value()[i].Hwnd, WM_SETFONT, (WPARAM)_HFont, TRUE);
|
||||||
needResize = true;
|
needResize = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -285,7 +286,7 @@ void CWinDisplayer::updateLabels ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SendMessage ((HWND)access.value()[i].Hwnd, WM_SETTEXT, 0, (LONG) n.c_str());
|
SendMessage ((HWND)access.value()[i].Hwnd, WM_SETTEXT, 0, (LPARAM) n.c_str());
|
||||||
access.value()[i].NeedUpdate = false;
|
access.value()[i].NeedUpdate = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -422,7 +423,7 @@ void CWinDisplayer::open (string titleBar, bool iconified, sint x, sint y, sint
|
||||||
dwStyle |= WS_HSCROLL;
|
dwStyle |= WS_HSCROLL;
|
||||||
|
|
||||||
_HEdit = CreateWindowExW(WS_EX_OVERLAPPEDWINDOW, RICHEDIT_CLASSW, L"", dwStyle, 0, _ToolBarHeight, w, h-_ToolBarHeight-_InputEditHeight, _HWnd, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(_HWnd, GWLP_HINSTANCE), NULL);
|
_HEdit = CreateWindowExW(WS_EX_OVERLAPPEDWINDOW, RICHEDIT_CLASSW, L"", dwStyle, 0, _ToolBarHeight, w, h-_ToolBarHeight-_InputEditHeight, _HWnd, (HMENU) NULL, (HINSTANCE) GetWindowLongPtr(_HWnd, GWLP_HINSTANCE), NULL);
|
||||||
SendMessage (_HEdit, WM_SETFONT, (LONG) _HFont, TRUE);
|
SendMessage (_HEdit, WM_SETFONT, (WPARAM)_HFont, TRUE);
|
||||||
|
|
||||||
// set the edit text limit to lot of :)
|
// set the edit text limit to lot of :)
|
||||||
SendMessage (_HEdit, EM_LIMITTEXT, -1, 0);
|
SendMessage (_HEdit, EM_LIMITTEXT, -1, 0);
|
||||||
|
@ -436,7 +437,7 @@ void CWinDisplayer::open (string titleBar, bool iconified, sint x, sint y, sint
|
||||||
_HInputEdit = CreateWindowExW(WS_EX_OVERLAPPEDWINDOW, RICHEDIT_CLASSW, L"", WS_CHILD | WS_VISIBLE
|
_HInputEdit = CreateWindowExW(WS_EX_OVERLAPPEDWINDOW, RICHEDIT_CLASSW, L"", WS_CHILD | WS_VISIBLE
|
||||||
/*| ES_MULTILINE*/ | ES_WANTRETURN | ES_NOHIDESEL | ES_AUTOHSCROLL, 0, h-_InputEditHeight, w, _InputEditHeight,
|
/*| ES_MULTILINE*/ | ES_WANTRETURN | ES_NOHIDESEL | ES_AUTOHSCROLL, 0, h-_InputEditHeight, w, _InputEditHeight,
|
||||||
_HWnd, NULL, (HINSTANCE) GetWindowLongPtr(_HWnd, GWLP_HINSTANCE), NULL);
|
_HWnd, NULL, (HINSTANCE) GetWindowLongPtr(_HWnd, GWLP_HINSTANCE), NULL);
|
||||||
SendMessageW (_HInputEdit, WM_SETFONT, (LONG) _HFont, TRUE);
|
SendMessageW (_HInputEdit, WM_SETFONT, (WPARAM)_HFont, TRUE);
|
||||||
|
|
||||||
LRESULT dwEvent = SendMessageW(_HInputEdit, EM_GETEVENTMASK, (WPARAM)0, (LPARAM)0);
|
LRESULT dwEvent = SendMessageW(_HInputEdit, EM_GETEVENTMASK, (WPARAM)0, (LPARAM)0);
|
||||||
dwEvent |= ENM_MOUSEEVENTS | ENM_KEYEVENTS | ENM_CHANGE;
|
dwEvent |= ENM_MOUSEEVENTS | ENM_KEYEVENTS | ENM_CHANGE;
|
||||||
|
@ -486,7 +487,7 @@ void CWinDisplayer::clear ()
|
||||||
SendMessageW (_HEdit, EM_SETSEL, 0, nIndex);
|
SendMessageW (_HEdit, EM_SETSEL, 0, nIndex);
|
||||||
|
|
||||||
// clear all the text
|
// clear all the text
|
||||||
SendMessageW (_HEdit, EM_REPLACESEL, FALSE, (LONG) "");
|
SendMessageW (_HEdit, EM_REPLACESEL, FALSE, (LPARAM) "");
|
||||||
|
|
||||||
SendMessageW(_HEdit,EM_SETMODIFY,(WPARAM)TRUE,(LPARAM)0);
|
SendMessageW(_HEdit,EM_SETMODIFY,(WPARAM)TRUE,(LPARAM)0);
|
||||||
|
|
||||||
|
@ -535,7 +536,7 @@ void CWinDisplayer::display_main ()
|
||||||
|
|
||||||
// store old selection
|
// store old selection
|
||||||
DWORD startSel, endSel;
|
DWORD startSel, endSel;
|
||||||
SendMessage (_HEdit, EM_GETSEL, (LONG)&startSel, (LONG)&endSel);
|
SendMessage (_HEdit, EM_GETSEL, (WPARAM)&startSel, (LPARAM)&endSel);
|
||||||
|
|
||||||
// find how many lines we have to remove in the current output to add new lines
|
// find how many lines we have to remove in the current output to add new lines
|
||||||
|
|
||||||
|
@ -549,7 +550,7 @@ void CWinDisplayer::display_main ()
|
||||||
|
|
||||||
if (nblineremove == _HistorySize)
|
if (nblineremove == _HistorySize)
|
||||||
{
|
{
|
||||||
SendMessage (_HEdit, WM_SETTEXT, 0, (LONG) "");
|
SendMessage (_HEdit, WM_SETTEXT, 0, (LPARAM) "");
|
||||||
startSel = endSel = -1;
|
startSel = endSel = -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -559,7 +560,7 @@ void CWinDisplayer::display_main ()
|
||||||
LRESULT oldIndex2 = SendMessageW (_HEdit, EM_LINEINDEX, nblineremove, 0);
|
LRESULT oldIndex2 = SendMessageW (_HEdit, EM_LINEINDEX, nblineremove, 0);
|
||||||
//nlassert (oldIndex2 != -1);
|
//nlassert (oldIndex2 != -1);
|
||||||
SendMessageW (_HEdit, EM_SETSEL, oldIndex1, oldIndex2);
|
SendMessageW (_HEdit, EM_SETSEL, oldIndex1, oldIndex2);
|
||||||
SendMessageW (_HEdit, EM_REPLACESEL, FALSE, (LONG) "");
|
SendMessageW (_HEdit, EM_REPLACESEL, FALSE, (LPARAM) "");
|
||||||
|
|
||||||
// update the selection due to the erasing
|
// update the selection due to the erasing
|
||||||
sint dt = (sint)(oldIndex2 - oldIndex1);
|
sint dt = (sint)(oldIndex2 - oldIndex1);
|
||||||
|
@ -599,7 +600,7 @@ void CWinDisplayer::display_main ()
|
||||||
}
|
}
|
||||||
|
|
||||||
// add the string to the edit control
|
// add the string to the edit control
|
||||||
SendMessageW (_HEdit, EM_REPLACESEL, FALSE, (LONG) str.c_str());
|
SendMessageW (_HEdit, EM_REPLACESEL, FALSE, (LPARAM) str.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// restore old selection
|
// restore old selection
|
||||||
|
|
|
@ -22,7 +22,9 @@
|
||||||
#include "nel/misc/event_server.h"
|
#include "nel/misc/event_server.h"
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
|
#ifndef NL_COMP_MINGW
|
||||||
#define NOMINMAX
|
#define NOMINMAX
|
||||||
|
#endif
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <windowsx.h>
|
#include <windowsx.h>
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,9 @@
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
|
|
||||||
#include "nel/misc/path.h"
|
#include "nel/misc/path.h"
|
||||||
|
#ifndef NL_COMP_MINGW
|
||||||
#define NOMINMAX
|
#define NOMINMAX
|
||||||
|
#endif
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
|
|
|
@ -34,7 +34,9 @@
|
||||||
#endif // HAVE_CONFIG_H
|
#endif // HAVE_CONFIG_H
|
||||||
|
|
||||||
#ifdef NL_OS_WINDOWS
|
#ifdef NL_OS_WINDOWS
|
||||||
# define NOMINMAX
|
# ifndef NL_COMP_MINGW
|
||||||
|
# define NOMINMAX
|
||||||
|
# endif
|
||||||
# include <windows.h>
|
# include <windows.h>
|
||||||
#endif // NL_OS_WINDOWS
|
#endif // NL_OS_WINDOWS
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue