Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Patrick

Alter Hase

  • »Patrick« ist der Autor dieses Themas

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

1

29.01.2004, 22:19

Kaffeehalter

Hi,

mir war relativ langweilig drum hab ich ein kleines Scherzprogramm gecodet, was es wert wäre zu erweitern (OOP, Mehr Speed, schönerer Code usw..., das übliche halt ;)).

Es geht um KAFFEEE!!!!!! Viel Kaffee! Nur Wohin mit den Tassen wenn der Schreibtisch voll ist? ;) Das Programm wird euch die Lösung geben ;) Wenn sich einer mit Linux auskennt, der wird darin auch gut beitragen können;) Auch Coder von anderen OS sind gerne willkommen ;)

Also: Dann haut mal rein, es gibt FrischFleisc..... äääh Code ;D

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
// Datei:           main.cpp
// //////////////////////////////////////////////////////////////////////////////////
// Autor:           Patrick Ullmann         © Xarent Interactive & Scherfgen-Software
// Erstellt:        29.01.04
// Änderungen:      29.01.04    (Patrick)   Datei erstellt
// //////////////////////////////////////////////////////////////////////////////////
// Beschreibung:    Hauptdatei

// I N C L U D E S //////////////////////////////////////////////////////////////////
    // Standard Includes (ACHTUNG: Ohne *.h!!!)
#include <string>

    // Betriebssystemabhängige includes
#if defined (_WIN32)
    // Windows
#   include <windows.h> 
#   include <mmsystem.h> 
#   pragma comment(lib, "winmm.lib")
#else if defined (_GCC)
    // Für Linux die includes
#endif
 
// F U N K T I O N E N //////////////////////////////////////////////////////////////

// /////////////////////////////////////////////////
// PUBLIC 
//
// Funktion zum Öffnen eines CD-Rom Laufwerks.
//
// [in] drive: String vom Namen des CD Laufwerks.
//
// [ret] true wenn alles okay, false bei fehlern.
// /////////////////////////////////////////////////
bool openCDDrive (const std::string &drive) 
{    
#if defined (_WIN32)
    return (::mciSendString("Set CDAudio Door Open\0", const_cast<char*>(drive.c_str()), static_cast<unsigned int>(drive.size()), NULL) ? true : false); 
#else if defined (_GCC)
    // HIER DEN CODE FÜR LINUX EINBINDEN!
#endif
} 
 
// /////////////////////////////////////////////////
// PUBLIC 
//
// Funktion zum Schließen eines CD-Rom Laufwerks.
//
// [in] drive: String vom Namen des CD Laufwerks.
//
// [ret] true wenn alles okay, false bei fehlern.
// /////////////////////////////////////////////////
bool closeCDDrive (const std::string &drive) 
{  
#if defined (_WIN32)
    return (::mciSendString("Set CDAudio Door Closed\0", const_cast<char*>(drive.c_str()), static_cast<unsigned int>(drive.size()), NULL) ? true : false); 
#else if defined (_GCC)
    // HIER DEN CODE FÜR LINUX EINBINDEN!
#endif
} 

// /////////////////////////////////////////////////
// PUBLIC 
//
// Hauptfunktion
//
// [ret] Eine 0 ;-)
// /////////////////////////////////////////////////
#if defined (_WIN32)
        // Ist es Windows?
    int __stdcall WinMain(HINSTANCE__ *Instance, HINSTANCE__ *prevInstance, char *cmdLine, int cmdShow) 
#else if defined (_GCC)
        // Ist es Linux?
    int main (int argc, char* argv[])
#endif
{ 

    // Ist es Windows?
#if defined (_WIN32)
        // Die Frage stellen
    if (::MessageBox (NULL, "Willst Du den ultimativen Kaffeehalter?", "", MB_DEFBUTTON1 | MB_ICONINFORMATION | MB_YESNO) == IDYES)
    {
            // Bei "JA" öffne laufwerk "D:\".
        openCDDrive ("d:");

            // Lustige MessageBox ausgeben.
        ::MessageBox (NULL, "Besser geht's nimmer! Muhahaha...", "", MB_DEFBUTTON1 | MB_OK);

            // Schließe laufwerk "D:\".
        closeCDDrive ("d:");
    }
    // Ist es Linux?
#else if defined (_GCC)
    // HIER DEN CODE FÜR LINUX EINBINDEN!
#endif

        // Und die 0 nicht vergessen ;-)
    return 0; 
}


