Применение Windows API - Александр Иванович Легалов

Применение Windows API

В этой удивительной книге вы откроете мир новых возможностей и историй, где каждый персонаж и событие приносят с собой неповторимую глубину и интригу. Автор волшебным образом сочетает элементы фантазии, приключения и человеческих драм, создавая непередаваемую атмосферу, в которой каждая страница — это путешествие в неизведанные миры. Поднимите книгу и готовьтесь погрузиться в мир, где слова становятся живыми, а истории оживают перед вашими глазами.

Читать Применение Windows API (Легалов) полностью

Краткий обзор представленных материалов

Разработка программ зачастую напоминает священный ритуал, построенный на произнесении ряда обязательных магических заклинаний. Особенно это касается Windows приложений. Windows-заклинания позволяют вывести графическое окно, обработать поступающие сообщения. Порядок их следования предопределен священными руководствами. Часто эти руководства заменяются шпаргалкой, кратко фиксирующей основной каркас:

>// Каркасное приложение Windows 95

>#include

>LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);

>char szWinName[] = "SimpleWin";

>int WINAPI WinMain (HINSTANCE hThisInst,HINSTANCE hPrevInst, LPSTR lpszArgs,int nWinMode) {

> HWND hwnd;

> MSG msg;

> WNDCLASS wcl;

> wcl.hInstance = hThisInst;

> wcl.lpszClassName = szWinName;

> wcl.lpfnWndProc = WindowFunc;

> wcl.style = 0;

> wcl.hIcon = LoadIcon(NULL,IDI_APPLICATION);

> wcl.hCursor = LoadCursor(NULL, IDC_ARROW);

> wcl.lpszMenuName = NULL;

> wcl.cbClsExtra = 0;

> wcl.cbWndExtra = 0;

> wcl.hbrBackground= (HBRUSH)GetStockObject (WHITE_BRUSH);

> if ( !RegisterClass (&wcl) ) return 0;

> hwnd = CreateWindow(szWinName, "Kаркас программы для Windows 95", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, HWND_DESKTOP, NULL, hThisInst, NULL);

> ShowWindow(hwnd,nWinMode);

> UpdateWindow(hwnd);

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

>  TranslateMessage (&msg);

>  DispatchMessage (&msg);

> }

> return msg.wParam;

>}


>// Оконная процедура

>LRESULT CALLBACK WindowFunc(HWND hwnd,UINT message, WPARAM wParam,LPARAM lParam) {

> switch (message) {

> case WM_DESTROY:

>  PostQuitMessage (0);

>  break;

> default:

>  return DefWindowProc(hwnd,message,wParam,lParam);

> }

> return 0;

>}

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

Почему плохо использовать MFC

Как программировать и как не программировать

Библиотека классов MFC является вредной для программиста

Перевод А. И. Легалова

Англоязычный оригинал находится на сервере компании Reliable Software

Программирование для Windows считается трудным. Библиотеки классов делают программирование для Windows легче. Это истина или ложь?

bool IsWinProgEasier (Method method) {

 if (method == WIN_CLASS_LIBRARIES) return false;