Solved

Using unicode strings in Comboxboxex  with  Win32 API C  problem

Posted on 2002-05-08
8
1,028 Views
Last Modified: 2013-12-03
Hello again, Experts!

I have a problem with the comboboxex using C Win32 API.

The comboboxex contains unicode strings (Chinese, Thai,Japanese,etc.)
Whenever I send CB_SELECTSTRING or CB_FINDSTRING to the comboboxex window with a unicode
string I get the index found as zero, even though there is a matching first character in the listbox(of the comboboxex).

Using a WCHAR buffer as destination, the strings extracted from the listbox(of comboboxex) with CB_GETSTRING are non-unicode!! Though the comboboxex displays the strings in its listbox as unicode!
Sending a CBEM_SETUNICODEFORMAT does nothing.

/////////////////
Example:
comboboxex listbox: (xxx denotes non-English characters)
---
 Chinese xxx  
 Japanese xxx
 ...
----
unicode string to find: "C"
-----------------
CB_SELECTSTRING/CB_FINDSTRING returns 0!!!
with WCHAR destination buffer, CB_GETLBTEXT returns non-unicode strings! The non-English characters become ??? in memory.
/////////////////

Are there preliminary steps needed before CB_SELECTSTRING/CB_FINDSTRING so that the comboboxex will return the right index?
Are there preliminary steps needed before CB_GETLBTEXT so that the comboboxex will return Unicode strings?
If so, what are they?

Any help / tips/ code are appreciated!! Thanks in advance!

Roland
0
Comment
Question by:RolandAZ
8 Comments
 
LVL 86

Expert Comment

by:jkr
ID: 6997262
>>I get the index found as zero

Actually, that's the correct behaviour/result when the string to find is at the 1st position (resembling index 0) - if nothing was found, you'd get CB_ERR, which is -1.
0
 
LVL 3

Expert Comment

by:GGRUNDY
ID: 6997651
If you are using NT,2000 or XP
try calling SendMessageW instead of SendMessage - see if that helps.
0
 
LVL 1

Author Comment

by:RolandAZ
ID: 6998561
jkr, GGUNDY,
Thanks for tips!

jkr,
it never returned CB_ERR, even if there is no matching string. :)

GGUNDY,
I'm using SendMessageW, but the CB_SELECTSTRING/CB_FINDSTRING/CB_GETSTRING still sees the strings as non-unicode.

--------------
I made a workaround by not using CB_SELECTSTRING/CB_FINDSTRING, but used CB_GETSTRING and MultiByteToWideChar the returned strings, and compared each one from the string to be searched.

But wish I could use the CB_SELECTSTRING/CB_FINDSTRING/CB_GETSTRING to work returned automatic unicode strings, though.


Thanks again , guys.
Roland



0
Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

 
LVL 1

Expert Comment

by:Yechezkel
ID: 6998856
Have you had a look at CBEM_SETUNICODEFORMAT?
0
 
LVL 1

Author Comment

by:RolandAZ
ID: 6998921
Yechezkel,
Yup! But CBEM_SETUNICODEFORMAT doesn't seem to affect it.

Roland
P.S. CB_GETSTRING (in above comment) is macro for  CB_GETLBTEXT

0
 

Accepted Solution

by:
CetusMOD earned 0 total points
ID: 10743301
PAQed, with points refunded (200)

CetusMOD
Community Support Moderator
0

Featured Post

Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Problem updating Access table using VB code 8 55
How to copy an image file into clipboard C/C++? 1 199
Problem to DocumentFormat 8 113
Why use this lambda? 12 39
This tutorial is about how to put some of your C++ program's functionality into a standard DLL, and how to make working with the EXE and the DLL simple and seamless.   We'll be using Microsoft Visual Studio 2008 and we will cut out the noise; that i…
This article shows how to make a Windows 7 gadget that extends its U/I with a flyout panel -- a window that pops out next to the gadget.  The example gadget shows several additional techniques:  How to automatically resize a gadget or flyout panel t…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question