Добро пожаловать ко мне на канал! Здесь публикуются ролики различной IT тематики: видеоуроки по программированию, устройство железа ПК, сборки ПК. В дальнейшем, возможно будут новости в сфере IT.
Название VoidPtr было выбрано в связи с тем что на языках С\\С++ оно означает void*(указатель на void), т.е. ему можно присвоить что угодно. Изначально я планировал делать видео в разных сферах: гейминг, программирование, техноблогинг, влоги. Однако из-за того что у меня не было времени, да и здоровье не позволяло - я реши остановится лишь на 2х направлениях: техноблогинг и программирование.
С Ютубом я знаком довольно давно(года с 2010-2011), когда на нём можно было без проблем смотреть фильмы да и не только(т.е. никто не дёргал за авторские права). В сентябре 2012 года я создал свой первый канал , на котором я изначально делал летсплеи по майнкрафт(классика жанра) ).
Лучший в этом деле! Жаль, что мало видеоуроков, самому читать доки от майкрософт не так интересно и не всегда понятно, хочется чтобы кто-то объяснил для чего это нужно. Надеюсь, будут новые видео, а так удачи тебе!
@@H1m1kat1kвы хотя бы поняли, что сказали? Разумеется практически на любом языке программирования с ооп и без есть возможность использовать библиотеки winapi. К примеру Си не ООП язык. Вопрос в другом. Winapi это библиотека работающая исключительно в системах windows. В системах с линукс другая конструкция системы, там нет этой библиотеки, так как там обычно графика на Хlib и тому прочее. То-есть winapi создан для работы с windows а не linux. Он физически просто не будет работать если не использовать программы по типу wine
По поводу проблем у автора по функции RegEnumValue могу поделиться тем, что было у меня. При использовании функции RegEnumValue выходила ошибка 234 (ERROR_MORE_DATA), что свидетельствовало о том, что не хватало объема буфера для записи данных. Данная функция как я понял изначально использует сведения из переменных, содержащих объем буфера, для своей работы. После завершения работы функции в эти переменные записываются результаты считывания данных, а именно число прочитанных байтов (возможно элементов) и если эти данные не установить в первоначальные значения, то при втором запуске функции функция не отрабатывает как надо и выводит ошибку 234. В моем случае данная проблема решилась установкой прежних значений об объеме буфера в переменные после использования функции. Пример кода: /* данная часть от автора канала с 32 строки */ DWORD iIndex = 0; LPWSTR str = NULL; str = calloc(SIZE_STR + 1, sizeof(WCHAR)); if (str == NULL) return 2; while(RegEnumKeyW(hKey, iIndex, str, SIZE_STR) == ERROR_SUCCESS) { wprintf(L"%s ", str); iIndex++; } /* данная часть по использованию функции RegEnumValue (продолжение кода) */ iIndex = 0; DWORD sizeName = 260, sizeData = 260; LPWSTR name = NULL; name = calloc(sizeName + 1, sizeof(WCHAR)); if (name == NULL) return 3; DWORD *lType = NULL; lType = calloc(1, sizeof(DWORD)); if (lType == NULL) return 4; BYTE * bData = NULL; bData = calloc(sizeData + 1, sizeof(BYTE)); if (bData == NULL) return 5; while(RegEnumValueW(hKey, iIndex, name, &sizeName, NULL, lType, bData, &sizeData) == ERROR_SUCCESS) { if (*lType == REG_SZ) wprintf(L"name: %30s, data: %s ", name, bData); else if (*lType == REG_DWORD) { int num = bData[0] + bData[1]*256 + bData[2]*256*256 + bData[3]*256*256*256; // чтобы посмотреть число типа REG_DWORD его надо собрать wprintf(L"name: %30s, data: %d ", name, num); } else puts("Sorry man, you need to improve your code"); sizeName = sizeData = 260; // установка сведений об объеме буфера в прежние значения iIndex++; } RegCloseKey(hKey); free(bData); free(lType); free(str); free(data); free(name); return 0; } Может кому-то поможет данная информация.
Всё очень хорошо рассказанно,но выделение динамической памяти под любой объект методом new,должен обязательно заканчиваться словом delete.Иначе захламляется память ненужными объектами,а это не рационально
5:20 я не ослышался? Windows NT начинается с Windows 95? По моему они с разных планет. 95,98, линолеум - это оболочки под DOS. NT3.5, NT4.0, 2000, XP, 7,8,.... это полноразмерные ОС со своим ядром. И сервисы предусмотрены только в этой линейке. ... или я что-то подзабыл за давностью лет?
Спасибо за видео, оно отличное. Может быть можешь подсказать как заблокировать ctrl alt del? Как я понял, нужен кейс соответствующий? Или сразу три кнопки не задетектит? Может просто одну из них заблочить? Сработает?
CreateHardLinkW не срабатывает потому, что имя нового файла и имя существующего поменяны местами (думаю это сделана для новых комментариев). Отличные уроки, спасибо!
кстати, еще один возможно глупый вопрос. я учусь кодить в codeblocks вот у меня вопрос, а как сделать чтобы длл файлы сфмл не приходилось каждый раз уопировать в проект, а потом и в компилятор для упаковки в exe файл? если не сложно,ответь пж.
@@VoidPtr понял, успехов тебе в этом нелегком деле, а я на стадии "как прописать алгоритм чтоб анимация из спрайта перемещалась (право середина лево середина право)" и тд, а не как у большинства сдева направо и заново. короче учусь я, да так, что 2 день не могу найти ответ на свой вопрос 🤦♂️
@@VoidPtr я хз как это называется, но вызывается это командой в sfml sprite.setposition вроде, там где мы вводим координаты спрайта 4 числами, ну а анимация назначена на клавиши когда персонаж двигаться начинает, особо не помню как там, так как учусь только, но что понял так это то что в видосах которые смотрел меняется только первое число, которое равно длине спрайта в пикселях, и оно умножается на количество кадров, которое меняется в зависимости от того сколько была нажата клавиша. и получается что оно может только увеличиваться ну и потом сбрасывается на 0 и так до бесконечности пока клавиша нажата (это число кадров) currentFrame так называемый. а мне нужно я так понимаю, чтоб он был от 3 до 1 и обратно (так как кадров 3 у меня (левая нога слева, правая справа, и перешаг по середине) вот мне либо алгоритм через currentframe не подходит вовсе,либо алгоритм через увеличение кадров по времени нужно прописать другой,и я вот сколько тупой своей головой не думал - не придумал ничего. я сначала думал прописать что то типа if (currentframe = 1) currentframe = i++ ну и наоборот if = 3 тогда i-- но тогда какогото хрена оно на 2 останавливается, тогда я прописал через <= и >=, все еще на 2, и что не пробую, нифига не катит,либо координаты фрейма через жопу рисует либо вообще анимация застывает, еще и пролаги какие то появляются.
@@VoidPtr короче не забивай себе особо голову,это я так, жалуюсь. меня это так свербит, что я начал книгу страуструпа читать "язык программирования c++" сомневаюсь что мне это поможет,но говорят вродь книга хорошая для ознакомления с языком. кстати не мог бы ты посоветовать какуюто литературу по с++, только желательно чтоб не уснуть. с задачками может какими , упражнениями
Когда ищешь как вывести полную таблицу со значением для каждого градуса, а тебе в сто пятьсотый раз выпадает видео с нахождением стандартных значений, просто *********.....
Поисковой движок гугла с каждым годом всё хуже. У меня гугл вообще выдаёт почтовые отделения с другим индексом, и другие почтоматы. А чего это видео так внезапно взлетело - хз