Как передать строку в процедуру в C++, MSVS 2008? Делаю так Код (Text): BOOL Procedure(char); . . . BOOL Procedure(char szText[256]) { . . . Procedure("xxx"); Выдаёт Error 1 error C2664: 'Procedure' : cannot convert parameter from 'const char [4]' to 'char' P.S. Почему в C++ в случае MessageBox(0,L"xxx",0,MB_OK); без "L" не работает? Что "L" означает?
Так нужно всегда ("L" или "TEXT")? В моём случае так и останется - "xxx" без "L" и "TEXT"? Допустим я хочу внутри своей процедуры BOOL Procedure(char array[]); вызвать MessageBox с текстом из szText[256]. Как правильно записать MessageBox?
Если проект в ANSI: Код (Text): void ShowBox(const char *str) { MessageBox(str, ...); } void Caller() { ShowBox("my message"); } Ну а если UNICODE: Код (Text): void ShowBox(const wchar_t *str) { MessageBox(str, ...); } void Caller() { ShowBox(L"my message"); } Теперь, если ты хочешь сделать с макросами, в зависимости от установок проекта: Код (Text): void ShowBox(const TCHAR *str) { MessageBox(str, ...); } void Caller() { ShowBox(_T("my message")); }
Зачем в ShowBox(const char *str) использовать const? Как быть если нужно передать str в lvc.pszText структуры LVCOLUMN lvc; ? Как в MSVS 2008 проект из UNICODE переключить в ANSI режим?
vg чтобы повысить уверенность в том, что ShowBox не изменит строку, на которую указывает str. lvc.pszText = (LPSTR)str; p.s. прежде чем писать на С(++), советую выучить его. Судя по вопросам ты ни один учебник ты не читал дальше заглавия. (Не в обиду, это просто полезный совет).