Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Windows/Control/ComboBox.cpp')
-rwxr-xr-xWindows/Control/ComboBox.cpp56
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
}}