Вы вошли как Гость | Группа "Гости" Приветствую Вас Гость | RSS
mdErrDX5341.lab:...I'm a fool studying schizophrenia as a source of life...=)

Не забудь поспать: Среда, 25.06.2025, 10:11
Главная » Статьи » Windows » WinAPI

WinAPI# 1unitWindow
#include <windows.h>

LRESULT CALLBACK HelloWorldWndProc (HWND
                   ,UINT
                           ,UINT
                           ,LONG);

int WINAPI WinMain ( HINSTANCE hInstance, //id окна
        HINSTANCE hPrevInstance, //не используется
        LPSTR lpszCmdParam, // указатель на командную строку после имени программы
               int nCmdShow ) // определяет в каком виде создоваемое окно будет появлятся на экране(минимизировано, во весь экран...)

{
    HWND hWnd;
    WNDCLASS WndClass; //объявление структуры окна
    MSG Msg;
    char szClassName[]="HelloWorld";
    WndClass.style=CS_HREDRAW | CS_VREDRAW; //стиль окна CS(class style)
    WndClass.lpfnWndProc = HelloWorldWndProc; //функция обработки окна
    WndClass.cbClsExtra = 0; //резервирования дополнительной памяти для класса
    WndClass.cbWndExtra = 0; //резервирования дополнительной памяти для окна
    WndClass.hInstance = hInstance; //id окна
    WndClass.hIcon = LoadIcon(NULL,IDI_APPLICATION); //определяет id иконки окна
    WndClass.hCursor =LoadCursor(NULL,IDC_ARROW); //определяет  id курсора окна
    WndClass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH); //определяет id кисти(brush), которой будет закраше фон окна
    WndClass.lpszMenuName = NULL; // хранит указатель на строку, содержащую имя меню для данной программы
    WndClass.lpszClassName = szClassName; //поле содержит указатель на строку,содержащую имя создаваемого нами класса

    if( !RegisterClass(&WndClass)) //Регистрация и создание класса окна(RegisterClass)
    {
        MessageBox(NULL,"Cannot register class","Error",MB_OK);
        return 0;
    }

    hWnd = CreateWindow(szClassName, //указатель на строку с именем класса окна
            "Program No 1",  //текст в заголовке окна
            WS_OVERLAPPEDWINDOW, //стиль окна
            CW_USEDEFAULT,CW_USEDEFAULT, //положение окна на экране,отступы в пикселях от верхнего левого угала края экрана, от верхней границы
            CW_USEDEFAULT,CW_USEDEFAULT,//ширину и высоту
            NULL, //id окна являющимся родителеским по отношению к окну
            NULL, //id меня окна
            hInstance,//id экземпляра программы которая запускается
            NULL); //указатель структуры с дополнительной информацией
    if (!hWnd)
    {
        MessageBox(NULL,"Cannot crete window","Error",MB_OK);
        return 0;
    }

    ShowWindow(hWnd, //id созданого окна
        nCmdShow); //в каком виде будет отображено на экране
    UpdateWindow(hWnd); //посылает функции окна сообщение WM_PAINT, которое заставляет ПЕРЕРИСОВАТЬСЯ
    while(GetMessage(&Msg, //выбор сообщения из очереди указатель на сообщение
            NULL, // id окна созданного программой
            0,0)) //интервал номеров сообщений передаваемых функции окна нижняя граница, верхняя граница
    {
        TranslateMessage(&Msg); //преобразование сообщений
        DispatchMessage(&Msg); //передача сообщений на обработку в оконную процедуру
    }
    return Msg.wParam;
}

LRESULT CALLBACK HelloWorldWndProc (HWND hWnd, // id окна
                       UINT Message, //сообщение
                UINT wParam, LONG lParam)
{
    HDC hDC; //объявление структуры контекста устройства
    PAINTSTRUCT PaintStruct;
    RECT Rect;
    switch(Message)
    {
        case WM_PAINT:
            hDC = BeginPaint(hWnd, & PaintStruct); //получение контекста устройства
            GetClientRect(hWnd,&Rect);
            DrawText(hDC,"Hello, World!",-1,&Rect,
                DT_SINGLELINE|DT_CENTER | DT_VCENTER);
            EndPaint(hWnd,&PaintStruct); //возвращение контекста устройства
            return 0;
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        return 0;
    }
    return DefWindowProc(hWnd,Message,wParam,lParam); //стандартная обработка сообщений
}

Категория: WinAPI | Добавил: mdErrDX5341 (17.03.2011)
Просмотров: 930 | Теги: Windows, C(СИ), winapi | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]