Share via


Support for Using wmain

Unicode TasksMultibyte Character Set (MBCS) Tasks

Microsoft Specific —>

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( intargc**, 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 as the Entry Point symbol in the Output category of the Link tab in the Project Settings dialog box.

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.

END Microsoft Specific

See Also   Unicode Programming Summary