porting multi-platform (windows, unix, inux) c++ application to unicode

I'm looking for the best resources to assist me in scoping out a project to convert a sizable multiplatform C++ application to use unicode text.  also any information on what needs to be addressed/changed in the code to enable unicode text would also be useful.  i may initially attempt this on the windows mfc version.  i've been starting to try to compile modules with the /D_UNICODE and /DUNICODE compilation options to start to see what problems i'm going to run into but i feel the scope of the project could be quite large.  i've also been doing some reading and wonder about the value of books like Unicode Explained by Jukka Korpela ann Unicode Demystified by Richard Gillam.
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

MFC is not portable. No need to waste time on that.
BarryFromBostonAuthor Commented:
What I'm talking about is an adaptation of the code to handle UNICODE text (not a platform port) .  The entire application, written in C and C++ now handles only single byte text and multi-byte text.  The MFC portion of the application only runs on Windows but there is an X based GUI that works on all platforms (Windows, Unix and Linux).  the idea will be to display text on all platforms using the UNICODE characters code numbering.
Really depends on how your application is written.  If your application has a lot of byte char manipulation operations , then good luck!  If it is MFC and you mostly use CString, you probably will be OK by compiing your code in UNICODE format with some changes...Either way, one thing for sure, it won't be small operation.  

I ran into a project that required me to handle UNICODE string in a program that is not compiled in UNICODE...at the end, due to too many changes and time required to compile it in UNICODE, I ended up keeping the program in ANSI, but modify a small portion to make use of the wide char operations to get the job done...for now...

These articles help me to understand UNICODE operations in C++/MFC
1. Generic-Text Route Mappings in the old MSDN
2. http://www.codeproject.com/KB/string/cppstringguide1.aspx

10 Tips to Protect Your Business from Ransomware

Did you know that ransomware is the most widespread, destructive malware in the world today? It accounts for 39% of all security breaches, with ransomware gangsters projected to make $11.5B in profits from online extortion by 2019.

BarryFromBostonAuthor Commented:
Thanks UTEK for your input and reference to the articles.  The more i learn about UNICODE the better off i will be.  What wide character operations could you do without actually compiling the code with UNICODE support.

I was still kind of hoping to hear from someone who has actually adapted an application to UNICODE completely, not just partially.  Also as my application is multi-platform i was hoping to hear from experts on the Unix/Linux side of the house (to which i also posted this question).
Basically, the wchar_t is a cross-platform Unicode character unit that work in windows and Unix.  If you look into the Generic-Text Route Mapping in MSDN library, a lot of wcsXXXX functions are ANSI compatible(avoid Microsoft specific).  You just need to include the right header file and you don't need the UNICODE option in your window compilation.

A brief google search can land you a lot of info in these areas.
e,g http://forums.devx.com/archive/index.php/t-94157.html
BarryFromBostonAuthor Commented:
Now you have my interest peaked.  So i have some follow up questions.  

1. Are you trying to say that it is possible to get at text using the unicode character codes but without compiling the code with the UNICODE symbol defined?  If so can you give me an example of code that does this?  This sounds miraculous and may help me considerably.
2. You keep saying to look at the "Generic-Text Route Mapping" in the MSDN library.  Is that actually a subsection of the library somewhere?  I found sections titled "Generic-Text Routine Mappings" which i think mostly boil down to the routine declarations from tchar.h with much better descriptions.
BarryFromBostonAuthor Commented:
More follow up questions:

One of my objectives with this conversion to UNICODE is to be able to have the user input characters from any language into text strings.  I had been hoping that i might be able to get my CEdit MFC-based dialog compiled for MBCS to enable this.  The more i read and think about it the more unlikely i'm thinking this will work.  So I'm thinking i may need to convert the entire MFC portion of our application to UNICODE in order to get this level of functionality.  I would still like to keep the bulk of non-GUI code from needing to know about UNICODE.

Is it possible to build just the MFC portion UNICODE and leave the rest SBCS as long as i'm cognizant of the translation that will be required?

And are there any known metrics about how long one could expect such an endeavor to take - based on something like lines of code or KB of code?

You can have Unicode capable UI and convert transparently for unaware backend - but imagine e.g cyrillic languages where backend will get equal input from different unicode strings.

I wonder if MIME-encoded ANSI strings can be produced from GUI. But then again - they will be hard to understand on old GUIs...
BarryFromBostonAuthor Commented:
I have determined that i need to only support UNICODE on the Windows platform.  I have also decided to implement UNICODE support in primarilly the MFC portion of the application as the user will interact with the application using the MFC-based GUI.  I will need to store UNICODE strings in our persistent database and may need to utilize the UNICODE strings in the non-GUI portion but will deal with that on a case-by-case basis.  

I decided to make my own guess as to how long this adaptation to UNICODE will take me based in part on how long it has taken me to change a set of source files and given how many total source files may be affected.

I would like to extend my thanks to UTEK for the assistance given.  The references supplied were educational.  I am now closing this issue as i am proceeding with my own solution.  Only time will tell if it works.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
System Programming

From novice to tech pro — start learning today.