windows.h

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
Стандартная библиотека
языка программирования С

windows.h — Windows-специфичный заголовочный файл языка программирования С, в котором объявляются функции, предоставляющие интерфейс доступа к Windows API[1]. В случае, если в файле используются и другие заголовочные файлы, связанные с Windows API, windows.h должен быть первым[2].

Дочерние заголовочные файлы

  • excpt.h — обработка исключений
  • stdarg.h — функции с сигнатурами аргументов переменной длины (стандартный заголовочный файл C)
  • windef.h — различные макросы и типы
  • winnt.h — различные макросы и типы для Windows NT
  • basetsd.h — различные типы
  • guiddef.h — тип GUID
  • ctype.h — символьные типы (стандартный заголовочный файл C)
  • string.h — строчные типы и их буферы (стандартный заголовочный файл C)
  • winbase.h — kernel32.dll, advapi32.dll: функции ядра
  • winerror.h — Коды ошибок для Windows
  • wingdi.h — GDI
  • winuser.h — user32.dll
  • winnls.h — локализация
  • wincon.h — консольные службы
  • winver.h — информация о версии
  • winreg.h — реестр Windows
  • winnetwk.h — сетевые службы
  • winsvc.h — диспетчер управления службами
  • imm.hhh — IME (редактор методов ввода)

Дополнительные заголовки

  • cderr.h — CommDlgExtendedError коды ошибок функций
  • commdlg.h — Common Dialog Boxes
  • dde.h — DDE
  • ddeml.h — библиотека управления DDE
  • dlgs.h — набор констант для Common Dialog Boxes
  • lzexpand.h — алгоритм сжатия LZ77
  • mmsystem.h — Windows Multimedia
  • nb30.h — NetBIOS
  • rpc.h — удалённый вызов процедур
  • shellapi.h — Windows Shell[en] API
  • wincrypt.h — криптографическое API
  • winperf.h — измерение производительности
  • winresrc.h — ресурсы
  • winsock.h — Winsock (сокеты Windows), версия 1.1
  • winspool.h — управление очередью печати
  • winbgim.h — стандартная графическая библиотека

OLE и COM

  • ole2.h — OLE
  • objbase.h — COM
  • oleauto.h — OLE Automation
  • olectlid.h — различные определения для GUID

Пример использования

В данном примере рассматривается создание нового окна[3].

#include <windows.h>
 
LPSTR szClassName = "MyClass";
HINSTANCE hInstance;
LRESULT __stdcall MyWndProc(HWND, UINT, WPARAM, LPARAM);
 
int __stdcall WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow)
{
    WNDCLASS wnd;
    MSG msg;
    HWND hwnd;
 
    hInstance = hInst;
         
    wnd.style = CS_HREDRAW | CS_VREDRAW; //объяснение ниже
    wnd.lpfnWndProc = MyWndProc;
    wnd.cbClsExtra = 0;
    wnd.cbWndExtra = 0;
    wnd.hInstance = hInstance;
    wnd.hIcon = LoadIcon(NULL, IDI_APPLICATION); //иконка по умолчанию
    wnd.hCursor = LoadCursor(NULL, IDC_ARROW);   //курсор по умолчанию
    wnd.hbrBackground = (HBRUSH)(COLOR_BACKGROUND+1);
    wnd.lpszMenuName = NULL;                     //без меню
    wnd.lpszClassName = szClassName;
 
    if(!RegisterClass(&wnd))                     //зарегистрировать WNDCLASS
    {
        MessageBox(NULL, "This Program Requires Windows NT", 
                         "Error", MB_OK);
        return 0;
    }
 
    hwnd = CreateWindow(szClassName,
                        "Window Title",
                        WS_OVERLAPPEDWINDOW, //оформление окна поумолчанию
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,       //координаты по умолчанию
                        CW_USEDEFAULT,
                        CW_USEDEFAULT,       //ширина и высота по умолчанию
                        NULL,                //без родительского окна
                        NULL,                //без меню
                        hInstance,
                        NULL);               //без параметра
    ShowWindow(hwnd, iCmdShow);              //отрисовать окно на экране
    UpdateWindow(hwnd);             //окно должно правильно обновляться
 
    while(GetMessage(&msg, NULL, 0, 0))      //цикл сообщений
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
LRESULT __stdcall MyWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg)
    {
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
    }
    return DefWindowProc(hwnd, msg, wParam, lParam);
}

См. также

Примечания

  1. Richard Raposa. Understanding C++ for MFC. — ISBN 148228068X.
  2. Charles Petzold. Programming Windows. — 1998. — ISBN 0735646031.
  3. Module 1. Your First Windows Program — Win32 apps | Microsoft Docs

Ссылки