1 // Windows/Control/ComboBox.cpp
2
3 #include "StdAfx.h"
4
5 #ifndef _UNICODE
6 #include "../../Common/StringConvert.h"
7 #endif
8
9 #include "ComboBox.h"
10
11 #ifndef _UNICODE
12 extern bool g_IsNT;
13 #endif
14
15 namespace NWindows {
16 namespace NControl {
17
GetLBText(int index,CSysString & s)18 LRESULT CComboBox::GetLBText(int index, CSysString &s)
19 {
20 s.Empty();
21 LRESULT len = GetLBTextLen(index);
22 if (len == CB_ERR)
23 return len;
24 len = GetLBText(index, s.GetBuffer((int)len + 1));
25 s.ReleaseBuffer();
26 return len;
27 }
28
29 #ifndef _UNICODE
AddString(LPCWSTR s)30 LRESULT CComboBox::AddString(LPCWSTR s)
31 {
32 if (g_IsNT)
33 return SendMessageW(CB_ADDSTRING, 0, (LPARAM)s);
34 return AddString(GetSystemString(s));
35 }
36
GetLBText(int index,UString & s)37 LRESULT CComboBox::GetLBText(int index, UString &s)
38 {
39 s.Empty();
40 if (g_IsNT)
41 {
42 LRESULT len = SendMessageW(CB_GETLBTEXTLEN, index, 0);
43 if (len == CB_ERR)
44 return len;
45 len = SendMessageW(CB_GETLBTEXT, index, (LPARAM)s.GetBuffer((int)len + 1));
46 s.ReleaseBuffer();
47 return len;
48 }
49 AString sa;
50 LRESULT len = GetLBText(index, sa);
51 if (len == CB_ERR)
52 return len;
53 s = GetUnicodeString(sa);
54 return s.Len();
55 }
56 #endif
57
58 }}
59