Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Windows API - Beginner help

Tags:

c++

winapi

I try to create a very simple app using windows API.

I've done some small apps in console. This is the first time I do with Win32 apps. I've searched and found a document from forgers which is recommended in this site. But I try to write very first line:

 #include <stdafx.h>
 #include <windows.h>

 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
     LPSTR lpCmdLine, int nCmdShow)
 {
     MessageBoxW(NULL, "Good bye Cruel World", "Note", MB_OK);
     return 0;
 }

But it doesn't work (erased lines from default project created by VS 2008 and write these lines).

like image 450
Dzung Nguyen Avatar asked Feb 22 '26 22:02

Dzung Nguyen


1 Answers

There are two versions of most windows API calls, one which takes single byte string and one which takes 2 byte unicode strings. The single byte one has an A on the end of the name and the 2 byte one has a W. There are macros defined in windows.h so that if you leave the letter out it picks one or the other depending on compiler macros.

In your code you write -

MessageBoxW (NULL, "Good bye Cruel World", "Note", MB_OK ); 

You are calling the wide character version of the API with single byte strings which won't work. Either change to MessageBoxA or change your strings to wide strings -

MessageBoxW (NULL, L"Good bye Cruel World", L"Note", MB_OK ); 
like image 109
jcoder Avatar answered Feb 25 '26 15:02

jcoder