Не работает, потому что макрос _T()
работает только с строковыми литералами constant .Определение для _T()
выглядит примерно так:
#ifdef UNICODE
#define _T(str) L##str
#else
#define _T(str) str
Поскольку вы, очевидно, компилируете в режиме Unicode, _T(full)
расширяется до Lfull
, что, очевидно, не то, что вам нужно.
В вашем случае просто введите full
без макроса _T()
, поскольку CString
определяет оператор преобразования в const wchar_t*
в режиме Unicode и const char*
в режиме не в Unicode.
ShellExecute(0, _T("open"), _T("c:\\IECapt"), full, 0, SW_HIDE);
Обратите внимание, что стандартный C ++ также предоставляет тип std::string
и тип std::wstring
, который выполняет почти то же, что и CString
, поэтому MFC фактически не требуется для манипулирования строками.std::string
не не предоставляет оператор преобразования, но предоставляет доступ к базовой строке в стиле C через c_str()
.