Войти

Показать полную графическую версию : Программирование под Win32 для начинающих


Claymin
03-06-2002, 23:57
Если можно в двух словах - какие надо #include и как называются функции, которые делают прогу способной:

Бегать под W2k
Рисовать на экране пиксели (лучше в fullscreen)
Играть MIDI и mp3
Реагировать на ввод с клавиатуры и шебершание мышой
Смотреть системный таймер

Или ткните меня носом где инфу по этим вопросам можно найти. Буду очень благодарен.

Можно на английском.

Исправлено: Claymin, 1:01 4-06-2002

ivank
04-06-2002, 08:44
Во-первых нужен windows-компилятор. Их штук дцать наберётся.

Бегать под W2k<windows.h>

Рисовать на экране пиксели (лучше в fullscreen)Зависит от того на сколько эта операция критична. В простейшем случае хватит GDI, а так DirectDraw.

Играть MIDI и mp3 MIDI - точно через DirectSound играть. mp3 без дополнительных кодеков (fmod, dbass) вроде вообще низя.

Реагировать на ввод с клавиатуры и шебершание мышой Орять же зависит от критичности операции -- можно обойтись приёмом сообщений от Windows в Windows Proc, а можно через DirectInput это делать.

Смотреть системный таймер Системный это какой? Я всегда GetTickCount использовал -- мне хватаеть.

Или ткните меня носом где инфу по этим вопросам можно найти. Буду очень благодарен. http://msdn.microsoft.com , лучше вообще MSDN купить (В России, благо, пиратов много -- диски дешёвые).

noname00.pas
04-06-2002, 12:46
В продвинутых языках, типа Turbo Pascal 7.0... :)
Системный таймер смотрится прямо из памяти. 0000:046C - вроде так.

А вообще - смотря для каких целей :)

мп3 играть - это Вы загнули... Такие вещи самому писать надо.

IvanK, у тебя новый имидж? ;)

cheap
04-06-2002, 21:15
давны-давно создал я тему с таким же заголовком. И...тут же получил предупреждение от когото из модеров "несодержательный заголовок"

ivank
04-06-2002, 21:47
cheap
Ты прав... Claymin, слышал? Замечание тебе. cheap -- просто мы изголодались по постам в этом форуме, когда тему создают раз в неделю это очень удручает откровенно говоря.

noname00.pas
06-06-2002, 22:53
Так-так.... Похоже правил форума не знают ни администратор, ни пользователи. Всем читать пункт 11 общих правил пол часа! :)

А именно:
Запрещается обсуждение действий администрации и вопросов типа "Ну и где вы, админы, у вас тут такое творится" в конференции. Если Вы хотите что-то сказать, делайте это лично, через письма.

Claymin
07-06-2002, 23:38
Спасибо за ответы, только я ничего не понял :)

Во-первых я знаю более-менее C++, но только на уровне синтаксиса. А так я даже стандартные библиотеки не очень. Win32 я все равно буду учить в ВУЗе, но это будет года через пол... поэтому хотелось бы сейчас просто знать как что называется а разбираться во всей этой безобразии потом, это на кучу топиков потянет :) А то заглядывал как-то в исходники Xonix32, долго потом отходил... Куча каких-то define, функции все большими буквами... бред...

Компилятор сейчас стоит BC++ 5.02 но если сильно надо могу поставить MSVC++.

Хотелось бы просто посмотреть исходник, который просто создаёт процесс, и потом просто его закрывает, а также узнать
имена и тип вводимых значений для функций которые занимаются перечисленными операциями... А то <windows.h>... он же сам по себе ничего не даст, там есть куча функций, которые я понятия не имею как называются и как работают, и от них зависит, подружится ли прога в Виндаем.

Я совершенно не против разбираться в этом всем сам, только пытаюсь начать откуда-то, где хоть что-нибудь понятно... А так мне иногда кажется, что легче выучить asm чем MSDN

ЗЫ про правила... сорри,  а как надо было назвать топик, в котором ламер пытается спросить как с нуля научиться программировать под Win32 :) Я не специально, честно :)

ЗЫЫ Про mp3 я чего-то действительно затупил... Хм... а вообще это сильно сложно декодек написать?

ЗЫЫЫ Лучше всего наверное все делать через Прямой Х. Я в принципе не 3D engine пишу, но желательно чтобы прога не тормозила топорно на P200, тем более при не такой уж навороченной графике. Таймер в принципе все равно какой - системный, не системный, главное чтобы по нему время можно было отслеживать, хотя бы 16 раз в секунду. И еще - желательно чтобы конечный продукт весил как можно меньше, он по идее разрабатывается как downloadable freeware.

