WinAmp

MedRamBO

Mitglied
Hi Leute,

ich versuche gerade WinAmp in mein C++ Projekt zu integrieren. Folgendes hab ich mir gedacht (bzw. gefunden zum Teil):

Code:
class WINAMP

{
public:
	bool Initialise();
	void PlayTrack();
	void StopTrack();
	void PauseTrack();
	void NextTrack();
	void PreviousTrack();
private:
	HWND whwnd;
}; 

bool WINAMP::Initialise()
{
	if(whwnd=FindWindow("Winamp v1.x",NULL))
	{
		return true;
	}
	else
	{
		return false;
	}
}

void WINAMP: layTrack()
{
	SendMessage(whwnd,WM_COMMAND,40045,NULL);
}

void WINAMP: layTrack()
{
	SendMessage(whwnd,WM_COMMAND,40045,NULL);
}

void WINAMP: topTrack()
{
	SendMessage(whwnd,WM_COMMAND,40047,NULL);
}

void WINAMP: auseTrack()
{
	SendMessage(whwnd,WM_COMMAND,40046,NULL);
}

void WINAMP::NextTrack()
{
	SendMessage(whwnd,WM_COMMAND,40048,NULL);
}

void WINAMP: reviousTrack()
{
	SendMessage(whwnd,WM_COMMAND,40044,NULL);
} 

