Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
17
Добавлен:
14.02.2015
Размер:
641.54 Кб
Скачать

Программирование для Windows

Троицкий Виктор Сергеевич

tvs@capitalbank.ru

Литература

  1. Ч. Петзолд, Программирование для Windows ® 95; в двух томах. Том I: пер. с англ. — СПб.: BHV — Санкт-Петербург, 1997. — 752 с., ил.

  2. Ч. Петзолд, Программирование для Windows ® 95; в двух томах. Том II: пер. с англ. — СПб.: BHV — Санкт-Петербург, 1997. — 368 с., ил.

  3. C++ Builder 5. Руководство разработчика. Том 1. Основы (Джарод Холингвэрт, Дэн Баттерфилд, Боб Сворт, Джэйми Оллсоп, 2001)

  4. C++Builder 5. Руководство разработчика. Том 2. Сложные вопросы программирования (Джарод Холингвэрт, Дэн Баттерфилд, Боб Сворт, Джэйми Оллсоп, 2001).

  5. Уроки по C++ Builder (http://progs.biz/cppbuilder/cppbuilder/cppbuilder01.aspx)

Вам необходимо знать и уметь

  1. Близкое знакомство с языком С, С++;

  2. Объектно-ориентированное программирование, основные концепции, особенности реализации применительно к С++ и соответствующие подходы к проектированию программ;

  3. Реальное использование операционной системы Windows и умение работать с ее пользовательским интерфейсом.

Лекция 1

Классическое программирование для Windows

(см. Ч. Петзолд, Программирование для Windows ® 95; в двух томах. Том I: пер. с англ. — СПб.: BHV — Санкт-Петербург, 1997. — 752 с., ил.)

Почему Windows

ОС Windows является наиболее распространенной, и это же является ее первым достоинством. Именно для Windows выпускается огромное количество различных приложений, большинство из которых производится исключительно под Windows.

Инструменты разработки

В настоящее время существует множество средств, позволяющих облегчить программирование дляWindows. В основном это библиотеки классов, наиболее популярные из них этоMFC и VCL.Но мы с вами для начала изучим основы классического программирования дляWindows, использующее С и базовыйAPI. Изучив его, вы сможете более отчетливо представить, как действуютWindows и ее приложения, и это знание может оказаться весьма полезным.Кроме того мы будем использовать интегрированную среду разработчика(Integrated Development Environment, IDE). Эта среда может облегчить вам работу при создании ресурсов(например, меню и окон диалога), обеспечит генерациюmake-файлов(файлы, содержащие инструкции для компиляции и компоновки вашей программы, а также для создания исполняемого файла), и предоставит вам единую среду для компиляции, выполнения и отладки программ.

Первая программа

Классическая программа "Hello, world"

Программа "Hello, world" для Windows

#include <stdio.h>

main()

{

printf("Hello, world\n");

}

#include <windows.h>

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

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

static char szAppName[] = "HelloWin" ;

HWND hwnd ;

MSG msg ;

WNDCLASSEX wndclass ;

wndclass.cbSize = sizeof (wndclass) ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc = WndProc ;

wndclass.cbClsExtra = 0 ;

wndclass.cbWndExtra = 0 ;

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;

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

wndclass.lpszMenuName = NULL ;

wndclass.lpszClassName = szAppName ;

wndclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION) ;

RegisterClassEx (&wndclass) ;

hwnd = CreateWindow (szAppName, // window class name

"The Hello Program", // window caption

WS_OVERLAPPEDWINDOW, // window style

CW_USEDEFAULT, // initial x position

CW_USEDEFAULT, // initial y position

CW_USEDEFAULT, // initial x size

CW_USEDEFAULT, // initial y size

NULL, // parent window handle

NULL, // window menu handle

hInstance, // program instance handle

NULL) ; // creation parameters

ShowWindow (hwnd, iCmdShow) ;

UpdateWindow (hwnd) ;

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

{

TranslateMessage (&msg) ;

DispatchMessage (&msg) ;

}

return msg.wParam ;

}

LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)

{

HDC hdc ;

PAINTSTRUCT ps ;

RECT rect ;

switch (iMsg)

{

case WM_CREATE :

PlaySound ("hellowin.wav", NULL, SND_FILENAME | SND_ASYNC) ;

return 0 ;

case WM_PAINT :

hdc = BeginPaint (hwnd, &ps) ;

GetClientRect (hwnd, &rect) ;

DrawText (hdc, "Hello, Windows 95!", -1, &rect,

DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;

EndPaint (hwnd, &ps) ;

return 0 ;

case WM_DESTROY :

PostQuitMessage (0) ;

return 0 ;

}

return DefWindowProc (hwnd, iMsg, wParam, lParam) ;

}