Шаг 4 - Окно Windows на С

В этом шаге мы создадим окно используя только структуры и функции Win Api. Это позволит нам посмотреть как все-таки устроена программа для Windows на другом уровне. Создаем приложение Win 32 Application и далее как Simple application. А вот код:

// СWin.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "windows.h"
#include "windowsx.h"


LRESULT CALLBACK WndProc(HWND, UINT, WPARAM,LPARAM);

int APIENTRY WinMain(
		HINSTANCE hInstance,
		HINSTANCE hPrevInstance,
		LPSTR lpCmdLine,
		int nCmdShow)
{
	HWND hwnd;
	MSG msg;
	WNDCLASS w;
		memset(&w,0,sizeof(WNDCLASS));
	w.style = CS_HREDRAW | CS_VREDRAW;
	w.lpfnWndProc = WndProc;
	w.hInstance = hInstance;
	w.hbrBackground = GetStockBrush(WHITE_BRUSH);
	w.lpszClassName = "C Windows";
	RegisterClass(&w);
	hwnd = CreateWindow("C Windows","C Windows", WS_OVERLAPPEDWINDOW,
		10,10,600,480,NULL,NULL,hInstance,NULL);
	ShowWindow(hwnd,nCmdShow);
	UpdateWindow(hwnd);
	while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wparam,LPARAM lparam)
{
	if (Message == WM_DESTROY )
	{
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd,Message,wparam,lparam);
}

Как видите приложение начинается с функции WinMain. Далее мы заполняем структуру окна WNDCLASS, в которую передаем функцию обработки сообщений w.lpfnWndProc = WndProc; после этого создаем окно CreateWindow, выводим на экран ShowWindow(hwnd,nCmdShow); и запускаем обработчик сообщений. Сначала сообщения попадают на обработку в окно, и если это сообщение закрытия, то if (Message == WM_DESTROY ) прекращает выполнение программы.

Этот код можно компилировать и запускать.


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 09.02.2000 (обновлено 10.12.2001)