Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
Visual C++ supports defining a wmain function and passing wide-character arguments to your Unicode application. You declare formal parameters to wmain, using a format similar to main. You can then pass wide-character arguments and, optionally, a wide-character environment pointer to the program. The argv and envp parameters to wmain are of type wchar_t*. For example:
wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] )
Note
MFC Unicode applications use wWinMain as the entry point. In this case, CWinApp::m_lpCmdLine is a Unicode string. Be sure to set wWinMainCRTStartup with the /ENTRY linker option.
If your program uses a main function, the multibyte-character environment is created by the run-time library at program startup. A wide-character copy of the environment is created only when needed (for example, by a call to the _wgetenv or _wputenv functions). On the first call to _wputenv, or on the first call to _wgetenv if an MBCS environment already exists, a corresponding wide-character string environment is created. The environment is then pointed to by the _wenviron global variable, which is a wide-character version of the _environ global variable. At this point, two copies of the environment (MBCS and Unicode) exist simultaneously and are maintained by the run-time system throughout the life of the program.
Similarly, if your program uses a wmain function, a wide-character environment is created at program startup and is pointed to by the _wenviron global variable. An MBCS (ASCII) environment is created on the first call to _putenv or getenv and is pointed to by the _environ global variable.
See Also
Support for Unicode
Unicode Programming Summary
WinMain Function