Làm cách nào tôi có thể nhận được giá trị (chuỗi) của lựa chọn hiện tại trong hộp tổ hợp?Làm cách nào để có được giá trị (chuỗi) của lựa chọn hiện tại trong hộp tổ hợp?
(Không phải là chỉ số nguyên)
Làm cách nào tôi có thể nhận được giá trị (chuỗi) của lựa chọn hiện tại trong hộp tổ hợp?Làm cách nào để có được giá trị (chuỗi) của lựa chọn hiện tại trong hộp tổ hợp?
(Không phải là chỉ số nguyên)
Có thể có một cách tốt hơn (MFC của tôi là một chút gỉ), nhưng nó có vẻ như bạn sẽ có thể gọi CComboBox::GetLBText()
, đi qua nó là lựa chọn hiện tại sử dụng CComboBox::GetCurSel()
.
Sử dụng GetLBText, chuyển trong chỉ mục và đối tượng CString.
chỉnh sửa: quá chậm!
CB_GETCURSEL
trả lại chỉ số nguyên CB_GETLBTEXT
lợi nhuận chuỗi tại CB_GETCURSEL
Một đồng bằng cũ GetWindowText
công trình, quá.
Edit: điểm Như ajryan ra, GetWindowText
thực không làm việc trong một handler CBN_SELCHANGE
, vì sự lựa chọn mới đã có hiệu lực nhưng các văn bản cửa sổ chưa được cập nhật với nội dung của sự lựa chọn mới khi WM_COMMAND
được gửi.
Không có trong ON_CBN_SELCHANGE –
Hmmm. Có vẻ như bạn nói đúng. Tôi đoán tôi chưa bao giờ thử điều đó trước đây. Một chút ngạc nhiên, bởi vì thường có một "thay đổi" thông báo cho trước khi thay đổi được cam kết và một "thay đổi" thông báo cho sau đó, nhưng điều đó dường như không phải là trường hợp cho các hộp combo. – Joel
Hmm, hoạt động. Cảm ơn –
Có thể bạn đang nói "Hmm" vì bạn đang cố gắng xem giá trị mới trong trình xử lý CBN_SELCHANGE. Đó là kích hoạt/trước/thay đổi được cam kết, nhưng GetLBText đã có quyền truy cập vào thời điểm này .. –