![]() | |
![]() |
| | Thread Tools | Search this Thread | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
I don't understand why the compiler apparently thinks that I am using multi-byte character semantics. |
#3
| |||
| |||
|
|
If I create a new Win32 Console project (unmanaged C++, Visual Studio 2005), and add the following to the main program: // Add this above the main routine #include <windows.h> // Add this at the top of the file // Add this to the main routine MessageBox(NULL, "A", "B", MB_OK); The compiler (Visual Studio 2005) complains that it can't convert parameter 2 from 'const char [2]' to 'LPCWSTR'. I don't understand why the compiler apparently thinks that I am using multi-byte character semantics. The really bizarre part is that I have another project that contains calls to MessageBox, and that project compiles just fine. I've looked at the project properties in both projects, but I can't see anything that would obviously cause one to compile correctly and one to fail to compile. This all began when I tried to write some code that formats a message and sends it to the MessageBox function, like this: ostringstream msg; msg << "my message expression"; MessageBox(NULL, msg.str().c_str(), "Title", MB_OK); In this case, the compiler complains that it can't convert parameter 2 from 'const char *' to 'LPCWSTR'. But, as I said, I have this identical code in another project and it works just fine. TIA - Bob |
#4
| |||
| |||
|
|
If I create a new Win32 Console project (unmanaged C++, Visual Studio 2005), and add the following to the main program: // Add this above the main routine #include <windows.h> // Add this at the top of the file // Add this to the main routine MessageBox(NULL, "A", "B", MB_OK); The compiler (Visual Studio 2005) complains that it can't convert parameter 2 from 'const char [2]' to 'LPCWSTR'. |
|
I don't understand why the compiler apparently thinks that I am using multi-byte character semantics. The really bizarre part is that I have another project that contains calls to MessageBox, and that project compiles just fine. I've looked at the project properties in both projects, but I can't see anything that would obviously cause one to compile correctly and one to fail to compile. |
|
This all began when I tried to write some code that formats a message and sends it to the MessageBox function, like this: ostringstream msg; msg << "my message expression"; MessageBox(NULL, msg.str().c_str(), "Title", MB_OK); In this case, the compiler complains that it can't convert parameter 2 from 'const char *' to 'LPCWSTR'. But, as I said, I have this identical code in another project and it works just fine. |
#5
| |||
| |||
|
|
Hi, If I create a new Win32 Console project (unmanaged C++, Visual Studio 2005), and add the following to the main program: // Add this above the main routine #include <windows.h> // Add this at the top of the file // Add this to the main routine MessageBox(NULL, "A", "B", MB_OK); The compiler (Visual Studio 2005) complains that it can't convert parameter 2 from 'const char [2]' to 'LPCWSTR'. Enclose all strings in _T() that ensures that the correct character type (char or wchar_t) is used. I don't understand why the compiler apparently thinks that I am using multi-byte character semantics. The really bizarre part is that I have another project that contains calls to MessageBox, and that project compiles just fine. I've looked at the project properties in both projects, but I can't see anything that would obviously cause one to compile correctly and one to fail to compile. Project properties -> Configuration Properties -> General : Character Set This all began when I tried to write some code that formats a message and sends it to the MessageBox function, like this: ostringstream msg; msg << "my message expression"; MessageBox(NULL, msg.str().c_str(), "Title", MB_OK); In this case, the compiler complains that it can't convert parameter 2 from 'const char *' to 'LPCWSTR'. But, as I said, I have this identical code in another project and it works just fine. Define t-versions of those STL types based on TCHAR #include <tchar.h #include <string #include <sstream typedef std::basic_ostringstream<TCHAR> tstringstream; typedef std::basic_string<TCHAR> tstring; tstringstream msg; msg << _T("my message expression"); MessageBox(NULL, msg.c_str(), _T("Title"), MB_OK); The above compiles with both Unicode and Multi byte settings. -- SvenC |
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
| |