Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


Simple question - WINAPI


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
5 replies to this topic

#1 whereiswez   Members   -  Reputation: 122

Like
Likes
Like

Posted 27 June 2001 - 08:36 AM

Hello I''ve gotten to make a window and use a menu system and all, but am trying to get this stuff into my head so I can stop referring to the simple tutorials. In breakin gup the creation of a simple window for winprog. (which it does work, so I''n not complaining) : I''ve extracted the register and create window procedures. The program compiles, but when run, the "Window creation Failed" error activates. What is essiantially required to make this program run ? (Not display the window, just "run" without errors). I''d just like to know how it works, instead of just memorizing code.. Wez
  
#include <windows.h>

const char g_szClassName[] = "myWindowClass";

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM 

lparam)
{
	return 0;
}

int WINAPI WinMain(HINSTANCE hinst, HINSTANCE hpinst, LPSTR cmdln, int 

cmdshow)
{
WNDCLASSEX wc;
HWND hwnd;

wc.cbSize	= sizeof(WNDCLASSEX);
wc.style	= CS_BYTEALIGNCLIENT;
wc.lpfnWndProc	= WndProc;
wc.cbClsExtra	= 0;
wc.cbWndExtra	= 0;
wc.hInstance	= hinst;	
wc.hIcon	= LoadIcon(NULL, IDI_EXCLAMATION);
wc.hCursor	= LoadCursor(NULL, IDC_CROSS);
wc.hbrBackground= (HBRUSH) (COLOR_APPWORKSPACE);
wc.lpszMenuName = NULL;
wc.lpszClassName= g_szClassName;
wc.hIconSm	= LoadIcon(NULL, IDI_EXCLAMATION);

if (!RegisterClassEx(&wc))
{
	MessageBox(NULL,"window reg failed","err",MB_OK);
	return 0;
}

hwnd = CreateWindowEx(
	WS_EX_CLIENTEDGE,
	g_szClassName,
	" - ? - ",
	WS_OVERLAPPEDWINDOW,
	CW_USEDEFAULT, CW_USEDEFAULT, 240, 120,
	NULL, NULL, hinst, NULL);

if (hwnd == NULL)
{
	MessageBox(NULL, "Window Creation Failed","err", MB_OK);
	return 0;
}

}
[/souce]  


Sponsor:

#2 Anonymous Poster_Anonymous Poster_*   Guests   -  Reputation:

Likes

Posted 27 June 2001 - 08:45 AM

The problem is that you''re returning 0 from WndProc rather than passing the message on to DefWindowProc.

#3 whereiswez   Members   -  Reputation: 122

Like
Likes
Like

Posted 27 June 2001 - 09:02 AM

oh ... yes ! .. um .. yes i .. er .. knew that already .. but .. er e=mc squared ..

heheh

thanx

hmm .. so

(btw im being sarc over there ^ .. i dint relly kno) ..

so .. in WndProc, instead of returning 0, I should return DefWindowProc(hwnd, msg, wparam, lparam);

and it should open and close without errors ? ..

will try

thanx

#4 Beer Hunter   Members   -  Reputation: 712

Like
Likes
Like

Posted 27 June 2001 - 11:31 AM

If you debug your program, you''ll find that the window procedure is called multiple times in response to a call to CreateWindow.

#5 Midnight Coder   Members   -  Reputation: 122

Like
Likes
Like

Posted 27 June 2001 - 12:37 PM

DefWindowProc doesn''t do default processing for WM_DESTROY, so you''ll have to add that to your procedure (or modifiy your message loop.

#6 whereiswez   Members   -  Reputation: 122

Like
Likes
Like

Posted 28 June 2001 - 08:32 AM

*LOL* yeah i found that out, BC complained about the prog being open, checked out task manager and there were gazzilion test.exes running *lololo*

thanx :D ..

atleast the code makes a bit more sense as to why bits and pieces are there



will be moving on to the next ones, when i have sum time ..




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS