Существует две версии большинства вызовов Windows API, одна из которых принимает однобайтовую строку, а другая - 2-байтовые строки Юникода. Один байт имеет A в конце имени, а 2-байтовый - W. В windows.h определены макросы, так что если вы пропустите букву, она выбирает один или другой в зависимости от макросов компилятора.
В своем коде вы пишете -
MessageBoxW (NULL, "Good bye Cruel World", "Note", MB_OK );
Вы вызываете широкоформатную версию API с однобайтовыми строками, которая не будет работать. Либо измените на MessageBoxA, либо измените ваши строки на широкие строки -
MessageBoxW (NULL, L"Good bye Cruel World", L"Note", MB_OK );