I'm compiling my Windows code as C however, I'm running into two problems. One of the errors I'm getting is where "bool" is an undeclared identifier even though it's highlighted as blue in Visual C++ 2005 Express. It's also not recognizing the "done" thing either as that's the name of the boolean variable. The other is that it's not recognizing my struct creations (line #156) saying it must have a struct/union type - uh, it does (or at least I think it does given this).

Code:
// First Windows app.cpp : Defines the entry point for the application.
/*
To do before making the first useful Windows application - what background scaling is (or "The Supernatural Olympics" version 1.1):
Draw images
Syncronize drawing images with monitor refresh rate
Call a function upon pressing a key
*/

/*	Trim fat from windows*/
#define WIN32_LEAN_AND_MEAN	
#pragma comment(linker, "/subsystem:windows")
/*	Pre-processor directives*/
#include "stdafx.h"
#include "Vfw.h"
#include <stdio.h>
#include <windows.h>

// defines and global vars

struct coord_short_xy
{
	short x;
	short y;
};

/*
short screen_size[2]; // screen resolution (e.g. 1920x1440)
short window_size_base[2]; // expected window size
short window_size[2]; // actual window size
short window_pos[2]; // window position
short window_border[2]; // size of the window border
*/
short title_bar_height; // height of the title bar in pixels

FILE *file_handle; // handle for reading/writing files
char bmp_image[]; // data for the bitmap image

HDRAWDIB img_handle; // pointer for a DrawDib handle
HWND hwnd; // window handle
HDC HDC_handle; // pointer for HDC handle
WNDCLASSEX windowClass; // for a window class
MSG msg; // a message for windows

LPBITMAPINFOHEADER bmp_head_pointer;
LPVOID bmp_image_pointer;
BITMAPFILEHEADER bmp_filehead;
BITMAPINFOHEADER bmp_head;

void draw_test_image()
{
	img_handle = DrawDibOpen();
	
	file_handle = fopen("C:\\My Documents\\My programs\\ulillilliacity.bmp", "rb"); // read the source BMP file to display, binary mode
	// fopen_s(file_handle, "C:\\My Documents\\My programs\\ulillilliacity.bmp", "rb"); // causes unexplained warning - 'FILE **' differs in levels of indirection from 'FILE *'
	// fseek(file_handle, 2, seek_set); // skip the first two bytes, the file identifier, the string "BM"
	// fill the bitmap file header struct reading from the file
	fread(&bmp_filehead.bfType, 2, 1, file_handle);
	fread(&bmp_filehead.bfSize, 4, 1, file_handle);
	fread(&bmp_filehead.bfReserved1, 2, 1, file_handle);
	fread(&bmp_filehead.bfReserved2, 2, 1, file_handle);
	fread(&bmp_filehead.bfOffBits, 4, 1, file_handle);
	
	// fill the bitmap info header struct reading from the file
	fread(&bmp_head.biSize, 4, 1, file_handle); // actual file size
	fread(&bmp_head.biWidth, 4, 1, file_handle);
	fread(&bmp_head.biHeight, 4, 1, file_handle);
	fread(&bmp_head.biPlanes, 2, 1, file_handle);
	fread(&bmp_head.biBitCount, 2, 1, file_handle);
	fread(&bmp_head.biCompression, 4, 1, file_handle);
	fread(&bmp_head.biSizeImage, 4, 1, file_handle);
	fread(&bmp_head.biXPelsPerMeter, 4, 1, file_handle);
	fread(&bmp_head.biYPelsPerMeter, 4, 1, file_handle);
	fread(&bmp_head.biClrUsed, 4, 1, file_handle);
	fread(&bmp_head.biClrImportant, 4, 1, file_handle);
	// fread(&bmp_head.biClrImportant, 4, 1, file_handle);
	fread(&bmp_image, 1, bmp_head.biSizeImage, file_handle); // read the remainder of the bits, the image data part
	fclose(file_handle);
	
	DrawDibDraw(img_handle, HDC_handle, 0, 0, bmp_head.biWidth, bmp_head.biHeight, bmp_head_pointer, bmp_image_pointer, 64, 48, 512, 384, 0);
	DrawDibClose(img_handle); // free the resources
	ReleaseDC(hwnd, HDC_handle); // free the DC handle
}