BOOL MouseOver(HWND hwnd, int Item)
{
	RECT rDialog;
	RECT rItem;
	POINT pCursor;

	GetCursorPos(&pCursor);
	GetWindowRect(hwnd, &rDialog);
	GetWindowRect(GetDlgItem(hwnd, Item), &rItem);

	if(pCursor.x > rItem.left && pCursor.x < rItem.left + (rItem.right - rItem.left))
	{
		if(pCursor.y > rItem.top && pCursor.y < rItem.top + (rItem.bottom - rItem.top))
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	else
	{
		return false;
	}
}

void SetVolume(DWORD dLeft, DWORD dRight)
{
	HWAVEOUT hVolume = NULL;
	waveOutSetVolume(hVolume, MAKEWPARAM(dLeft, dRight));
}

DWORD ReadVolume(void)
{
	HWAVEOUT hVolume = NULL;
	DWORD dVolume = 0;

	waveOutGetVolume(hVolume,&dVolume);

	/*
		Volume left  = LOWORD(dVolume);
		Volume right = HIWORD(dVolume);
	*/

	return dVolume;
}

Folgende Fehler werden ausgegeben:

Code:
------ Build started: Project: Ogoid++, Configuration: Debug Win32 ------
Compiling...
d3d9dev.cpp
c:\hx\premium_winamp\d3d\d3d9dev.cpp(39) : error C2470: 'WINAMP' : looks like a function definition, but there is no parameter list; skipping apparent body
c:\hx\premium_winamp\d3d\d3d9dev.cpp(44) : error C2470: 'WINAMP' : looks like a function definition, but there is no parameter list; skipping apparent body
c:\hx\premium_winamp\d3d\d3d9dev.cpp(49) : error C2470: 'WINAMP' : looks like a function definition, but there is no parameter list; skipping apparent body
c:\hx\premium_winamp\d3d\d3d9dev.cpp(54) : error C2470: 'WINAMP' : looks like a function definition, but there is no parameter list; skipping apparent body
c:\hx\premium_winamp\d3d\d3d9dev.cpp(64) : error C2470: 'WINAMP' : looks like a function definition, but there is no parameter list; skipping apparent body
c:\hx\premium_winamp\d3d\d3d9dev.cpp(617) : warning C4005: 'Grenades' : macro redefinition
        c:\hx\premium_winamp\d3d\d3d9dev.cpp(578) : see previous definition of 'Grenades'
c:\hx\premium_winamp\d3d\d3d9dev.cpp(3071) : warning C4244: 'argument' : conversion from 'int' to 'FLOAT', possible loss of data
c:\hx\premium_winamp\d3d\d3d9dev.cpp(3075) : warning C4244: '=' : conversion from 'int' to 'FLOAT', possible loss of data
c:\hx\premium_winamp\d3d\d3d9dev.cpp(3076) : warning C4244: '=' : conversion from 'int' to 'FLOAT', possible loss of data
c:\hx\premium_winamp\d3d\d3d9dev.cpp(3077) : warning C4244: '=' : conversion from 'int' to 'FLOAT', possible loss of data
c:\hx\premium_winamp\d3d\d3d9dev.cpp(3078) : warning C4244: '=' : conversion from 'int' to 'FLOAT', possible loss of data
Build log was saved at "file://c:\HX\Premium_WinAmp\Debug\BuildLog.htm"
Ogoid++ - 5 error(s), 6 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Kann mir jemand helfen die zu beseitigen? Danke im vorraus (!)
 
hiho i kenn mich damit zwar net aus.. als dem WINAMP und so..
aber vielleicht kann i ja en paar Denkanstösse geben..

also ^^ Wieso heissen die 2 Funktionen gleich?

C++:
void WINAMP: layTrack()
{
	SendMessage(whwnd,WM_COMMAND,40045,NULL);
}

void WINAMP: layTrack()
{
	SendMessage(whwnd,WM_COMMAND,40045,NULL);
}


und wieso hast du manchmal 2 Doppelpunkte und dann wieder nur einen ?


C++:
void WINAMP: layTrack()
{
	SendMessage(whwnd,WM_COMMAND,40045,NULL);
}


void WINAMP::NextTrack()
{
	SendMessage(whwnd,WM_COMMAND,40048,NULL);
}


also wenn mi nicht alles täuscht und is grad net total falsch versteh is des
Winamp deine Klasse und des andere eben deine Funktionen die du überschreiben möchtest
demnach müsstest du überall 2 : haben oda?


vielelicht hilfts dir ja


greetz
 
Danke!

War sehr hilfreich. Aber jetzt bin ich überfragt. Ich habe das Programm zusammen mit anderen Dateien in eine Dll konvertiert.

Code:
class WINAMP  //winamp start

{
public:
	bool Initialise();
	void PlayTrack();
	void StopTrack();
	void PauseTrack();
	void NextTrack();
	void PreviousTrack();

private:
HWND whwnd;
}; 

bool WINAMP::Initialise()
{
	if(whwnd=FindWindow("Winamp v1.x",NULL))
	{
		return true;
	}
	else
	{
		return false;
	}
}

void WINAMP::PlayTrack()
{
	SendMessage(whwnd,WM_COMMAND,40045,NULL);
}

void WINAMP::StopTrack()
{
	SendMessage(whwnd,WM_COMMAND,40047,NULL);
}

void WINAMP::PauseTrack()
{
	SendMessage(whwnd,WM_COMMAND,40046,NULL);
}

void WINAMP::NextTrack()
{
	SendMessage(whwnd,WM_COMMAND,40048,NULL);
}

void WINAMP::PreviousTrack()
{
	SendMessage(whwnd,WM_COMMAND,40044,NULL);
} 

BOOL MouseOver(HWND hwnd, int Item)
{
	RECT rDialog;
	RECT rItem;
	POINT pCursor;

	GetCursorPos(&pCursor);
	GetWindowRect(hwnd, &rDialog);
	GetWindowRect(GetDlgItem(hwnd, Item), &rItem);

	if(pCursor.x > rItem.left && pCursor.x < rItem.left + (rItem.right - rItem.left))
	{
		if(pCursor.y > rItem.top && pCursor.y < rItem.top + (rItem.bottom - rItem.top))
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	else
	{
		return false;
	}
}

void SetVolume(DWORD dLeft, DWORD dRight)
{
	HWAVEOUT hVolume = NULL;
	waveOutSetVolume(hVolume, MAKEWPARAM(dLeft, dRight));
}

DWORD ReadVolume(void)
{
	HWAVEOUT hVolume = NULL;
	DWORD dVolume = 0;

	waveOutGetVolume(hVolume,&dVolume);

	/*
		Volume left  = LOWORD(dVolume);
		Volume right = HIWORD(dVolume);
	*/

	return dVolume;
 
Zuletzt bearbeitet:
Hab es leider nicht geschafft und nehme mir jetzt nen anderen Ansatz vor.

Code:
class WINAMP                                    //Winamp definieren

{
public:
	bool Initialise();                //Initialise als Bool festlegen
	void Waitforkey();            //Funktionen definieren die zu WinAmp gehören
	void PlayTrack();            //Funktionen definieren die zu WinAmp gehören
	void StopTrack();           //Funktionen definieren die zu WinAmp gehören
	void PauseTrack();        //Funktionen definieren die zu WinAmp gehören
	void NextTrack();          //Funktionen definieren die zu WinAmp gehören
	void PreviousTrack();    //Funktionen definieren die zu WinAmp gehören

private:
HWND whwnd;                            //whwnd festlegen
}; 

bool WINAMP::Initialise()              //Winamp initialisieren
{
	if(whwnd=FindWindow("Winamp v1.x",NULL))     //wenn winamp offen ist...
	{
		return true;                                       //...winamp = 1
	}
	else
	{
		return false;                                     // wenn nicht ... winamp = 0
	}
}

void WINAMP::Waitforkey()                                               //auf Hotkey warten
{

	if(GetAsyncKeyState(VK_NUMPAD1))                //wenn Num1
	{
		void PlayTrack();                              // Play Track aufrufen
	}

	if(GetAsyncKeyState(VK_NUMPAD2))                //wenn Num2
	{
		void StopTrack();                              // Stop Track aufrufen
	}

	if(GetAsyncKeyState(VK_NUMPAD3))                //wenn Num3
	{
		void PauseTrack();                              // Pause Track aufrufen
	}

	if(GetAsyncKeyState(VK_NUMPAD4))                //wenn Num4
	{
		void NextTrack();                              // Next Track aufrufen
	}

	if(GetAsyncKeyState(VK_NUMPAD5))              //wenn Num5
	{
		void PreviousTrack();                        // Play Previous track aufrufen
	}
}

void WINAMP::PlayTrack()                                              //Playtrack Unterprogram
{
	SendMessage(whwnd,WM_COMMAND,40045,NULL);  //WM command senden
	void Waitforkey();                                       //danach wieder auf Hotkey warten
}

void WINAMP::StopTrack()                                              //Play Track Unterprogram
{
	SendMessage(whwnd,WM_COMMAND,40047,NULL);  //WM command senden
	void Waitforkey();                                      //danach wieder auf hotkey warten
}

void WINAMP::PauseTrack()                                              //Pause Track Unterprogram
{
	SendMessage(whwnd,WM_COMMAND,40046,NULL);  //WM command senden
	void Waitforkey();                                      //danach wieder auf hotkey warten
}

void WINAMP::NextTrack()                                              //Next Track Unterprogram
{
	SendMessage(whwnd,WM_COMMAND,40048,NULL);  //WM command senden
	void Waitforkey();                                      //danach wieder auf hotkey warten
}

void WINAMP::PreviousTrack()                                        //Previous Track Unterprogramm
{
	SendMessage(whwnd,WM_COMMAND,40044,NULL);  //WM command senden
	void Waitforkey();                                      //danach wieder auf hotkey warten
}

Hat jemand ne Idee warum das nicht so geht?
 
Zurück