Archived

This topic is now archived and is closed to further replies.

whereiswez

Simple question - WINAPI

Recommended Posts

whereiswez    122
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]  

Share this post


Link to post
Share on other sites
Guest Anonymous Poster   
Guest Anonymous Poster
The problem is that you''re returning 0 from WndProc rather than passing the message on to DefWindowProc.

Share this post


Link to post
Share on other sites
whereiswez    122
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

Share this post


Link to post
Share on other sites
whereiswez    122
*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 ..

Share this post


Link to post
Share on other sites