/* Windows Procedure Event Handler */
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT paintStruct;
	/* Device Context */
	HDC hDC; // local HDC declaration
	/* Text for display */
	char string[] = "Image test - there should be an image below"; 
	/* Switch message, condition that is met will execute */
	switch(message)
	{
		/* Window is being created */
		case WM_CREATE: 
			return 0;
			break;
		/* Window is closing */
		case WM_CLOSE: 
			PostQuitMessage(0);
			return 0;
			break;
		/* Window needs update */
		case WM_PAINT: 
			hDC = BeginPaint(hwnd,&paintStruct);
			/* Set txt color to sky blue */
			SetTextColor(hDC, 0x00FF8040);
			/* Display text in middle of window */
			TextOut(hDC,0,2,string,sizeof(string)-1);
			EndPaint(hwnd, &paintStruct);
			return 0;
			break;
		default:
			break;
	}
	return (DefWindowProc(hwnd,message,wParam,lParam));
}

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
	bool done; // flag saying when app is complete - undeclared identifier
	/* 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);
	windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
	windowClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
	windowClass.lpszMenuName = NULL;
	windowClass.lpszClassName = "MyClass";
	windowClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
	/* Register window class */
	if (!RegisterClassEx(&windowClass))
	{
		return 0;
	}
	
	/* SM_CXBORDER is 1
	SM_CYBORDER is 1
	SM_CXEDGE is 2
	SM_CYEDGE is 2
	SM_CXFIXEDFRAME is 3
	SM_CYFIXEDFRAME is 3
	SM_CXSIZEFRAME is 4
	SM_CYSIZEFRAME is 4
	SM_CYCAPTION is 18
	*/
	
	struct coord_short_xy window_border; // line #156 - missing semicolon before type?  There's no missing semicolon.
	struct coord_short_xy screen_size;
	struct coord_short_xy window_size_base;
	struct coord_short_xy window_size;
	struct coord_short_xy window_pos;
	
	window_border.x = GetSystemMetrics(SM_CXSIZEFRAME); // obtain border sizes, title bar height, and operating resolution
	window_border.y = GetSystemMetrics(SM_CYSIZEFRAME);
	title_bar_height = GetSystemMetrics(SM_CYCAPTION); // obtain height of the title bar
	screen_size.x = GetSystemMetrics(SM_CXSCREEN); // operating resolution
	screen_size.y = GetSystemMetrics(SM_CYSCREEN);
	window_size_base.x = 640; // interior window size
	window_size_base.y = 480;
	window_size.x = window_size_base.x+window_border.x*2; // full window size, including borders and title bar
	window_size.y = window_size_base.y+window_border.y*2+title_bar_height;
	window_pos.x = (screen_size.x/2)-(window_size.x/2); // center the window
	window_pos.y = (screen_size.y/2)-(window_size.y/2);
	
	/* Class registerd, so now create window */
	hwnd = CreateWindowEx(NULL,		// extended style
		"MyClass",			// class name
		"First Windows app",		// app name
		WS_OVERLAPPEDWINDOW |		// window style
		WS_VISIBLE |
		WS_SYSMENU,
		window_pos.x,window_pos.y,			// x/y coords
		window_size.x,window_size.y,			// width,height
		NULL,				// handle to parent
		NULL,				// handle to menu
		hInstance,			// application instance
		NULL);				// no extra parameter's
	/* Check if window creation failed */
	if (!hwnd)
		return 0;
	done = false; // initialize loop condition variable
	/* main message loop */
	
	HDC_handle = GetDC(hwnd);
	
	draw_test_image();
	
	while(!done)
	{
		PeekMessage(&msg,hwnd,NULL,NULL,PM_REMOVE);
		if (msg.message == WM_QUIT) // check for a quit message
		{
			done = true; // if found, quit app
		}
		else
		{
			/* Translate and dispatch to event queue */
			TranslateMessage(&msg); 
			DispatchMessage(&msg);
		}
	}
	return msg.wParam;
}
The build log shows this (skipping the first one as it says fopen is deprecated) - note the numerous errors saying the same thing:

