Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Практикум программирования на С++ под Windows #8A


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

             Практикум программирования на 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



http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное