Solved

Using unicode strings in Comboxboxex  with  Win32 API C  problem

Posted on 2002-05-08
8
1,054 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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
PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

 
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

PeopleSoft Has Never Been Easier

PeopleSoft Adoption Made Smooth & Simple!

On-The-Job Training Is made Intuitive & Easy With WalkMe's On-Screen Guidance Tool.  Claim Your Free WalkMe Account Now

Question has a verified solution.

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

This article describes how to programmatically preset the "Pages per Sheet" option that's available with most printer drivers.   This setting lets you do "n-Up" printing, where two, four, or more pages are printed on each sheet of paper. If your …
Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
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…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…

623 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