c:\my documents\my programs\first windows app\first windows app\first windows app.c(125) : error C2065: 'bool' : undeclared identifier
c:\my documents\my programs\first windows app\first windows app\first windows app.c(125) : error C2146: syntax error : missing ';' before identifier 'done'
c:\my documents\my programs\first windows app\first windows app\first windows app.c(125) : error C2065: 'done' : undeclared identifier
c:\my documents\my programs\first windows app\first windows app\first windows app.c(156) : error C2143: syntax error : missing ';' before 'type'
c:\my documents\my programs\first windows app\first windows app\first windows app.c(157) : error C2143: syntax error : missing ';' before 'type'
c:\my documents\my programs\first windows app\first windows app\first windows app.c(158) : error C2143: syntax error : missing ';' before 'type'
c:\my documents\my programs\first windows app\first windows app\first windows app.c(159) : error C2143: syntax error : missing ';' before 'type'
c:\my documents\my programs\first windows app\first windows app\first windows app.c(160) : error C2143: syntax error : missing ';' before 'type'
c:\my documents\my programs\first windows app\first windows app\first windows app.c(162) : error C2065: 'window_border' : undeclared identifier
c:\my documents\my programs\first windows app\first windows app\first windows app.c(162) : error C2224: left of '.x' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(163) : error C2224: left of '.y' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(165) : error C2065: 'screen_size' : undeclared identifier
c:\my documents\my programs\first windows app\first windows app\first windows app.c(165) : error C2224: left of '.x' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(166) : error C2224: left of '.y' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(167) : error C2065: 'window_size_base' : undeclared identifier
c:\my documents\my programs\first windows app\first windows app\first windows app.c(167) : error C2224: left of '.x' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(168) : error C2224: left of '.y' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(169) : error C2065: 'window_size' : undeclared identifier
c:\my documents\my programs\first windows app\first windows app\first windows app.c(169) : error C2224: left of '.x' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(169) : error C2224: left of '.x' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(169) : error C2224: left of '.x' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(170) : error C2224: left of '.y' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(170) : error C2224: left of '.y' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(170) : error C2224: left of '.y' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(171) : error C2065: 'window_pos' : undeclared identifier
c:\my documents\my programs\first windows app\first windows app\first windows app.c(171) : error C2224: left of '.x' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(171) : error C2224: left of '.x' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(171) : error C2224: left of '.x' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(172) : error C2224: left of '.y' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(172) : error C2224: left of '.y' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(172) : error C2224: left of '.y' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(175) : warning C4047: 'function' : 'DWORD' differs in levels of indirection from 'void *'
c:\my documents\my programs\first windows app\first windows app\first windows app.c(175) : warning C4024: 'CreateWindowExA' : different types for formal and actual parameter 1
c:\my documents\my programs\first windows app\first windows app\first windows app.c(181) : error C2224: left of '.x' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(181) : error C2224: left of '.y' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(182) : error C2224: left of '.x' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(182) : error C2224: left of '.y' must have struct/union type
c:\my documents\my programs\first windows app\first windows app\first windows app.c(183) : warning C4047: 'function' : 'int' differs in levels of indirection from 'void *'
c:\my documents\my programs\first windows app\first windows app\first windows app.c(183) : warning C4024: 'CreateWindowExA' : different types for formal and actual parameter 5
c:\my documents\my programs\first windows app\first windows app\first windows app.c(184) : warning C4047: 'function' : 'int' differs in levels of indirection from 'void *'
c:\my documents\my programs\first windows app\first windows app\first windows app.c(184) : warning C4024: 'CreateWindowExA' : different types for formal and actual parameter 6
c:\my documents\my programs\first windows app\first windows app\first windows app.c(185) : warning C4047: 'function' : 'int' differs in levels of indirection from 'HINSTANCE'
c:\my documents\my programs\first windows app\first windows app\first windows app.c(185) : warning C4024: 'CreateWindowExA' : different types for formal and actual parameter 7
c:\my documents\my programs\first windows app\first windows app\first windows app.c(186) : warning C4047: 'function' : 'int' differs in levels of indirection from 'void *'
c:\my documents\my programs\first windows app\first windows app\first windows app.c(186) : warning C4024: 'CreateWindowExA' : different types for formal and actual parameter 8
c:\my documents\my programs\first windows app\first windows app\first windows app.c(186) : error C2198: 'CreateWindowExA' : too few arguments for call
c:\my documents\my programs\first windows app\first windows app\first windows app.c(190) : error C2065: 'false' : undeclared identifier
c:\my documents\my programs\first windows app\first windows app\first windows app.c(199) : warning C4047: 'function' : 'UINT' differs in levels of indirection from 'void *'
c:\my documents\my programs\first windows app\first windows app\first windows app.c(199) : warning C4024: 'PeekMessageA' : different types for formal and actual parameter 3
c:\my documents\my programs\first windows app\first windows app\first windows app.c(199) : warning C4047: 'function' : 'UINT' differs in levels of indirection from 'void *'
c:\my documents\my programs\first windows app\first windows app\first windows app.c(199) : warning C4024: 'PeekMessageA' : different types for formal and actual parameter 4
c:\my documents\my programs\first windows app\first windows app\first windows app.c(202) : error C2065: 'true' : undeclared identifier
c:\my documents\my programs\first windows app\first windows app\first windows app.c(211) : warning C4244: 'return' : conversion from 'WPARAM' to 'int', possible loss of data
What is meant by "int differs in levels of indirection from 'void *'"? I'm confused about the 'void *' part (A void pointer? How can a pointer be void?) and what the statement means. There were as many as 58 errors originally but I've fixed those but the area with the boolean variable declaration and the 5 struct declarations are what's messing me up.