Практикум программирования на C++ под Windows
comp.soft.prog.cppwin
Выпуск #8A
23/10/2000
*** ПРИЛОЖЕНИЕ. Текст простейшей оконной программы **********************
Ниже приведен полный текст простейшей оконной программы. Этот шаблон
содержит весь необходимый код для работы программы с единственным окном.
Начните с того, что создайте проект (типа Win32 Application), поместите
в директорию проекта файл main.cpp с приведенным ниже текстом, включите
main.cpp в проект и откомпилируйте. Запустите полученный пример
на выполнение - вы увидите пустое окно, но с заголовком и рамкой.
Используйте этот текст как основу для своих исследований. Рекомендую Вам
начать практическое изучение Win32 с освоения процедур рисования, затем
- обработка сообщений мыши и клавиатуры, затем - таймер...
Текст программы
//main.cpp
#include <windows.h> //Объявления из Win32 API
LRESULT WINAPI MainWndProc(HWND hWnd, UINT msg,
WPARAM wParam, LPARAM lParam);
HINSTANCE hinst; //Экземпляр приложения
HWND hwndMain; //Главное окно
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int nCmdShow){
UNREFERENCED_PARAMETER(lpszCmdLine);
hinst = hInstance; //Сохраняем дескриптор экземпляра
if (! hPrevInstance){ //Регистрация класса окна
WNDCLASS wc;
wc.lpszClassName = "MainWndClass"; //Имя класса
wc.style="0;" //Стили
wc.lpfnWndProc = (WNDPROC) MainWndProc; //Оконная процедура
wc.cbClsExtra = wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon((HINSTANCE) NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor((HINSTANCE) NULL, IDC_ARROW);
wc.hbrBackground = GetStockObject(WHITE_BRUSH); //Фон
wc.lpszMenuName = NULL; //Меню
if (! RegisterClass(&wc)) return FALSE;
}
//Создание главного окна
hwndMain = CreateWindow("MainWndClass", "Sample",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, (HWND) NULL,
(HMENU) NULL, hinst, (LPVOID) NULL);
//Если главное окно не создалось, завершаем приложение
if (!hwndMain) return FALSE;
//Показать окно на экране
ShowWindow(hwndMain, nCmdShow);
UpdateWindow(hwndMain); //Отрисовать его немедленно
//Основной цикл сообщений
MSG msg;
while (GetMessage(&msg, (HWND) NULL, 0, 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT WINAPI MainWndProc( //Оконная процедура главного окна
HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
switch (msg){ //По типу сообщения
case WM_DESTROY: //Окно закрыто
PostQuitMessage(0); //Завершаем приложение
break;
case WM_PAINT: { //Отрисовка окна на экране
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd,
(LPPAINTSTRUCT)&ps); //Подготовка к рисованию
//Рисование по требованию системы
//RECT rc; GetClientRect(hWnd, &rc); //Получение размеров окна
EndPaint(hWnd, (LPPAINTSTRUCT)&ps); //Завершение рисования
break;
}
default: //Обработка сообщений по умолчанию
return DefWindowProc(hWnd, msg, wParam, lParam);
}
return 0L;
}
Перспективы
Попробую слегка развеять туман вокруг Visual Studio 7...
На этот раз Microsoft разродилась целым феерверком идей, хоть и не новых,
зато каких красивых! Мало того, все это они хотят (а может и могут)
воплотить в жизнь...
Речь идет не просто о новом языке или новом MSVS. На этот раз появляется
новая ПЛАТФОРМА. Имя ей - .NET (читается как dot-net). Читали братьев
Стругацких? Помните такую штуку - "БВИ"? Так вот - это она и есть.
Допустим, вы пользователь. Ваши данные размещаются не на вашем локальном
компьютере, а в Сети. Программы для их обработки - это уже не обычные
локальные приложения, а некое подобие современных сервисов Интернет. Т.е.
где-то в Сети есть сервер, выполняющий программу для обработки ваших
данных. А вы пользуетесь его услугами так же как услугами провайдера.
Терминал, с которого вы работаете, может быть и сложным (как компьютер), и
достаточно простым - как WebTV или пульт управления кофемолки...
Из рекламного проспекта по .NET (вольный перевод):
"В субботу будет солнечно, 75 по Фаренгейту. Компьютер Томми и Джо сообщил,
что они любят поиграть. Предварительный заказ на ужин сделан, Сандра
встала в очередь к детскому врачу. Все это вы прочитали на дисплее
велосипеда в атлетическом клубе..."
Допустим, вы программист. Вы раньше писали на C/C++ - ну и пишите на нем.
Точнее, это теперь будет называться C# (C Sharp - Си-шарп, а может -
Си-диез или Ди-бемоль...). Писали на Java - ну и пишите на нем...
Вы можете писать на любом языке, который включен в систему посредством CLS
(Common Language Specification - общей спецификации языка) - спецификаций
на язык программирования. Само выполнение программы обеспечивается CLR
(Common Language Runtime) - машиной, выполняющей готовый код. Сам код
получается (как в Java) независим от машинной реализации. А при выполнении
он транслируется (либо предварительно, либо на лету) в команды конкретного
процессора. Тем самым и платформонезависимость остается, и
производительность не страдает.
Обратная связь
Ого! После предыдущего выпуска пришло больше 20-ти писем... Спасибо за
добрые слова... и за не очень добрые тоже спасибо. Больше всего мне
понравилось письмо господина diabov@chat.ru:
РАССЫЛКА ТВОЯ - ОТСТОЙ
А САМ ТЫ - ЛАМЕР
Ну наконец-то! Вот оно - настоящее признание моих талантов! Господин
Diabov, я вас тоже очень люблю!!!
*************************************************************************
Количество подписчиков: 5551
Архив Рассылки
Никита Зимин
Nikita_Zeemin@mail.ru