Тёмный

CREATING A WINDOW - C++ WINAPI PART #1 

Egor Developer
Подписаться 2,3 тыс.
Просмотров 77 тыс.
50% 1

In this video, I will cover the basics of creating a window application in C++ WINAPI
We will create our own window, develop minimal functions to run the application, and set a default icon
To create a window application, we will use the Win32 Windows.h library (also known as WinApi)
It can be installed with Visual Studio in the desktop development kit for windows. In the video, I'll show you how to do it.
-
All C++ WINAPI videos (playlist) • C++ WINDOWS API
-
winapi c++ winapi winapi tutorials winapi c++ library winapi for dummies Win32 Controls winapi code examples Text Box in win32 API C++ winapi c++ tutorials Edit Control winapi c++ winapi tutorials winapi Win32 GUI c++ tutorial c++ GUI C++ winapi winapi winapi tutorial for beginners Graphical User Interface winapi tutorials hwnd how to create a window in c++ example C++, Windows API, WINAPI, how to create a win32 api program C++, window application win api c++ tutorial, c++ programming, learn c++, creating a program, creating a window application, winapi tutorials, winapi tutorials, winapi window creation, winapi window creation, windows api window creation, gui c++ window application win32 api c++ visual studio, window application windows hwnd c++ library Static control hwnd c++ type hwnd c++ windows Windows GUI Programming hwnd winapi GUI windows c++ tutorials Win32API C/C++ Win32 winapi c++ programming tutorials for beginners winapi, winapi c++ windows application development window application

Опубликовано:

 

