Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
 Аватар для LAKESHORE_
0 / 0 / 0
Регистрация: 21.12.2019
Сообщений: 10

Изучение WinAPI на С++

07.01.2020, 15:29. Показов 5003. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем Здравствуйте. Я новичок на этом форуме. Занимаюсь С++ около двух лет и возникла необходимость в изучению WinAPI, чтобы создавать оконные приложения для Windows. В Интернете видел некоторых людей, которые говорят, что этот фреймворк сейчас изучать неактуально. Узнал про Qt-фреймворк, установил IDE, но столкнулся с проблемой компиляции, так как в программе изначально не было компиляторов для этого дела. Однако на Dev-C++, где я пишу всегда код, WinAPI адекватно функционирует. Следовательно, кроме этого фреймворка у меня нет ничего лучше для изучения, плюс его не надо нигде устанавливать, он идет вместе с виндой.

Итак, вопрос, стоит ли мне, пока что школьнику 9 класса, изучать эту штуку? И если стоит, то можете, пожалуйста, подкинуть хорошей литературы для его изучения либо видосов на русском.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.01.2020, 15:29
Ответы с готовыми решениями:

Изучение Winapi
Хотел начать учить WinApi, так вот возник вопрос, что надо знать по С и С++ что бы перейти к изучению WinApi. Я по С++ изучил процедурное...

Изучение WinAPI
Добрый вечер. Начал изучать WinApi, но как увидел код простого окна, то немного очумел=-O Расскажите кто как его учил и посоветуйте как...

Изучение WINAPI
Подскажите, как лучше всего и по каким книгам можно выучить WINAPI? Взял Щупак'а,учил по MSDN но ничего хорошо не лезет в голову как...

33
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,907
08.01.2020, 21:02
Для общего развития изучить можно, знание низкого уровня windows не помешает. Но вот копать эту тему глубоко смысла нет, если нет желания лезть в недра windows с головой, а это занятие неблагодарное.
А дальше все зависит от применения winapi.
Если речь про создание "просто окна" скажем для последующей работы средствами OpenGL, то есть куча кроссплатформенных библиотек: SDL, SFML, GLUT, GLFW, ...
Если про создание "развесистого" GUI, то Qt, gtk
А если для взаимодействия с системой, то многое реализовано в тех же SDL'ах, кое-что в других библиотеках, а для некоторых целей таки придется ознакомиться и с соответствующей областью API системы. Не обязательно, кстати, winapi: есть порт более универсального стандарта POSIX.
1
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
08.01.2020, 21:31
Цитата Сообщение от LAKESHORE_ Посмотреть сообщение
что этот фреймворк
WinAPI это не фреймворк.

Цитата Сообщение от LAKESHORE_ Посмотреть сообщение
стоит ли изучать эту штуку?
скорее нет, чем да.
всё зависит от того, нужны ли вам знания различных api, взаимодействующих с нативом.
применять эти знания на практике/работе вам вряд ли придётся (сейчас все кому не лень юзают различные SDK, обёртки, или даже пишут свои), если конечно же вы не собираетесь стать "исследователем" ядра для совсем других целей.
2
9933 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,964
Записей в блоге: 216
09.01.2020, 23:39
Цитата Сообщение от LAKESHORE_ Посмотреть сообщение
тоит ли мне, пока что школьнику 9 класса, изучать эту штуку?
Если вы ограничитесь использовать WinAPI для создания простейших GUI-элементов, то есть: Label, Button, Edit, CheckBox, RadioButton и т.д., то вполне можно на первых парах на WinAPI остановиться.

Я делал первые GUI-приложения на Builder C++ Borland в 2007 примерно. Помню тогда купил эту толстую книгу в книжном магазине в своём городе: Программирование в C++Builder 6 и 2006 (+ CD-ROM). Потом был WinAPI (на первой работе было требование такое), потом был Qt, далее изучал Java, а сейчас WinForms + C# (для desktop-кроссплатформы на Mono), Unity + C# (для desktop-кроссплатформы), WPF + C# (для Windows) и HTML5/Node.js + TypeScript (для web-кроссплатформы).
1
 Аватар для LAKESHORE_
