
- •Программирование для Windows
- •Литература
- •Вам необходимо знать и уметь
- •Первая программа
- •Соглашения операционной системы Windows
- •Вызовы функций Windows
- •Идентификаторы, написанные прописными буквами
- •Новые типы данных
- •Описатели
- •Венгерская нотация
- •Точка входа программы
- •Оконная процедура
- •Регистрация класса окна
- •Создание окна
- •Отображение окна
- •Цикл обработки сообщений
- •Оконная процедура
- •Обработка сообщений
- •Воспроизведение звукового файла
- •Сообщение wm_paint
- •Сообщение wm_destroy
- •Сложности программирования для Windows
- •Синхронные и асинхронные сообщения
- •Думайте о пользователе
- •Лекция3. Приступаем с изучению компонент
- •Урок 4. Класс tObjectи его потомки
- •Урок 5. Работа с кнопками
- •Урок 6. Компонент ActionList
- •Урок 7. Работаем с меню (класс tMainMenu)
- •Урок 8. Работаем с контекстным меню (класс tPopupMenu)
- •Урок 9. Компонент Edit
- •Урок 10. Работаем с двумя формами
- •Урок 11. Текст (компоненты tLabel и tStaticText)
- •Урок 12. Компонент ListBox
- •Урок 13. Компонент ComboBox
- •Урок 14. Используем api-функции
- •Урок 15. Разные MessageBox'ы
- •Урок 16. Компонент CheckBox
- •Урок 17. Компонент RadioButton
- •Урок 18. Класс tStrings
- •Урок 19. Класс tStringList
- •Урок 20. Работаем с сетью. Клиент (класс tClientSocket)
- •Урок 21. Работаем с сетью. Сервер (класс tServerSocket)
- •Урок 22. Компонент ImageList
- •Урок 23. Пересчитываем компоненты на форме
- •Урок 24. Форма - добавление методов
- •Урок 25. Форма - добавление полей
- •Урок 27. Значок на панели задач (компонент tTrayIcon)
- •Урок 28. Работаем со сплиттером
- •Урок 29. Компонент Panel
- •Урок 30. Совместное использование сплиттера и Panel'ей
- •Урок 31. Компонент HotKey
- •Урок 32. Компонент StatusBar
- •Урок 33. Установка главной формы приложения
- •Урок 34. Рисование на форме
Программирование для Windows
Троицкий Виктор Сергеевич
tvs@capitalbank.ru
Литература
Ч. Петзолд, Программирование для Windows ® 95; в двух томах. Том I: пер. с англ. — СПб.: BHV — Санкт-Петербург, 1997. — 752 с., ил.
Ч. Петзолд, Программирование для Windows ® 95; в двух томах. Том II: пер. с англ. — СПб.: BHV — Санкт-Петербург, 1997. — 368 с., ил.
C++ Builder 5. Руководство разработчика. Том 1. Основы (Джарод Холингвэрт, Дэн Баттерфилд, Боб Сворт, Джэйми Оллсоп, 2001)
C++Builder 5. Руководство разработчика. Том 2. Сложные вопросы программирования (Джарод Холингвэрт, Дэн Баттерфилд, Боб Сворт, Джэйми Оллсоп, 2001).
Уроки по C++ Builder (http://progs.biz/cppbuilder/cppbuilder/cppbuilder01.aspx)
Вам необходимо знать и уметь
Близкое знакомство с языком С, С++;
Объектно-ориентированное программирование, основные концепции, особенности реализации применительно к С++ и соответствующие подходы к проектированию программ;
Реальное использование операционной системы 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) ; } |