Viel Spass damit ;)

p.s.: nicht erschrecken wegen dem vielen PräProzessor anweisungen ;) und wundert euch nicht das das WINAPI vor WinMain fehlt ;)

DarthB

Treue Seele

Beiträge: 265

Beruf: Schüler

  • Private Nachricht senden

2

29.01.2004, 23:23

Hmm ich hab jetzt zwar keine Zeit mehr fürs coden (morgen ist Schule) aber ich kann ja trotzdem schoneinmal ein paar Vorschläge posten.

Erstmal könnte man die Funktionalität in Klassen und Namespaces verpacken.

Vieleicht sollte man von den Witzcharakter abweichen und ein paar ernsthafte Funktionen einbauen z.B.:
- Tracks abspielen.
- Tracks durchschalten (next Track; prev Track)
- Spulen
- Lautstärke
- GUI

Fertig ist der CD-Player der locker WinAMP und co Konkurenz macht! ;)

Natürlich könnte man auch einen Dateimanager schreiben um durch CDs zu navigieren... wobei ich ersteres interessanter finde, aber wir werden ja sehn was ihr, die Community, daraus macht.

Also dann frohes coden!
Ciao DarthB :huhu:

Klaus

Treue Seele

Beiträge: 245

Wohnort: Stuttgart

Beruf: Schüler

  • Private Nachricht senden

3

30.01.2004, 17:30

Ich weiß ja nich, ob du Tracks aus deinem Kaffee abspielen willst *LOL*

Und was für ne Lautstärke hat das kochende Kaffeewasser? :D



Spaß ;)
Mozilla Firefox
The Browser - reloaded

4

16.06.2004, 15:19

Muhahaha! :ola: :-D

Stefan

Alter Hase

Beiträge: 668

Wohnort: Innsbruck

  • Private Nachricht senden

5

17.06.2004, 17:17

hm, bei mir passiert leider nichts, ist aber Laufwerk E, geändert habe ich zwar das d in e, aber geht leider trozdem nicht!


cya,
Stefan

CuTeX0r

Treue Seele

Beiträge: 174

Wohnort: Deutschland

  • Private Nachricht senden

6

17.06.2004, 18:35

hmm ich paste etz einfach mal nen andres snippet zum öffnen des laufwerks, hab es aber aus nem projekt mit mfc unterstützung..

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
void CSomeClass::ThrowOutD() 
{
    CD_OpenCloseDrive(TRUE,'D');
}

void CSomeClass::CD_OpenCloseDrive(BOOL bOpenDrive,TCHAR cDrive)
{
    /*  bOpenDrive is a boolean value containing whether the drive should be opened
        or closed.  cDrive is a TCHAR which contains the specific drive letter to be
        used.  If no letter is passed, then the first CD drive in the MCI device list
        will be used.

        The function opens or closes the appropriate CD drive based on its arguments
    */
    MCI_OPEN_PARMS op;
    MCI_STATUS_PARMS st;
    DWORD flags;

    TCHAR szDriveName[4];
    strcpy(szDriveName, "X:");

    ::ZeroMemory(&op, sizeof(MCI_OPEN_PARMS));
    op.lpstrDeviceType = (LPCSTR) MCI_DEVTYPE_CD_AUDIO;
    
    if (cDrive > 1)
    {
        szDriveName[0] = cDrive;
        op.lpstrElementName = szDriveName;
        //  set the flags for the device type
        flags = MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_ELEMENT | MCI_OPEN_SHAREABLE;
    }
    else 
    {
        //  set the flags for the device type
        flags = MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID | MCI_OPEN_SHAREABLE;
    }

    if (!mciSendCommand(0,MCI_OPEN,flags,(unsigned long)&op)) 
    {
        st.dwItem = MCI_STATUS_READY;

        if(bOpenDrive)  //  decides whether to open or close
        {
            //  open drive
            mciSendCommand(op.wDeviceID,MCI_SET,MCI_SET_DOOR_OPEN,0);
        }
        else
        {
            //  close drive
            mciSendCommand(op.wDeviceID,MCI_SET,MCI_SET_DOOR_CLOSED,0);
        }

        //  release access to the device
        mciSendCommand(op.wDeviceID,MCI_CLOSE,MCI_WAIT,0);
    }
}



/edit: habs grade nochmal probiert, funzt auch ohne mfc, einzig die winmm.lib ist zu linken... mfg

Werbeanzeige