Olá.
Não funciona por vários motivos...
1-) No C++, não é possível copiar um texto para uma string constante ("Visual "). Você precisa alocar memória (dinamicamente ou não), e trabalhar em cima dessa memória (buffer). Este é o motivo principal pelo qual o seu código não funciona.
2-) Se por acaso o seu código funcionasse, o strcopy iria substituir o valor em memória, e você teria apenas "C++", ao invés da string completa "Visual C++". O que você quer usar ali, não e strcopy, mas strcat - para concatenar.
3-) Dependendo das configurações do seu projeto (Unicode ou não), a API MessageBox pode estar sendo redirecionada para a MessageBoxW, que recebe caracteres Unicode (wchar_t) e não Ansi (char) como a MessageBoxA. O ideal seria usar a define TCHAR se possível.
De qualquer forma, para colocar seu exemplo a funcionar:
Code Snippet
char
* getString(char * msg)
{
strcat(msg,
"C++");
return msg;
}
int
APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
char mensagem[100];
strcpy(mensagem,
"Visual ");
MessageBoxA(NULL, getString(mensagem),
"Win32 Message", MB_OK | MB_ICONEXCLAMATION | MB_TOPMOST);
return 0;
}
Abraços,
Caio Proiete
Caio Proiete http://www.caioproiete.com