0 / 0 / 0
Регистрация: 21.12.2019
Сообщений: 10
10.01.2020, 20:45  [ТС]
Так скажем, что я хочу начать с создания 2D игр на голом DirectX. Для старта ведь можно пока и WinAPI попользоваться. А потом, когда более менее будешь в этом курить, можно и на Qt перейти.
0
Заблокирован
10.01.2020, 21:16
Цитата Сообщение от LAKESHORE_ Посмотреть сообщение
Для старта ведь можно пока и WinAPI попользоваться.
Несомненно. Дело молодое - легко запомнить, легко забыть.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,907
10.01.2020, 22:12
LAKESHORE_, если именно игр, то можно и winapi. Все равно "программирование" сведется к копипасту магической последовательности создания окна да обработки ввода. "Магической" потому что она всегда практически одинаковая, а написать ее из головы нереально. Еще существенный плюс в этой области - не надо заморачиваться с системным GUI: для игры так и так придется писать свой. Кстати, в этом смысле переход на Qt ничего не даст, лучше переходить на SDL, SFML, GLUT и т.п. они попроще для понимания и меньше весят.
Плюсы winapi:
1. отсутствие зависимостей: не надо таскать со своей программой сторонние *.dll
2. работа с низким уровнем: будет какое-никакое понимание как работает система
3. возможность реализовать почти любой функционал, который там в принципе возможен.
Плюсы сторонних библиотек:
1. отсутствие привязки к windows. Да, используя winapi вы избавляетесь от зависимостей... получая в зависимости всю операционку целиком. Использование же кроссплатформенных библиотек, как следует из названия, переносимость упрощает.
2. сокрытие деталей реализации. Вместо двух экранов кода создание окна займет три строчки
3. наличие ОС-независимой реализации системного функционала. Вплоть до загрузки картинок, буфера обмена и тому подобного.
.
В целом, я бы предложил пройти оба пути. Сначала создавать окно средствами winapi, потом то же самое, но через SDL.
Отдельно на счет "офисного", системного GUI. Если планируется заниматься им, на предыдущий пункт просто не тратьте время. Изучение тех же Qt или gtk будет полезнее. А отсутствие вредных привычек из winapi избавит от необходимости переучиваться. Знания из SFML как раз мешать не будут (хотя и помощь вряд ли окажут), просто потому что другая область.
1
 Аватар для LAKESHORE_
0 / 0 / 0
Регистрация: 21.12.2019
Сообщений: 10
11.01.2020, 00:14  [ТС]
COKPOWEHEU, кстати, GLUT это от OpenGL? Я слышал про него.

Еще один вопрос: что посоветуете первым изучать, DirectX или OpenGL? Назовите плюсы и минусы одного и другого. Я слышал, что в OpenGL меньше возможностей, чем в том же DirectX.

А так, спасибо за ответ!
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,907
11.01.2020, 02:26
Цитата Сообщение от LAKESHORE_ Посмотреть сообщение
COKPOWEHEU, кстати, GLUT это от OpenGL? Я слышал про него.
GLUT, SDL, SFML, GLWF это библиотеки для простого создания окон и работа с ними. Они НЕ для "развесистого" GUI, там нет работы с кнопками, формами, прочими контролами. Это вам не Qt / gtk. Но ведь в тех же играх стандартные контролы все равно использовать невозможно, и это и есть их ниша.
Какую именно из четырех перечисленных (и еще кучи не перечисленных!) выбрать - решать вам. Для себя я выбрал SDL, потому что там весьма развесистое взаимодействие с ОС - шрифты, картинки, звук, сеть, буфер обмена. Тот же GLUT гораздо примитивнее.
Цитата Сообщение от LAKESHORE_ Посмотреть сообщение
Еще один вопрос: что посоветуете первым изучать, DirectX или OpenGL? Назовите плюсы и минусы одного и другого. Я слышал, что в OpenGL меньше возможностей, чем в том же DirectX.
Рекомендую OpenGL, причем сразу с версии 2 или 4 (шейдерный). Например, на Хабре есть несколько циклов статей. Насколько мне известно, разница в производительности по сравнению с DirectX невелика. Зато кроссплатформенность, как между "полноценными" операционками, так и вплоть до веба. Но на счет веба лучше 8Observer8 спрашивайте, он значительно глубже ковырялся.
Ну и на счет "мощности" библиотек: я всегда считал, что как раз разработчику нельзя доверять мощную машину - чтобы продуктами его труда могли пользоваться и другие люди, не плюясь на жуткие тормоза. Второе: чтобы достать до "дна" производительности библиотеки потребуется далеко не один год, а к тому времени будете знать эту тему гораздо лучше меня.
0
 Аватар для LAKESHORE_
