C++ - windows.h Problems
Hey guys,
Just bought the book OpenGL Game Programming. It gives some example code at the beginning for the "Hello World" windows application (using windows.h). I get some warnings and errors in my compiler (Dev C++) when I try to run the example code in the book. I'm thinking that I might not have the right windows.h or something. What am I doing wrong?
Thanks.
#define WIN32_LEAN_AND_MEAN // trim the excess fat from Windows#include <windows.h> // standard Windows app include// the Windows Procedure event handlerLRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ PAINTSTRUCT paintStruct; HDC hDC; // device context char string[] = "Hello, world!"; // text to be displayed switch(message) { case WM_CREATE: // window is being created return 0; break; case WM_CLOSE: // windows is closing PostQuitMessage(0); return 0; break; case WM_PAINT: // window needs updating hDC = BeginPaint(hwnd, &paintStruct); SetTextColor(hDC, COLORREF(0x00FF0000)); // set text color to blue TextOut(hDC, 150, 150, string, sizeof(string)-1); // display text in middle of window EndPaint(hwnd, &paintStruct); return 0; break; default: break; } return (DefWindowProc(hwnd, message, wParam, lParam));}int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd){ WNDCLASSEX windowClass; // window class HWND hwnd; // window handle MSG msg; // message bool done; // flag saying when our app is complete // fill out the window class structure windowClass.cbSize = sizeof(WNDCLASSEX); windowClass.style = CS_HREDRAW | CS_VREDRAW; windowClass.lpfnWndProc = WndProc; windowClass.cbClsExtra = 0; windowClass.cbWndExtra = 0; windowClass.hInstance = hInstance; windowClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); // default icon windowClass.hCursor = LoadCursor(NULL, IDC_ARROW); // default arrow windowClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); // white background windowClass.lpszMenuName = NULL; // no menu windowClass.lpszClassName = "MyClass"; windowClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO); // windows logo small icon // register the windows class if (!RegisterClassEx(&windowClass)) return 0; // class registered, so now create our window hwnd = CreateWindowEx(NULL, // extended style "MyClass", // class name "A REAL Windows Application!", // app name WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_SYSMENU, // style 100, 100, // x,y coordinate 400, 400, // width, height NULL, // handle to parent NULL, // handle to menu hInstance, // application instance NULL); // no extra params // check if window creation failed (hwnd would equal NULL) if (!hwnd) return 0; done = false; // intialize the loop condition variable // main message loop while (!done) { PeekMessage(&msg, hwnd, NULL, NULL, PM_REMOVE); if (msg.message == WM_QUIT) // do we receive a WM_QUIT message? { done = true; // if so, time to quit the application } else { TranslateMessage(&msg); // translate and dispatch to event queue DispatchMessage(&msg); } } return msg.wParam;}
Quote:
Compiler: Default compiler
Executing g++.exe...
g++.exe "C:\Program Files\Abyss Web Server\htdocs\fft_online\compwinapp\main.cpp" -o "C:\Program Files\Abyss Web Server\htdocs\fft_online\compwinapp\main.exe" -I"C:\Dev-Cpp\include\c++\3.3.1" -I"C:\Dev-Cpp\include\c++\3.3.1\mingw32" -I"C:\Dev-Cpp\include\c++\3.3.1\backward" -I"C:\Dev-Cpp\lib\gcc-lib\mingw32\3.3.1\include" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
C:/Program Files/Abyss Web Server/htdocs/fft_online/compwinapp/main.cpp: In
function `int WinMain(HINSTANCE__*, HINSTANCE__*, CHAR*, int)':
C:/Program Files/Abyss Web Server/htdocs/fft_online/compwinapp/main.cpp:73: warning: passing
NULL used for non-pointer argument passing 1 of `HWND__*
CreateWindowExA(long unsigned int, const CHAR*, const CHAR*, long unsigned
int, int, int, int, int, HWND__*, HMENU__*, HINSTANCE__*, void*)'
C:/Program Files/Abyss Web Server/htdocs/fft_online/compwinapp/main.cpp:73: warning: argument
to non-pointer type `long unsigned int' from NULL
C:/Program Files/Abyss Web Server/htdocs/fft_online/compwinapp/main.cpp:84: warning: passing
NULL used for non-pointer argument passing 3 of `BOOL PeekMessageA(tagMSG*,
HWND__*, unsigned int, unsigned int, unsigned int)'
C:/Program Files/Abyss Web Server/htdocs/fft_online/compwinapp/main.cpp:84: warning: argument
to non-pointer type `unsigned int' from NULL
C:/Program Files/Abyss Web Server/htdocs/fft_online/compwinapp/main.cpp:84: warning: passing
NULL used for non-pointer argument passing 4 of `BOOL PeekMessageA(tagMSG*,
HWND__*, unsigned int, unsigned int, unsigned int)'
C:/Program Files/Abyss Web Server/htdocs/fft_online/compwinapp/main.cpp:84: warning: argument
to non-pointer type `unsigned int' from NULL
C:\DOCUME~1\Andrew\LOCALS~1\Temp/ccEDbaaa.o(.text+0xb4):main.cpp: undefined reference to `SetTextColor@8'
C:\DOCUME~1\Andrew\LOCALS~1\Temp/ccEDbaaa.o(.text+0xe1):main.cpp: undefined reference to `TextOutA@20'
C:\DOCUME~1\Andrew\LOCALS~1\Temp/ccEDbaaa.o(.text+0x1ce):main.cpp: undefined reference to `GetStockObject@4'
Execution terminated
Sorry for the large amount of code and stuff. I didn't want to post it right away unless I needed to. Thanks for any help.
Well, I know how to fix the linker errors: Project -> Project Options -> General -> Type and select 'Windows GUI'. That tells the compiler that it will use the Windows GUI functions (with all of the libraries and such).
EDIT: Don't worry, we all have those moments. (Took me a little while to figure out too)
[Edited by - deadimp on January 16, 2005 8:53:16 PM]
EDIT: Don't worry, we all have those moments. (Took me a little while to figure out too)
[Edited by - deadimp on January 16, 2005 8:53:16 PM]
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement