XaeroX писал: Ну как-то так, этот момент Дядя Миша лучше прояснит, т.к. делал подобное в ксаше.
Там просто рэсемпл на лету с одновременным рендерингом.
Теоретически так качество немного лучше, т.к. идёт предумножение на громкость прямо в реалтайме.
Цитата:
FiEctro писал: Вообще виндовые либы какие то чудоковатые.
Этим либам уже 40 лет некоторым, они старше тебя.
Ты объясни что ты хочешь сделать? Если ты на завод хочешь, так и иди себе. А если хочешь звуки микшировать - так микшируй.
Дядя Миша писал: Или ты может свой движок пишешь или что?
Это отдельный от Юнити проект, чисто на крестах, движком сложно назвать, скорее просто приложение. Потому тянуть к себе половину кваки не очень хотелось.
FiEctro писал: движком сложно назвать, скорее просто приложение
Чем больше информации ты выдашь, тем более дельный совет получишь.
Потому что просто приложению незачем звуки микшировать.
Да и вообще большинство приложений не издаёт никаких звуков, так уж исторически сложилось, что звук на компьютеры завезли только в конце 80-х.
Дядя Миша
Простенький 2д платформер. Делаю скорее для себя и врядли буду оформлять его в готовый проект и релизить. Я решил просто немного вообще функционал винапи подучить чтобы потом всякие программки писать для личных нужд. Ну не цеплять же Юнити каждый раз. Но наверное всё же в будущем на питон перейду, там всё намного удобнее, а в крестах надо почти всегда прописывать какое то низкоуровневое дрочево (для кого то это конечно плюс, но не для меня).
Вообще в интернете как то мало инфы по винапи, а та что есть очень поверхностная, и порой устаревшая. Спасает только нейросеть, но и она порой дико тупит.
FiEctro писал: Я решил просто немного вообще функционал винапи подучить чтобы потом всякие программки писать для личных нужд.
Помоему ты ставишь телегу поперёд лошади. Тебе нужно что? Знание WinAPI или программки для личных нужд? Очевидно второе. Так вот и пиши программки, а WinAPI в процессе подтянешь. Ты в любом случае не выучишь ВЕСЬ WinAPI, т.к. там тысячи функций. Причём большая часть из них тебе скорее всего никогда и не понадобится.
Цитата:
FiEctro писал: а в крестах надо почти всегда прописывать какое то низкоуровневое дрочево
Так фреймворки же есть.
Цитата:
FiEctro писал: Спасает только нейросеть, но и она порой дико тупит.
Дожыли. А живых людей на форумах спросить, не? Нейросеть тебе небось не посоветует посмотреть код из кваки, я отчего-то уверен.
Не хочу никоо задеть, но имхо изучать винапи, чтобы писать
Цитата:
программки для личных нужд
в 2023 году это какое-то странное занятие.
Есть же человеческий C# и WPF, в котором все намного быстрее делается. Или там какой-то прямо низкоуровневый функционал нужен?
__________________
Углеродные звезды с древними спутниками, которые колонизируют разумные грибы...
Газовые гиганты, на которых обитает метеорологический разум...
Миры, растянутые на мембранах, где измерения пересекаются...
Это невозможно описать нашим ограниченным языком...
Gandalv писал: Есть же человеческий C# и WPF, в котором все намного быстрее делается. Или там какой-то прямо низкоуровневый функционал нужен?
Да чисто по фану кресты поковырять, шарп тоже учу параллельно, они довольно похожи. И звук впринципе нашел откуда выцапать. Обычный DirectSound, а для графики DirectX, он уже из коробки поддерживает некоторое количество форматов текстур и умеет работать с прозрачностью.
Больше всего в крестах бесит куча разных форматов строк, которые ещё не так просто сконвертировать. На кой чёрт их тут столько, я не знаю.
Цитата:
Gandalv писал: Не хочу никоо задеть, но имхо изучать винапи, чтобы писать
Такой вопрос по винапи: реально ли посредством C++ и винапи отрисовать кнопку в другом запущенном окне другого процесса, например cmd.exe или notepad.exe? Например я получил модуль приложения, могу обращаться к его памяти, но что мне делать дальше? Нужно ли для этого получать hInstance и что он должен возвращать? В интернете мало инфы на эту тему.
Я думаю надо искать окошко по его имени. Вообще - вполне реально, почему нет. Вспоминай шуточные программы, которые на всех диалогах заменяли слова Да\Нет\Отмена на Пофиг\Нафиг\Нефиг. Аналогичным же образом добавляются\удаляются и элементы из сторонних приложений.
Микрософт никогда с этим не боролся, насколько я знаю.
Добавлено 27-04-2023 в 14:14:
Единственное что - добавив новый контрол ты не добавишь этой программе функциональности. Т.е. нажатие кнопки не будет ничем обрабатываться.
Ну оно как бы и очевидно.
Дядя Миша писал: Я думаю надо искать окошко по его имени. Вообще - вполне реально, почему нет.
Это есть. Правда не по имени окна, а по имени процесса, потому что заголовок окна иногда может меняться. А вот что дальше я не очень понимаю. Найти бы пример таких программ, всмысле исходник, в интернете мало инфы очень, даже на английском.
Цитата:
Дядя Миша писал: Вспоминай шуточные программы, которые на всех диалогах заменяли слова Да\Нет\Отмена на Пофиг\Нафиг\Нефиг.
Одно дело изменить уже существующий элемент, другое дело добавить новый. Я находил программы которые позволяют двигать элементы интерфейса и менять им флаги, но не знаю, можно ли таким макаром добавлять новые?
Цитата:
Дядя Миша писал: Единственное что - добавив новый контрол ты не добавишь этой программе функциональности. Т.е. нажатие кнопки не будет ничем обрабатываться.
Можно подробнее? Ну сама то кнопка жмакаться будет? По идее можно из памяти событие отловить? Меня смущает этот hInstance который нужно указывать при создании кнопки. Как он работает?
hInstance - это инстанс модуля .exe. Для создания окошек внутри своего приложения он равен нулю и это нормально. Для создания окошек внутри чужого, очевидно надо его как-то найти. Я подобными вещами не занимался, поэтому не знаю, как это делается, но подобные функции в WinAPI есть 100%.
hWndParent - это хэндл родительского окна, т.е. окна на которое ты хочешь добавить свой контрол. Ещё обрати внимание - очень важно указать правильный className, его нельзя вбивать от балды, он должен совпадать с класснеймом, используемым для того окна, на которое ты хочешь добавить контрол. Иначе ничего не получится. Класснеймов таких приложение может использовать несколько, но зачастую и одного достаточно.
Добавлено 27-04-2023 в 15:28:
А и ещё важный момент. В винде есть зарезервированные класснеймы, такие как EDIT, COMBOBOX, BUTTON и прочие. Они используются вот как раз для создания функциональных элементов.
Дядя Миша писал: hWndParent - это хэндл родительского окна, т.е. окна на которое ты хочешь добавить свой контрол. Ещё обрати внимание - очень важно указать правильный className,
Т.е. он имя класса должен возвращать? Как вообще правильно перевести хендл? Везде так пишут, но я всеравно не понимаю смысла.
Цитата:
Дядя Миша писал: hInstance - это инстанс модуля .exe.
Т.е. это просто модуль записанный в память? А сдвиг ему нужен какой?