Home > Применение windows api > Краткий обзор представленных материалов
Sep
15

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


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


#include <windows.h>


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;


}


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

, , ,

Comments are closed.

Потребление памяти: 11.13MB