0 / 0 / 0
Регистрация: 21.12.2019
Сообщений: 10
11.01.2020, 11:25  [ТС]
COKPOWEHEU, наверное, попробую SDL освоить в будущем, если сами писали на нём.

Кстати, для своей GTA 1 действительно подойдёт OpenGL, если всё составляющее игры будут .png файлы?
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,907
11.01.2020, 13:51
А почему нет?
Для загрузки *.png есть много разных библиотек.
На счет производительности можно еще вспомнить wine, который транслирует DirectX в OpenGL - и разница быстродействия (считая кривые драйвера, ограничение реализации системного API и прочего) - десятки процентов. Бывает, что производительность в wine даже выше.
0
9933 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,964
Записей в блоге: 216
11.01.2020, 18:19
Скину несколько примеров, которые выводят прямоугольник с текстурой с разными библиотеками создания окна. Для загрузки PNG с прозрачностью используется библиотека loadPNG. Для инициализации указателей на функции OpenGL - GLAD (не путать с GLUT). Для работы с матрицами - GLM.

В каждом примере есть папка Libs, где лежат библиотеки и они уже подключены к проекту Visual Studio. По идее, должно заработать в VS2019. Я не могу проверить, потому что C++ не ставил, ставил C#. Возможно "Platform Toolset" в настройках проекта нужно будет изменить на вашу версию VS.

Не торопясь изучайте онлайн книгу на Хабре и экспериментируйте: learnopengl. Урок 1.1 — OpenGL / Хабр - Habr

Если с английским нормально, то лучше изучать оригинал: https://learnopengl.com/ (в РФ сайт недоступен, ставьте VPN, например, плагин для браузера Browsec)
0
45 / 33 / 15
Регистрация: 29.04.2014
Сообщений: 225
11.01.2020, 18:51
Чарльз Петцольд "Программирование в Windows 95"
0
11.01.2020, 18:54

Не по теме:

8Observer8, недоступный-англоязычный сайт можно ОфлайнЕксплорером выкачать, перевести, разместить на своем сайте или на юкозе - вот это да ( вы сможете (мне не надо) ) !

0
11.01.2020, 19:29

Не по теме:

Цитата Сообщение от qll Посмотреть сообщение
выкачать, перевести, разместить на своем сайте или на юкозе - вот это да ( вы сможете (мне не надо) ) !
Делать мне больше нечего.

0
11.01.2020, 19:50

Не по теме:

Цитата Сообщение от 8Observer8 Посмотреть сообщение
Делать мне больше нечего.
Наблюдаю ваши опусы - нечего.

0
11.01.2020, 20:58

Не по теме:

Цитата Сообщение от qll Посмотреть сообщение
Наблюдаю ваши опусы - нечего.
Это не ваше дело.

