How do i put an mp3 or an avi (with audio) file in resource and make it play autommatically on the mci system ?
Posted on 2001-08-22 02:13:59 by Beyond2000!
this example:
1 AVI "COOL.AVI"
3 RCDATA "QS_BUMP.JPG"
STARYSKY RCDATA "STARYSKY-45.JPG"
TWISTER BITMAP "4TWISTER-14.BMP"
PAPER RCDATA "PAPER04-2.BMP"
SIERPINSKI RCDATA "SIERPINSKI.ICO"
SPECTRUM ICON "SPECTRUM.ICO"
COLORMIX RCDATA "COLORMIX.GIF"
MS RCDATA "MS.EMF"
TEXTDEMO RCDATA "DEMO.TXT"
PENCIL CURSOR "PENCIL.CUR"
ARROW CURSOR "BLACKARROW.CUR"
PAINT CURSOR "TPAINT.CUR"
WHOOSH WAVE "WHOOSH.WAV"
LASER WAVE "LASER.WAV"
BININT RCDATA "INTEGER.BIN"
BINDOUBLE RCDATA "DOUBLE.BIN"

then just call FindResource !!

i think mp3 is RCDATA us well :)


FindResource

The FindResource function determines the location of a resource with the specified type and name in the specified module.

HRSRC FindResource(
HMODULE hModule,
// resource-module handle
LPCTSTR lpName,
// pointer to resource name
LPCTSTR lpType
// pointer to resource type
);


Parameters

hModule

A handle to the module whose executable file contains the resource.

A value of NULL specifies the module handle associated with the image file that the operating system used to create the current
process.

lpName

Specifies the name of the resource. For more information, see the Remarks section.

lpType

Specifies the resource type. For more information, see the Remarks section. For standard resource types, this parameter can be
one of the following values:
Value
Meaning
RT_ACCELERATOR
Accelerator table
RT_ANICURSOR
Animated cursor
RT_ANIICON
Animated icon
RT_BITMAP
Bitmap resource
RT_CURSOR
Hardware-dependent cursor resource
RT_DIALOG
Dialog box
RT_FONT
Font resource
RT_FONTDIR
Font directory resource
RT_GROUP_CURSOR
Hardware-independent cursor resource
RT_GROUP_ICON
Hardware-independent icon resource
RT_ICON
Hardware-dependent icon resource
RT_MENU
Menu resource
RT_MESSAGETABLE
Message-table entry
RT_RCDATA
Application-defined resource (raw data)
RT_STRING
String-table entry
RT_VERSION
Version resource


Return Values

If the function succeeds, the return value is a handle to the specified resource's info block. To obtain a handle to the resource, pass
this handle to the LoadResource function.

If the function fails, the return value is NULL. To get extended error information, call GetLastError.

Remarks

If the high-order word of the lpName or lpType parameter is zero, the low-order word specifies the integer identifier of the name or
type of the given resource. Otherwise, those parameters are long pointers to null-terminated strings. If the first character of the string
is a pound sign (#), the remaining characters represent a decimal number that specifies the integer identifier of the resource's name
or type. For example, the string #258 represents the integer identifier 258.

An application should reduce the amount of memory required for the resources by referring to them by integer identifier instead of by
name.

An application can use FindResource to find any type of resource, but this function should be used only if the application must
access the binary resource data when making subsequent calls to LoadLibrary and LockResource.

To use a resource immediately, an application should use one of the following resource-specific functions to find and load the
resources in one call:
Function
Action
FormatMessage
Loads and formats a message-table entry.
LoadAccelerators
Loads an accelerator table.
LoadBitmap
Loads a bitmap resource.
LoadCursor
Loads a cursor resource.
LoadIcon
Loads an icon resource.
LoadMenu
Loads a menu resource.
LoadString
Loads a string-table entry.


For example, an application can use the LoadIcon function to load an icon for display on the screen. However, the application
should use FindResource and LoadResource if it is loading the icon to copy its data to another application.

See Also

FindResourceEx, FormatMessage, LoadAccelerators, LoadBitmap, LoadCursor, LoadIcon, LoadMenu, LoadResource,
LoadString, LockResource, SizeofResource
Posted on 2001-08-24 18:32:57 by Nguga
Now thats going the extra mile! :)

Not too many people will give you API reference as well.. but ya, use the RCDATA in your resource definitions to package anything that is non-win32-SDK-specific. You still have to figure out how to get it to run on another application (in another instance), but RCDATA will get the data stored for you.


Nguga: friendly suggestion, the msg board doesnt explicitly have a button for this (I think), but place a [ code ] before your Code posts, and follow it with a [ / code ] afterwards.. (no spaces tho). This will format your posts to allow for spaces etc. etc.

NaN
Posted on 2001-08-25 03:21:04 by NaN
Well, concerning the loadresource structure, it's very wothfull...

I found a file that puts midi in rsrc and load i, hen i adapted it to load mp3, asf, or avi as well.

The main problem is the fact that this file just puts the data (mp3/avi etc) on the resource, then he load its from memory and saves it to the disk in order that the mci commands can play.

I don't know hoe to make the mci command understand that he had to load the file directly troough the resource, and load it without writting to the HD...Just like the program mp32exe does.

here is the file: - Just put in the main directory an mp3 file called "temp.mp3", or change the name in the code resources.
Posted on 2001-08-26 16:12:19 by Beyond2000!
TD's code remarks explains that:

"If windows already had registered *.mpg ((or .mp3)) files in system.ini you could play mpg files, if not, it seems, you can not."

I would like to have .mp3 working on my system but I don't have an .mp3 listing in my heading of system.ini so my question is for those who have .mp3 registered in system.ini..

especially BEYOND2000!..

what program/codec do you have that will make this work?:eek:
Posted on 2001-09-23 16:37:42 by gscundiff
for playing adio files directly from memory, there is a pretty cool library out there it is called Fmod and there is even an extra small version, which can only play .xm files (it adds only 5KB to the exe)
http://www.fmod.org/
Posted on 2001-11-26 13:00:04 by theNOP
I'd go for the BASS library instead. It's better. And fmod author is
an arrogant prick, or so I've heard.
Posted on 2001-11-26 13:54:11 by f0dder
Beyond2000, once you nail this, can you post how you did it?

I looked at this recently in response to a query from a mate who was looking to embed an avi in the resource and then play it back through a WMP player embedded in a VB form. I found that embedding it in a resource and loading it by getting a pointer to the resource was no problem, but there didn't appear to be an effective method of passing that pointer to the embedded wmp player, and saving the resource to a temp file and doing a shellexecute on it seemed rather inelegant.

So, disregarding the COM issues, is there a particular movie media player to use, or a method where you can pass the resource pointer to Windows Media Player?

Cheers
Posted on 2001-11-26 21:32:29 by sluggy
Sorry for the long time that i was out i was without a computer for a long time...

I'll post the file again...

I know hat it's not the best method of putting an mp3 (or avi, or asf, or anything that mci can read), because it still create an temporary file...

I'll try to look for another way..


Best regards

Beyond2000!
Posted on 2001-11-27 22:41:27 by Beyond2000!