Кстати еще такие вопросы - я компилял прогу (совсем досовскую, с текстовым интерфейсом), так сам экзешник весил килобайт сорок от силы, а тот мусор, который вместе с ним в папке был (всякие ilf, obj, tds) - еще на пару мегабайт тянул. Причем прога вроде и без них работает прекрасно. Вопрос - кому они там надо? И можно ли сделать прогу как-бы из кусочков, чтобы не компилировать все каждый раз, а менять только функции, отвечающие за главное меню например. Или это уже новый топик создавать надо? В Зоне Ламера :)

ivank
08-06-2002, 08:38
Раз тебе лень разбираться в MSDN'е (там не на столько всё сложно, только надо знать что ты хочешь), то лучше купи какую-нибудь книгу по WinAPI, там обычно всё разбирают начиная с простейших примеров. Вечер подролбнее отвечу.

Claymin
09-06-2002, 00:26
Да мне не лень, просто инета не так много чтобы в онлайн искать что мне нужно... А книгу купить... :) Это что-то общеобразовательное, я уже пробовал... за пару дней прочитываешь, нового узнаешь мизер, а стоит такая макулатура сравнительно недешево... Наверно все-таки придется искать MSDN который на дисках... :cranky:

ivank
09-06-2002, 12:32
Claymin
Это что-то общеобразовательное, я уже пробовал... за пару дней прочитываешь, нового узнаешь мизер, а стоит такая макулатура сравнительно недешево...Это зависит от книги. Конечно"Пройди путь от ламера до куль программера за неделю" многому не научит. Хороших книг очень много. ричём книга != документация, то есть книги хороши для введения в предмет, понимания технологии, а конкретные детали уже надо смотреть в документации (MSDN'е том же).

Claymin
10-06-2002, 01:02
А как например должна называться хорошая книга?

ivank
10-06-2002, 17:44
Claymin
Не знаю. Из того что я непосредственно читал по Win32 это "Inside Wndows 2000" и "Programming Applications for Windows". А для введения не знаю -- сам я по ужаснейшей книге учил WinAPI, никому не рекомендую. Лучший способ выбрать книгу -- зайди на всякие инет-магизины, и почитать ревьюшки.

Admiral
03-12-2005, 03:16
Claymin
Про МР3 в С++ http://gamemaker.webservis.ru/articles/mp3/mp3.htm.

Кстати а с асм вставками не пробовал кодить?
Низко уровневое декодирование МР3 бывает?

pva
05-12-2005, 12:46
Да, крутые тут ребята разговаривают. Извините, что вмешиваюсь. Если не сильно важна офигенная скорость выполнения, то можно
обойтись WinAPI.

#define WINVER 0x0400
#include <windows.h>

1. Для работы с таймером в WinNT рекомендуется использовать SetTimer/KillTimer. Если нужно разрешение вполть до наносекунд, можно использовать счётчик квантов (что-то вроде GetThreadUserTime). Но этот урод тормозит систему.

2. Миди играется функциями #include <mmsystem.h> midiOutOpen/midiOutClose/midiOutPrepareHeader/midiOutUnprepareHeader/midiOutWrite
и т.д.

3. mp3 играется при помощи ACM (audio compression manager), который знает все кодеки (кодек должен быть установлен) или MCI (multimedia control interface) Это подход высокого уровня, который запускает параллельный поток или процесс для воспроизведения. Ему достаточно указать файл или закачивать этот файл в поток i/o.

4. Если установлен DirectX 9, то смысла использовать DirectInput по-моему нет. Всё равно там используется очередь событий.

Всю инфу на английском языке можно найти в msdn или её краткой версии в хелпе у борланда (win32.hlp). Там всё довольно доходчиво описано.

SergeCpp
05-12-2005, 15:42
Хорошую книгу написал Джеффри Рихтер

Вот исходники (http://sergecpp.mylivepage.com/file/1/2/ClockSrc.rar) вот этих моих часов (http://sergecpp.mylivepage.com/file/1/1/ClockExe.rar)

Вот ещё исходники (http://sergecpp.mylivepage.com/file/1/9/SyncSrc.rar) вот такой моей программы синхронизации каталогов (http://sergecpp.mylivepage.com/file/1/8/SyncExe.rar)

А вот посложнее — игра "Жизнь"

Про неё можно по-русски почитать здесь (http://beluch.boom.ru/lifelex/lexr.htm)

Проект для VisualStudio 6

Есть и рисование и вычисления...

Есть даже "исходный вариант" — "американец" Jeff Prosise делал...

Заодно полезно сравнить, как "было" и как "стало"

Все программы написаны серьёзно и работают не один год

ivank
05-12-2005, 20:17
Посмотрите на дату создания темы. Нафига отвечать на вопрос заданный 3 года назад?

Admiral
06-12-2005, 00:05
ivank
На то он и форум что люди всё время обсуждают вопроси, которые были заданы даже три года назад. В ответах уже эсть инфа про DirectX 9, а ведь эсли б он был три года назад то проблема б может по другому решилась.
Вопроси старые - реализацыя (техника) новая.




© OSzone.net 2001-2012