Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2012, 20:26   #1
Че Гевара
Форумчанин
 
Аватар для Че Гевара
 
Регистрация: 25.09.2012
Сообщений: 182
По умолчанию Шаблон Windows Application в Dev-C++

Нашёл шаблон Windows Application в Dev-C++, но прокоментирован он был на английском. Я перевёл все коментарии, но понятнее от этого не стало. Посоветуйте книжку чтоли какую, чтоб разобраться с какой стороны к этому чуду подступить.
Вот он сам:
Код:
#include <windows.h>

/*  Объявить Windows, процедура  */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/*  Сделать имя класса в глобальную переменную  */
char szClassName[ ] = "WindowsApp";

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
    HWND hwnd;               /* Это ручка для нашего окна */
    MSG messages;            /* Здесь сообщения в приложении сохраняются */
    WNDCLASSEX wincl;        /* Структура данных для windowclass */

    /* структура Window */
    wincl.hInstance = hThisInstance;
    wincl.lpszClassName = szClassName;
    wincl.lpfnWndProc = WindowProcedure;      /* Эта функция вызывается из окна */
    wincl.style = CS_DBLCLKS;                 /* Поймать двойном щелчке */
    wincl.cbSize = sizeof (WNDCLASSEX);

    /* Использовать иконку по умолчанию и указатель мышки */
    wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
    wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
    wincl.lpszMenuName = NULL;                 /* Нет меню */
    wincl.cbClsExtra = 0;                      /* Никаких дополнительных байтов после класс окна */
    wincl.cbWndExtra = 0;                      /* структуру или экземпляр окна */
    /* Используйте цвет по умолчанию Windows в качестве фона окна */
    wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

    /* Зарегистрировать класс окна, и если оно не выйти из программы */
    if (!RegisterClassEx (&wincl))
        return 0;

    /* Класс зарегистрирован, давайте создадим программу*/
    hwnd = CreateWindowEx (
           0,                   /* Расширенные возможности для изменения */
           szClassName,         /* Classname */
           "Windows App",       /* Название Текст */
           WS_OVERLAPPEDWINDOW, /* окна по умолчанию */
           CW_USEDEFAULT,       /* ОС Windows определяет положение */
           CW_USEDEFAULT,       /* где окно заканчивается на экране */
           544,                 /* Программы ширина */
           375,                 /* и высоту в пикселях */
           HWND_DESKTOP,        /* Окно дочернего окна на рабочем столе */
           NULL,                /* Нет меню */
           hThisInstance,       /* Обработчик экземпляра программы */
           NULL                 /* Нет данных создания окна */
           );

    /* Сделать окно видимым на экране */
    ShowWindow (hwnd, nFunsterStil);

    /* Запустить цикл обработки сообщений. Он будет работать до тех пор пока GetMessage () возвращает 0 */
    while (GetMessage (&messages, NULL, 0, 0))
    {
        /* Перевести виртуальной клавиши сообщений в характере сообщений */
        TranslateMessage(&messages);
        /* Отправить сообщение для WindowProcedure */
        DispatchMessage(&messages);
    }

    /* Программа возвращения значения 0 - значение, которое PostQuitMessage () дал */
    return messages.wParam;
}


/*  Эта функция называется функцией Windows, DispatchMessage ()  */

LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)                  /* обработки сообщений */
    {
        case WM_DESTROY:
            PostQuitMessage (0);       /* Написать WM_QUIT в очередь сообщений */
            break;
        default:                      /* для сообщений, мы имеем дело не с */
            return DefWindowProc (hwnd, message, wParam, lParam);
    }

    return 0;
}
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.
Че Гевара вне форума Ответить с цитированием
Старый 27.10.2012, 21:48   #2
StIX-S
Пользователь
 
Регистрация: 24.06.2011
Сообщений: 70
По умолчанию

Ваш перевод просто ужасен. От того и не понятно...
Книжки советовать не буду, но подкину пару ссылок, с нормальным переводом:
1. Пишем на WinAPI с «нуля»
2. Первая программа (WinAPI)
StIX-S вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шаблон Windows Application в Dev-C++ Че Гевара Общие вопросы C/C++ 0 26.10.2012 18:44
C# Windows Application xellboy8 Помощь студентам 2 12.01.2012 23:24
Native Windows Application BOBAH13 Общие вопросы по программированию, компьютерный форум 12 04.04.2011 08:51
Dev C++ и Windows 7 Olya90 Помощь студентам 0 28.09.2009 13:16