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

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

1

14.07.2006, 14:11

Datei-Leiste

Hi
Wie kann ich ein Fenster mit einer Datei-Leiste(Datei, Bearbeiten usw.) Programmieren?

2

14.07.2006, 15:53

wenn ich dich richtig verstehe meinst du die Menüleiste.
Also das einfachste was ich weis ist in VC++ ne Resourcedatei erstellen und da ein Menü erstellen.
Und bei der WNDCLASS gibst dann diese Resource an und dann hast schon mal dein Menü beim Fenster.
und dann eben die ganzen befehle bei WM_COMMAND abfangen.
Ne gute Erklärung dazu gibts im Petzold da gibts echt fast alles zur Windowsprogrammierung. Ansonsten schau mal in der MSDN.

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

3

14.07.2006, 19:55

Man kann nur mit VC++2005 Express keine Resource-Dateien erstellen

Anonymous

unregistriert

4

14.07.2006, 19:57

such in der MSDN nach CreateMenu und AppendMenu. Resourcen sollte man nicht für so etwas Popeliges wie Menüs verschwenden.

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

5

14.07.2006, 20:17

Irgendwie check ich das nicht ganz. Kann mir da mal jemand einen bspCode liefern?

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

6

14.07.2006, 20:19

C-/C++-Quelltext

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
// Erstellen wir die Menüs

            hMenu_      = CreateMenu();
            hMenuPopup_ = CreateMenu();
    HMENU   hMenuTemp   = CreateMenu();
    HMENU   hMenuTemp2  = CreateMenu();
    HMENU   hMenuTemp3  = CreateMenu();

    // -- Obermenü --

    // Das Dateinemü

    AppendMenuW(hMenuTemp, MF_STRING, fix::IDM_NEW, L"&Neu\tStrg + N");
    AppendMenuW(hMenuTemp, MF_STRING, fix::IDM_OPEN, L"&Öffnen ...\tStrg + 0");
    AppendMenuW(hMenuTemp, MF_STRING, fix::IDM_SAVE, L"&Speichern\tStrg + S");
    AppendMenuW(hMenuTemp, MF_STRING, fix::IDM_SAVEAS, L"&Speichern unter ...");
    AppendMenuW(hMenuTemp, MF_SEPARATOR, 0, NULL);
    AppendMenuW(hMenuTemp, MF_STRING, fix::IDM_QUIT, L"&Beenden\tStrg + Q");
    AppendMenuW(hMenu_, MF_POPUP, (UINT_PTR)hMenuTemp, L"&Datei");
        hMenuTemp = CreateMenu();
        
    // -- Obermenü --

    // Ansicht

    AppendMenuW(hMenuTemp, MF_POPUP, (UINT_PTR)hMenuTemp2, L"&Ansicht");
    AppendMenuW(hMenuTemp, MF_POPUP,(UINT_PTR)hMenuTemp3, L"&Oberfläche"); 
    AppendMenuW(hMenu_, MF_POPUP, (UINT_PTR)hMenuTemp, L"&Ansicht");
        
    // -- 1. Unterebene --

    // Ansicht

    AppendMenuW(hMenuTemp2, MF_STRING | MF_UNCHECKED, fix::IDM_AREAMANAGER, L"&Gebiete");

    // -- 1. Unterebene --

    // Oberfläche

    AppendMenuW(hMenuTemp3, MF_STRING | MF_UNCHECKED, fix::IDM_DRAWCOORDS, L"&Koordinaten");
    
        hMenuTemp = CreateMenu();

    //  Erstellen wir das Hauptfenster,

    //  dieses stellt die beiden Unterfernster dar

    hWndMain_ = CreateWindowEx(0,               // Erweiterter Stil

                szAppName,                      // Klassenname

                szAppName,                      // Fenstername

                WS_OVERLAPPEDWINDOW|
                WS_CLIPCHILDREN,                // Fensterstil

                Windowvalues_.rWindowPos.left,  // initial x position

                Windowvalues_.rWindowPos.top,   // initial y position

                
                Windowvalues_.rWindowPos.right- // initial x size 

                Windowvalues_.rWindowPos.left,  // initial x size

                
                Windowvalues_.rWindowPos.bottom-// initial y size

                Windowvalues_.rWindowPos.top,   // initial y size


                NULL,                           // parent window handle

                hMenu_,                         // use window class menu

                hInst,                          // program instance handle

                NULL);                          // creation parameters

Grauenvoll ... Aber sollte dir klarmachen wies geht. Ich machs lieber mit Ressourcen xD

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

7

14.07.2006, 20:25

Muss ich irgenwelche besonderen header einbinden?

Bei mir sind 31 Fehler weil er die fix-Klasse nicht kennt

Anonymous

unregistriert

8

14.07.2006, 20:40

d'oh

fix ist keine Klasse sondern ein Namespace. und nein: keine Erfindung von Microsoft.

Das Gurke
Hmn ;) Not Bad ;)

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

9

14.07.2006, 20:49

Und was muss ich einbinden damit der kompiler den Namespace erkennt?

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

10

14.07.2006, 21:00

-> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceshellui5/html/wce50lrfappendmenu.asp

Das ist einfach die ID des Elementes.

Definition dürfte in etwa so aussehen:

C-/C++-Quelltext

1
2
3
4
5
namespace fix
{
    const unsigned short IDM_NEW = 0;
    ...
}

Werbeanzeige