0
9933 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,964
Записей в блоге: 216
12.01.2020, 14:38
Цитата Сообщение от LAKESHORE_ Посмотреть сообщение
Еще один вопрос: что посоветуете первым изучать, DirectX или OpenGL? Назовите плюсы и минусы одного и другого. Я слышал, что в OpenGL меньше возможностей, чем в том же DirectX.
OpenGL - это только работа с графикой, а у DirectX ещё много дополнительных возможностей из коробки. Но в OpenGL эти возможности компенсируются библиотеками. У DX язык шейдеров HLSL, а у OpenGL - GLSL. Я изучаю HLSL для движка Unity. GLSL и HLSL - это очень похожие языки. Первая попавшаяся ссылка для перевода из одного языка в другой: GLSL-to-HLSL reference - UWP applications | Microsoft Docs. На первых парах особенно не имеет значение, что вы выберите. Линейная алгебра и принципы будут одни и те же. Если вы выберите OpenGL, то не имеет особого значения, что вы выберите для создания окна, потому что у всех библиотек одинаковые принципы и из них нужен минимальный код. Попробуйте несколько, возьмите те, которые вам проще использовать, какие лично для вас вы видите перспективы. Допустим, вы нашли книгу или туториал, в котором используется GLFW, то пока используйте GLFW. Если свою демку игры решили писать для практики в программировании и для практики в OpenGL, например, Пинг-Понг на двоих по локальной сети, то возьмите SDL2, потому что в SDL2 есть средства для упрощения работы через сокеты и есть туториалы в интернете, как обмениваться сообщениями через сокеты по сети. Как можно больше изучайте и отрабатывайте на практике каждый день.

Цитата Сообщение от LAKESHORE_ Посмотреть сообщение
Кстати, для своей GTA 1 действительно подойдёт OpenGL, если всё составляющее игры будут .png файлы?
OpenGL и DirectX подойдут абсолютно для любых 2D и 3D игр. Все игровые движки, конструкторы, 3D редакторы и т.д. используют OpenGL и DirectX. Игровой движок это API-обёртка в виде классов над API OpenGL и API DirectX. Я движки тоже изучаю, чтобы видеть, как на высоком уровне абстракции выглядит программирование для игр на движках. Я выбрал Unity/C# для нативных Desktop/Mobile приложений, который собирает исполняемые файлы из Windows: в EXE, для Linux, masOS, Android и iOS. Для веб выбрал движки: Babylon.js + TypeScript - для 3D, Phaser + TypeScript - для 2D. Для мультиплеера и кооператива выбрал Node.js / TypeScript / Express / socket.io / MySQL с хостингом на бесплатном Heroku. Создание своих маленьких сетевых игр - это тоже очень важно для изучения программирования. Плюс Node.js позволяет создавать свой сайт, изучать создание сайтов, что может быть дополнительным заработком.

Свои маленькие движки очень важно писать для меня. Я выбрал:
  • OpenGL 3 + C# и OpenTK (OpenTK позволяет собирать под Windows, Linux, macOS, Android и iOS). Ставится OpenTK в VS очень быстро через NuGet, либо через подключение через References
  • WebGL + TypeScript - запускается приложение без скачиваний в один клик на Windows, Linux, macOS, Android и iOS
2
12.01.2020, 14:57

Не по теме:

8Observer8, молодца, надо сказать, что я примитивно рассматривал некоторые аспекты, не зря говорят утро вечера мудренее.

0
 Аватар для LAKESHORE_
0 / 0 / 0
Регистрация: 21.12.2019
Сообщений: 10
12.01.2020, 16:36  [ТС]
8Observer8, а DirectX какой версии лучше использовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.01.2020, 16:36
Помогаю со студенческими работами здесь

С чего начать изучение WinAPI?
Дело в том ,что изучаю программирование на C++, и вот я подошел к такой теме как GUI в C++. Консольные приложения - это конечно хорошо, но...

Посоветуйте с чего начать изучение WinAPI
Знаю плюсы довольно не плохо долго уже программирую в консоли хочу графику посоветуйте книгу или статьи в интернете или видео буду...

winApi изучение
прошу посоветтовать литературу или статьи для изучения WinAPI . Скачал книгу Щупака что-то не очень доганяю. Нужно что-то для новичков....

Изучение Qt
Подскажите какие нибуть учебники по Qt для начинающих с примерами желательно

Изучение
Всем привет. Я изучаю программирование чуть меньше года (сразу начал с Си++), подскажите плз, как лучше поступать. Учить определённую тему...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru