Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОСОБИЕ СозданиеWindowsПриложений.doc
Скачиваний:
21
Добавлен:
01.03.2016
Размер:
3.35 Mб
Скачать
    1. Общая структура Windows-приложений

Напоминает структуру консольного приложения. Роль функции main() исполняет функция WinMain(…). Структура приложения:

<Команды_препроцессора>

<Прототип_функции_главного_окна_WndProc(…)>

[ <Прототипы_прикладных_функций> ]

<Описания_глобальных_объектов>

<Описание_главной_функции_WinMain(…)>

<Описание_функции_главного_окна_WndProc(…)>

[ <Описание_прикладной_функции>

………………..

<Описание_прикладной_функции> ] .

Минимальный состав приложения предполагает наличие двух обязательных функций. Текст приложения приведен ниже.

//======================================================

// тип - WIN32 APPLICATION (Windows Application)

//======================================================

#include <windows.h>

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

char szWindowClass [] = "myWindowClass";

//=====================================

int WINAPI WinMain (HINSTANCE hInst,

HINSTANCE hPreInst,

LPSTR lpszCmdLine,

int nCmdShow)

{

// TODO: Place code here

// ……..

HWND hWnd;

MSG lpMsg;

// Initialize global strings

WNDCLASS wcApp;

wcApp.lpszClassName = szWindowClass;

wcApp.hInstance = hInst;

wcApp.lpfnWndProc = WndProc;

wcApp.hCursor = LoadCursor(NULL, IDC_ARROW);

wcApp.hIcon = 0;

wcApp.lpszMenuName = 0;

wcApp.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);

//wcApp.hbrBackground = GetStockObject(WHITE_BRUSH);

wcApp.style = CS_HREDRAW | CS_VREDRAW;

wcApp.cbClsExtra = 0;

wcApp.cbWndExtra = 0;

if ( ! RegisterClass (&wcApp))

return 0;

// Perform application initialization:

hWnd = CreateWindow (szWindowClass, "A Template",

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

CW_USEDEFAULT,

(HWND)NULL,

(HMENU) NULL,

hInst, NULL);

ShowWindow (hWnd, nCmdShow);

UpdateWindow (hWnd);

// Main message loop:

while (GetMessage (&lpMsg, NULL, 0, 0))

{

TranslateMessage (&lpMsg);

DispatchMessage (&lpMsg);

}

return (lpMsg.wParam);

}

//===========================================

LRESULT CALLBACK WndProc (HWND hWnd,

UINT messg,

WPARAM wParam,

LPARAM lParam)

{

HDC hdc;

PAINTSTRUCT ps;

switch (messg)

{

case WM_PAINT:

hdc = BeginPaint (hWnd, &ps);

//------Начало фрагмента пользователя

// …………………….

//------Конец фрагмента пользователя

ValidateRect (hWnd,NULL);

EndPaint (hWnd, &ps);

break;

case WM_DESTROY:

PostQuitMessage (0);

break;

default:

return ( DefWindowProc (hWnd, messg, wParam, lParam));

}

return 0;

}