26 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 97   
@egordeveloper3794
@egordeveloper3794 2 года назад
Продублирую: что делать если "WinMain" все подчеркивается зеленым и программа не компилируется с ошибкой LNK2019? Ошибка LNK2019 возникает когда оконное приложение компилируется как консольное Об этом я рассказываю на моменте 4:50 Если вы все поменяли, но ошибка все еще возникает - значит выбрана не та конфигурация сборки (Configuration) У меня в видео все собирается в Release. Если вы хотите собирать сначала в Debug, то выбирайте сразу обе конфигурации (All Configurations), а затем проверьте, чтобы подсистема была SUBSYSTEM:WINDOWS
@worldsthewar2360
@worldsthewar2360 2 года назад
У меня ошибок нет, но приложение всё равно не запускается. Включил отладку и мне написало, что программа завершилась с кодом 0xffffffff
@ненуачо-и8в
@ненуачо-и8в Год назад
@@worldsthewar2360 в коде мы делаем проверку, что если класс не зарегистрирован, то выходим с кодом -1, это там где if (RegisterClassW(&SoftwareMainClass)) return -1. -1 и есть 0xffffffff, то есть класс не зарегистрировался и ты где-то сделал ошибку
@DaymonMos
@DaymonMos 2 месяца назад
Как в Сlion настроить запуск окна приложения?
@Minecraft_is_my_life_for_ever
Это конечно прикольно, но это одно из сотен видео, где программист показывает что он сделал, а люди смотрят на каждую строчку и думают зачем она нужна. С таким же успехом можно просто скопировать с интернета код😭
@dragonsister2311
@dragonsister2311 9 месяцев назад
+++ Как сделать? Да. Вот
@_okSashaok_
@_okSashaok_ 7 месяцев назад
Чувак настолько быстро написал код, что я даже не обратил внимание, что он что-то там объяснял 😂
@AndrijZyn
@AndrijZyn 4 месяца назад
у меня это видео на 6,5 минут выщло на 40 минут поиска информации про эти до исторические структуры и названия переменных, было бы прекрасно если бы автор оставил краткий экскурс про них в описании, как примеру, *Что такое hInstance* *Когда вы запускаете приложение, операционная система выделяет уникальный дескриптор hInstance, который используется для идентификации ресурсов, таких как иконки, курсоры, шрифты, меню и т.д., а также для различных операций, связанных с созданием окон, обработкой сообщений и т.д.*
@albusat3749
@albusat3749 Год назад
Автор видимо куда-то торопиться, нет бы писать код попутно объясняя что означают данные функции, создаётся ощущение что смотришь видео на x2
@biscvie
@biscvie 2 года назад
Продолжай развивать эту тему с оконным приложением ты пока что единственный кого я нашел кто подробно объясняет на русскоговорящем ютубе!
@greeneye_team
@greeneye_team Год назад
Да, автор подробно излагает список своих действий, но вопросы "почему?" и "зачем?", касательно кода, остаются в тени…
@noname-hw3bb
@noname-hw3bb Год назад
есть еще один, достаточно прикольный челик, может темы его кажутся детскими. но на самом то деле довольно крут название Begin End(ни в коем случае этоне реклама, просто я тоже частенько блуждал в ютубе в поисках норм инфы) но он работает в код блкокс
@vladostema
@vladostema Год назад
@@greeneye_team знал бы сказал бы)
@FeinGe
@FeinGe Год назад
Это шутка? С таким успехом я могу исходники открыть, по этой причине нужно смотреть уроки на инглише, на ру сегменте по winapi одни дилетанты.
@kirq356
@kirq356 Год назад
Я умею пока только калькулятор с помощью switch делать на командной строке, куда я полез?
@Refuzo
@Refuzo 3 месяца назад
В свичах нельзя делать проверки, это Главный их минус
@drikamslat4568
@drikamslat4568 2 года назад
У меня такая проблема, что когда я запускаю программу, точнее, компилирую, окно не запускается. Остается вечная компиляция. Есть варианты это исправить?
@concorde3536
@concorde3536 2 года назад
А почему ошибок нету, все успешно запускается, но пустое окно не появляется? Я даже пробовал из папки проекта ехешник запускать, ничего не происходит!
@m_stifeev
@m_stifeev 2 года назад
Отличное видео. От себя хотел добавить, что к некоторым функциям и параметрам нужно добавлять суффикс "W", чтобы работать с расширенным типом строк. Например, WNDCLASS -> WNDCLASSW; DefWindowProc -> DefWindowProcW. Ну и WinMain -> wWinMain. Автору канала - успехов.
@egordeveloper3794
@egordeveloper3794 2 года назад
Спасибо! Согласен, рассказать о разных типах строк очень важно Я планирую сделать это в четвертой или пятой части
@FeinGe
@FeinGe Год назад
Зачастую макросы сами преобразуют в W.
@ImyaFamiliya64689
@ImyaFamiliya64689 Месяц назад
Спасибо за видео
@dgaz12
@dgaz12 6 месяцев назад
Чел видео записал как он умеет учитесь )))😅😅
@newusername-i4n
@newusername-i4n Месяц назад
Смешно
@АндрейБородин-ы1д
@АндрейБородин-ы1д 11 месяцев назад
Здравствуйте. А как написать собственные дизайнерские окна и формы в С++ с помощью XAML ? И как их подключить в проект?
@verycool9508
@verycool9508 2 года назад
А где найти документацию по этой теме?
@NeuFeld_2005
@NeuFeld_2005 2 года назад
а нормально что я +- знаю базу с++, ну там функции, двумерны массивы и тд, но в самом видео я ничего не понимаю.
@FeinGe
@FeinGe Год назад
Потому что это winapi, к плюсам тут отношение косвенное, разве что работа с типами данных и автор нифига не объясняет.
@pvp717
@pvp717 7 месяцев назад
Да, это нормально)
@ИльиныхИван
@ИльиныхИван Год назад
00:23 "создадим обычный проект на с++" че создал, как выбрал, сам то понял учитель епт..
@СтарыйВаленок-к4л
@СтарыйВаленок-к4л 2 года назад
Спасибо за краткое информативное занятие. На ютубе мало таких видео.
@ИгорьИгорь-д9в
@ИгорьИгорь-д9в Год назад
Автор можно вопрос , а подскажи пожалуйста учебник или справочник по объяснению самого кода для виджетов , просто хорошо то что ты показываешь , но ничего не понятно , хорошо бы базу и объяснения
@uckorkaa6882
@uckorkaa6882 11 месяцев назад
Рекомендую книгу Н. А. Литвиненко - программирование WinAPI приложений.
@РомаБывает
@РомаБывает 9 месяцев назад
Чего так медленно и подробно... По
@Карась-п6и
@Карась-п6и 2 года назад
Отличное видео, но в следующий раз оставляй файл с кодом, я час искал ошибку в коде, а оказалось что я пропустил одну строчку.
@nikitaplay5025
@nikitaplay5025 2 года назад
Спасибо
@thetiphon
@thetiphon Год назад
Хоть бы какую-то теорию рассказал... что толку показывать как ты пишешь код
@Gretanit
@Gretanit 2 года назад
Спасибо за способ. Сложно.
@дмитрийм-т1п
@дмитрийм-т1п 9 месяцев назад
Странно, но попробовал на асме окно такоеже сделать, строк кода в 3 раза меньше вышло)
@миииц
@миииц 2 года назад
В субтитрах упоротость какая-то, не понятно нифига (за серию уроков спасибо) Апд: имхо, скорость роликов слишком быстрая даже на 0.5
@egordeveloper3794
@egordeveloper3794 2 года назад
Субтитры к первой части ютуб сам генерировал) Исправил, теперь должно быть понятно
@thetruthsofcivilizations6727
@thetruthsofcivilizations6727 7 месяцев назад
Подскажите, пожалуйста, пишет ошибку при сборке: Серьезность Код Описание Проект Файл Строка Состояние подавления Подробности Предупреждение C28251 Несогласованная аннотация для "WinMain": данный экземпляр содержит нет аннотаций. См. c:\program files (x86)\windows kits\10\include\10.0.22621.0\um\winbase.h(1037). Our Project D:\Projects\C plus plus\Our Project\SoftwareMain.cpp 6 Серьезность Код Описание Проект Файл Строка Состояние подавления Подробности Предупреждение C4715 SoftwareMainProcedure: значение возвращается не при всех путях выполнения Our Project D:\Projects\C plus plus\Our Project\SoftwareMain.cpp 46
@thetruthsofcivilizations6727
@thetruthsofcivilizations6727 7 месяцев назад
Я нашел ошибку в своем коде. Если новички такие же как и я читают, то вот в чем была моя ошибка: WNDCLASS NewWindowClass(HBRUSH BGColor, HCURSOR Cursor, HINSTANCE hInst, HICON Icon, LPCWSTR Name, WNDPROC Procedure) { WNDCLASS NWC = { 0 }; NWC.hCursor = Cursor; NWC.hIcon = Icon; NWC.hInstance = hInst; NWC.lpszClassName = Name; NWC.hbrBackground = BGColor; NWC.lpfnWndProc = Procedure; return NWC; } Я не указал строку со свойством: NWC.lpszClassName = Name; - её не было в моем ошибочном коде. После вставки данной строки в код - все заработало, несмотря на предупреждения.
@АндрейБородин-ы1д
@АндрейБородин-ы1д 11 месяцев назад
Здравствуйте. Где найти информацию о том, как написать собственное графическое приложение с помощью XAML и подключить в проект С++
@hot_tiktok_shorts
@hot_tiktok_shorts 10 месяцев назад
uwp или wpf гугли
@danyadep
@danyadep Год назад
Худшие уроки, ничего не объясняет, а просто пишет. Легче просто скопировать код из интернета, а не смотреть это.
@snygfog5351
@snygfog5351 2 года назад
Подскажите пожалуйста, где выучить основы библиотеки windows.h или посоветуйте хорошие курсы на Ютубе если такие есть. Спасибо
@egordeveloper3794
@egordeveloper3794 2 года назад
Не думаю что есть конкретное определение основ WinApi, тут скорее приходится по очереди решать возникающие задачи Но чтобы понимать, как устроена программа, я думаю достаточно знания базовых типов данных в C++, в частности строк (например std::string) В своем базовом курсе я рассмотрел как создание окна, меню, виджетов, так и более продвинутые фишки, такие как многопоточность, работа с COM-портом. Чтобы все было понятно, я стараюсь постепенно рассказывать о новых элементах и функциях, как они работают, где и как их применять Ссылка на плейлист находится в описании Если будут возникать вопросы, задавай их в комментариях
@FeinGe
@FeinGe Год назад
@@egordeveloper3794 Вот знаешь, я на плюсах что-то да умею, но вот когда касается чехорда до winapi тот тут начинается ступор, потому что это вообще другая область и очень плохо задокументирована, от мелкософта только принимаемые типы данных и небольшое описание, а потом выясняется, вызови другую функцию от апи, что бы получить значение которое нужно передать еще в другую и так дорога к результаты растягивается на часы из-за просто убогой документации где цепочка последовательности практически отсутствует, понимай как хочешь, соответственно в инете мало уроков по winapi так как тут выучить язык это просто пустяки по сравнению с этой древней апишкой на которую забили давно болт сами разрабы.
@romk224
@romk224 2 месяца назад
Петцольд, Рихтер.
@FeinGe
@FeinGe Год назад
Это что вообще? Урок или просто аналог открыть исходник и нифига не понять xD
@NoName-he2uz
@NoName-he2uz 6 месяцев назад
На стадии создания проекта 0:23 уже для совсем нулевого пользователя не понятно.
@concorde3536
@concorde3536 2 года назад
А можно было этот код оставить в описании, чтоб руками не писать?
@egordeveloper3794
@egordeveloper3794 2 года назад
Теперь весь проект можно скачать с моего GitHub: github.com/YTEgorDeveloper/Cpp-WINAPI-Basics-course
@ЭндиДюфрейн-ь3я
@ЭндиДюфрейн-ь3я 2 года назад
чтобы просто создать окно нужно уйма кода. ужос! есть ли старое решение авто формирование и тупо писать свой код?
@egordeveloper3794
@egordeveloper3794 2 года назад
Ну не то чтобы тут так много кода) Согласен, сначала может показаться что структура приложения сложная, но на самом деле мы поэтапно создаем нужную структуру программы (сначала создаем класс, затем процедуру-обработчик) А так в этой части я думаю мы пишем больше всего кода🛠
@maksimkoval8955
@maksimkoval8955 Год назад
Как сделать вертикальный скролл
@ioa5004
@ioa5004 2 года назад
что делать если когда я пишу L"MainWndClaas", SoftwareMainProcedure); у меня выдаёт ошибку по типу " const wchar не совместим с LPWSTR
@egordeveloper3794
@egordeveloper3794 2 года назад
Тип строки должен быть константным, т.е. LPCWSTR Замени в объявлении функции тип строки имени LPWSTR на LPCWSTR, после этого все должно заработать
@ioa5004
@ioa5004 2 года назад
@@egordeveloper3794 хорошо, попробую
@KAT_Editor
@KAT_Editor 8 месяцев назад
Почему не wWinMain?
@СтарыйВаленок-к4л
@СтарыйВаленок-к4л 2 года назад
Расскажите как поиграть цветами отличными от установленных в windows(COLOR_WINDOW)
@ficked2773
@ficked2773 2 года назад
На мсдн смотри, хз)
@СергейВетров-э5щ
@СергейВетров-э5щ 2 года назад
Круто. На зачем таким способом создавать окна в 2021 году?
@concorde3536
@concorde3536 2 года назад
Не знаю как у тебя, но у всех сейчас 2022 год.
@alexmadway
@alexmadway 2 года назад
@@concorde3536 в защиту ТС напомню, что видео было записано в 2021-ом. ТС отталкивался от даты публикации видео и задавал вопрос автору, а не комментаторам. К сути вопроса не присоединяюсь, потому как только начал изучать плюсы. Я middle+ на PHP и middle на Python. Повышаемся теперь, исходя из необходимости.
@МаксГапонов-ы4е
Как его на VSC скомпилировать?
@vitaliyoleynik5405
@vitaliyoleynik5405 Год назад
напиши если узнал пж)
@МаксГапонов-ы4е
@@vitaliyoleynik5405 Я забил и на вс пошёл делать) Можешь в chatgpt спросить
@evgenyjagushinsky6695
@evgenyjagushinsky6695 Год назад
Ради такого маленького окошечка надо стООООлько кода написать? Ужас!)))) Егор, а Вы не хотели бы мощный видеокурс по С++ создать?
@egordeveloper3794
@egordeveloper3794 Год назад
Была идея, но уже есть очень много видео по чистым плюсам в отличие от winapi. Можно попробовать C# Windows Forms как альтернативу для более быстрой разработки, но опять же уже есть очень много видео от других авторов Так что пока думаю про что еще сделать видосы)
@evgenyjagushinsky6695
@evgenyjagushinsky6695 Год назад
@@egordeveloper3794 про реальные рахработки программ. Этого мало. Как программист получает задачу, что происходит далее, как пишет её, чем при этом пользуется. Т е можно сделать сперва видос от получения от заказчика ТЗ, до выхода продукта программного, а второе видео запилить о том как создаётся программный продукт. Было бы очень интересно! А програмку писать какую-н небольшую.
@evgenyjagushinsky6695
@evgenyjagushinsky6695 Год назад
@@egordeveloper3794 так же всегда интересовал вопрос о том, как пишут какую-то большую прогу и в ней имеются блоки написанные на другом языке. Как это всё связывается между собой? Это не ясно. Т е, например, пишем на питоне, а отдельные моменты на с++ для проги на питоне. Но как тогда эти блоки впИсываются в питон?!)
@egordeveloper3794
@egordeveloper3794 Год назад
@@evgenyjagushinsky6695 Думаю ты имеешь ввиду динамически подключаемые библиотеки (.dll файлы)? В них можно запихивать функции, классы и методы к ним и т.п В питоне я с ними не работал, но работал в C# и С++, думаю тут все аналогично. Я писал программу на C# а модули были на C# и C++ Суть в том, что программа просто обращается к методу в библиотеке, а реализация задается уже в ней. Отсюда следует плюс модульности - в самой программе ничего прописывать не нужно, нужно обратиться к методу который мы определим библиотекой которую подключим (которая к тому же может быть написана на другом языке) Второй плюс заключается в том, что не нужно рекомпилировать всю программу (а если она огромная делаться это может очень долго). Нужно пересобрать лишь библиотеку, в которую надо добавить контент или исправить баги Как-то так
@evgenyjagushinsky6695
@evgenyjagushinsky6695 Год назад
@@egordeveloper3794 ну это для тебя легко, а для начальнго уровня не легко. И об этом можно просто поговорить в ролике, обьяснить, и это и может быть интересным материалом для опубликования. Про питон я лишь привел пример. С# и с++ тоже интересны.
@Yxoder
@Yxoder 8 месяцев назад
3:36
@Виктор-ц2ъ6о
@Виктор-ц2ъ6о 2 года назад
Плохо начал не сказал вчем пишешь Несказалка чтовчет ты пишешь не работае на семерке.
@Yxoder
@Yxoder 8 месяцев назад
3:36 остановился
@יאי
@יאי 6 месяцев назад
🤣🤣почти 4 минуты посмотрел, пора отдыхать 😂
@tropovgabarin5001
@tropovgabarin5001 10 месяцев назад
Слабо, мало объясняешь челы которые хотят создать окно нихуя не знают
@PROTOTYPE121194
@PROTOTYPE121194 11 месяцев назад
Терпеть не могу winapi, хоть и работаю с ним. Qt ван лав.
@Oto__Ai
@Oto__Ai Год назад
Терпеть не могу это кривое недоваренное днище под названием winapi
@podmvd
@podmvd Год назад
Не работает=(
@caryou771
@caryou771 3 месяца назад
в следуещии разы побыстрее пиги
@wiyiwiyiwiyiwiyiwwiyiwiyiw1274
@wiyiwiyiwiyiwiyiwwiyiwiyiw1274 2 года назад
3:55
@maximkorolev7343
@maximkorolev7343 Год назад
Спасибо тебе, добрый человек
@barbarisjr
@barbarisjr Год назад
получается практически весь код в данном видео является начальным шаблоном для создания любого оконного приложения?
@anatolijus13
@anatolijus13 Год назад
НИЧЕГО НЕРАБОТАЕТ
@IronBruh
@IronBruh Год назад
Ощущение, что в коде ошибка... но у автора видео всё работает. Потратил некоторое время, чтобы разобраться: если у кого-то запускается программа, но окно не выводит, то надо прописать HWND hWnd = CreateWindow(...); ShowWindow(hWnd, nCmdShow);
@N1ghtc0r3HD
@N1ghtc0r3HD Год назад
В главном файле нужно добавить HINSTANCE hInst; BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { hInst = hInstance; // Сохранить маркер экземпляра в глобальной переменной HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, 100, 100, 500, 250, nullptr, nullptr, hInstance, nullptr); if (!hWnd) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; }
@СоломонЗуев-я2л
Понятно и интересно объясняешь, спасибо!)
Далее
MENU SETUP  -  C++ WINAPI PART #2
5:46
Просмотров 22 тыс.
WIN32 FOR BEGINNERS  -  C++ WINAPI BASICS COURSE
48:12
Просмотров 67 тыс.
Добро пожаловать в C++
16:08
Просмотров 467 тыс.