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

31

16.07.2006, 17:38

Jetzt lässt er mich mit AppendWindow nichts mehr machen. CIh schreib einfach:

C-/C++-Quelltext

1
2
3
4
5
6
HMENU   hMenu_        = CreateMenu(); 
    HMENU   hMenuTemp    = CreateMenu(); 
 
// -- Obermenü -- 

    // Das Dateinemü 

     AppendMenu(hMenu_, MF_POPUP, (UINT_PTR)hMenuTemp, L"&Datei");

Und es kommt:

Quellcode

1
2
3
4
5
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
.\Editor.cpp(26) : error C2365: "AppendMenuW": Erneute Definition; vorherige Definition war "Funktion".
        C:\Programierung\Microsoft Platform SDK\Include\winuser.h(5809): Siehe Deklaration von 'AppendMenuW'
.\Editor.cpp(26) : error C2078: Zu viele Initialisierungen
.\Editor.cpp(26) : error C2440: 'Initialisierung': 'const wchar_t [7]' kann nicht in 'int' konvertiert werden

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

32

16.07.2006, 18:00

wo dast'n den Code hingepfropft?

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

33

16.07.2006, 18:02

Ich hab des direkt nach das include-zeug hingepfropft

Ich hab das jetz hingekrigt. Aber du hast gesagt, dass in die Zeile

C-/C++-Quelltext

1
wndcls.lpszMenuName = hMenu_;  // <= Menu rein

Ein HMENU-Wert rein muss. Das habe ich gemacht und er meint:

Quellcode

1
: error C2440: '=': 'HMENU' kann nicht in 'LPCWSTR' konvertiert werden

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

34

16.07.2006, 18:21

mensch Freddie ;) ich hab mist erzählt.. es muss natürlich in das CreateWindow rein, darfst mit ned alles glauben ^^.

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
    HMENU    hMenu_        = CreateMenu();
    HMENU        hMenuPopup_    = CreateMenu();
    HMENU    hMenuTemp    = CreateMenu();
    HMENU   hMenuTemp2  = CreateMenu();
    HMENU   hMenuTemp3  = CreateMenu();

    // -- Obermenü --

    // Das Dateinemü

    AppendMenuW(hMenuTemp, MF_STRING, 0, L"&Neu\tStrg + N");
    AppendMenuW(hMenuTemp, MF_STRING, 0, L"&Öffnen ...\tStrg + 0");
    AppendMenuW(hMenuTemp, MF_STRING, 0, L"&Speichern\tStrg + S");
    AppendMenuW(hMenuTemp, MF_STRING, 0, L"&Speichern unter ...");
    AppendMenuW(hMenuTemp, MF_SEPARATOR, 0, NULL);
    AppendMenuW(hMenuTemp, MF_STRING, 0, 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, 0, L"&Gebiete");

    // -- 1. Unterebene --

    // Oberfläche

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

    wndcls.cbClsExtra = 0;
    wndcls.cbWndExtra = 0;
    wndcls.hbrBackground = static_cast<HBRUSH>(::GetStockObject((int)WHITE_BRUSH));
    wndcls.hCursor = NULL;
    wndcls.hIcon = NULL;
    wndcls.hInstance = hInstance;
    wndcls.lpfnWndProc = WindowProc;
    wndcls.lpszClassName = L"app";
    wndcls.lpszMenuName = NULL;
    wndcls.style = CS_HREDRAW | CS_VREDRAW;

    if(!::RegisterClassW(&wndcls))
        EXCEPTION(core::MID_SYSTEM, L"Cannot register window class");

    hWnd = ::CreateWindowW( L"app", L"name", WS_OVERLAPPEDWINDOW,
                            0, 0, 320, 200, ::GetDesktopWindow(), hMenu_, hInstance, NULL);

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

35

16.07.2006, 18:22

Ich hab auch das irgendwie hingekriegt. So jetzt hab ich erstmal kein Problem mehr.

PS: koschka viel Glück bei deinen Prüfungen

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

36

16.07.2006, 18:25

mist zu spät :D

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

37

16.07.2006, 18:57

Ja da hab ich einfach rumprobiert und hab einfachmal das hMenu_ in das CreateWindow eingesetzt.

Trotzdem Danke

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

38

17.07.2006, 14:21

Und wie lass ich nun Überprüfen ob eben z.B. Datei->Neu angeklickt wurde?

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

39

17.07.2006, 19:18

Brauch ich da nen switch-Befehl?
Nur was soll ich switchen? :)

Ach ja wie kann ich statt dem weißem Hintergrund ein Bild einfügen. Wenn mögl. mit Color Keying

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

40

17.07.2006, 19:47

Fred, Bilder auf Fenster blitten wurde schon x mal hier im Forum behandelt, auch bei google etc. such einfach.

1Minute in der MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wceui40/html/cerefwm_command.asp

somit ist alles klar...

C-/C++-Quelltext

1
2
3
4
....
  WM_COMMAND:
    if(LOWORD(wParam) == ID_NEWFILE)
     // Neues File irgendwie aktiviert musst evtl. noch verfeinern


ID_NEWFILE ist Konstande, oben hab ich immer 0 angegeben, dort musst du dann eine Konstande reinhaun

Werbeanzeige