Hello,

I'm trying to create a window with a C++ win32 app project. I am using creating the HWND object, setting its properties, and then registering the object. Also, there is a WindowProc function.

What seems to happen is that the object registers but when I call CreateWindowA(...), this function call fails and no window is created.

Also, it seems that Error 1407 is generated on the CreateWindowA call.

Here is the code, any help is appreciated:


****************************************************************************

// INCLUDES
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <windowsx.h>
#include <stdio.h>
#include <math.h>
#include <iostream>

// DEFINES
#define WINDOW_CLASS_NAME "WINCLASS1"

// GLOBALS
HWND main_window_handle = NULL; // declares the window handle

// FUNCTIONS
LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, 
							LPARAM lparam)
{

	PAINTSTRUCT ps;
	HDC hdc;

	switch(msg)
	{
		case WM_CREATE:
		{
			return(0);
		}	break;
		
		case WM_PAINT:
		{
			hdc = BeginPaint(hwnd, &ps);
			EndPaint(hwnd, &ps);
			return(0);
		}	break;

		case WM_DESTROY:
		{
			PostQuitMessage(0);
			return(0);
		} break;

		default: break;

	}

	return (DefWindowProc(hwnd, msg, wparam, lparam));
}

// WINMAIN
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance,
				   LPSTR lpcmdline, int ncmdshow)
{
	WNDCLASS winclass;
	HWND hwnd;
	MSG msg;

	winclass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
	winclass.lpfnWndProc = WindowProc;
	winclass.cbClsExtra = 0;
	winclass.cbWndExtra = 0;
	winclass.hInstance = hinstance;
	winclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	winclass.hCursor = LoadCursor(NULL, IDC_ARROW);
	winclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
	winclass.lpszMenuName = NULL;
	winclass.lpszClassName = (LPCWSTR)WINDOW_CLASS_NAME;

	if(!RegisterClass(&winclass))
		return(0);

	hwnd = CreateWindowA(    WINDOW_CLASS_NAME,
							 "Hello Dave",
							 WS_OVERLAPPEDWINDOW | WS_VISIBLE,
							 0, 0,
							 320, 200,
							 NULL,
							 NULL,
							 hinstance,
							 NULL);

	if(hwnd == NULL)
	{
		return(0);
	}

	main_window_handle = hwnd;

	while(1)
	{
		if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
		{
			if(msg.message = WM_QUIT) break;

			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	return (msg.wParam);
}
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.