diff options
Diffstat (limited to 'Windows/Control/ComboBox.cpp')
-rwxr-xr-x | Windows/Control/ComboBox.cpp | 56 |
1 files changed, 48 insertions, 8 deletions
diff --git a/Windows/Control/ComboBox.cpp b/Windows/Control/ComboBox.cpp index edef3a21..58c9b9c5 100755 --- a/Windows/Control/ComboBox.cpp +++ b/Windows/Control/ComboBox.cpp @@ -1,23 +1,63 @@ // Windows/Control/ComboBox.cpp +// #define _UNICODE +// #define UNICODE + #include "StdAfx.h" +#ifndef _UNICODE +#include "Common/StringConvert.h" +#endif + #include "Windows/Control/ComboBox.h" #include "Windows/Defs.h" +#ifndef _UNICODE +extern bool g_IsNT; +#endif + namespace NWindows { namespace NControl { -int CComboBox::GetLBText(int index, CSysString &string) +LRESULT CComboBox::GetLBText(int index, CSysString &s) +{ + s.Empty(); + LRESULT len = GetLBTextLen(index); + if (len == CB_ERR) + return len; + len = GetLBText(index, s.GetBuffer((int)len + 1)); + s.ReleaseBuffer(); + return len; +} + +#ifndef _UNICODE +LRESULT CComboBox::AddString(LPCWSTR s) +{ + if (g_IsNT) + return SendMessageW(CB_ADDSTRING, 0, (LPARAM)s); + return AddString(GetSystemString(s)); +} + +LRESULT CComboBox::GetLBText(int index, UString &s) { - string.Empty(); - int aLength = GetLBTextLen(index); - if (aLength == CB_ERR) - return aLength; - aLength = GetLBText(index, string.GetBuffer(aLength)); - string.ReleaseBuffer(); - return aLength; + s.Empty(); + if (g_IsNT) + { + LRESULT len = SendMessageW(CB_GETLBTEXTLEN, index, 0); + if (len == CB_ERR) + return len; + len = SendMessageW(CB_GETLBTEXT, index, (LPARAM)s.GetBuffer((int)len + 1)); + s.ReleaseBuffer(); + return len; + } + AString sa; + int len = GetLBText(index, sa); + if (len == CB_ERR) + return len; + s = GetUnicodeString(sa); + return s.Length(); } +#endif }} |