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

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

11

14.07.2006, 21:45

Koschka hats getroffen, ich hab mir bestimmt schon 1000x vorgenommen den verdammten Namespace fix GROSS zu schreiben *gg* Also mach ich das nun mal ^^

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

12

14.07.2006, 21:51

Kann sein dass ich ein bischen dumm bin aber ich seh kein Fenster

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
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
// Level-Editor für Codename::Undercover

// (c) 2006 by FSoftworks

// Alle Rechte vorbehalten

//

#include <TriBase.h>



namespace fix 
{ 
    const unsigned short IDM_NEW = 0; 
    const unsigned short IDM_OPEN = 0; 
    const unsigned short IDM_SAVE = 0; 
    const unsigned short IDM_SAVEAS = 0;
    const unsigned short IDM_QUIT = 0;
    const unsigned short IDM_AREAMANAGER = 0; 
    const unsigned short IDM_DRAWCOORDS = 0; 
} 

tbResult Move(float fTime)
{
    return TB_OK;
}
tbResult Render(float fTime)
{
    return TB_OK;
}


HMENU MakeMyMenu()
{
    HMENU hResult = CreateMenu();

    AppendMenu(hResult, MF_STRING, 0xF0, "Open");
    AppendMenu(hResult, MF_STRING, 0xF1, "Save");
    AppendMenu(hResult, MF_STRING, 0, "FUCK THE SWEET LITTLE ASS OF MINE!");

    return hResult;
}

// Windows Hauptschleife

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   char* pcCmdLine,
                   int iShowCmd)
{
    // Tribase initialisieren

    tbInit();

    // Nachrichtenschleife

    if(tbDoMessageLoop(Move,Render))TB_ERROR("FEHLER IN DER NACHRICHTENSCHLEIFE!!!",TB_ERROR);

    // Erstellen wir die Menüs 

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

    // -- 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,"Blabla", "Level-Editor",NULL, 0, 0, 1280,780,NULL,hMenu_,hInstance,NULL);

    // Beenden

    tbExit();


    return 0;
}


Sorry, dass ich mich wahrscheinlich total blöd anstelle und den Fehler jeder sehen kann.

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

13

14.07.2006, 21:56

C-/C++-Quelltext

1
ShowWindow(hWndMain_, SW_SHOW);
Hihi ^^
Und ich hab lange nix mehr mit der TriBase gemacht, aber sollte die Nachrichtenschleife nicht NACH der Fensterinitialisierung kommen?

Edit:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
namespace fix
{
    const unsigned short IDM_NEW = 0;
    const unsigned short IDM_OPEN = 0;
    const unsigned short IDM_SAVE = 0;
    const unsigned short IDM_SAVEAS = 0;
    const unsigned short IDM_QUIT = 0;
    const unsigned short IDM_AREAMANAGER = 0;
    const unsigned short IDM_DRAWCOORDS = 0;
} 
AUTSCH!

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

14

14.07.2006, 22:12

Er zeigt einfach kein Fenster an. Er führt etwas aus, aber da ist kein Fenster.

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

15

14.07.2006, 22:14

Das Programm bleibt doch auch in deinem merkwürdigen MessageLoop hängen oder? Setz mal n Breakpoint irgendwo danach und debugge dann ;)

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

16

14.07.2006, 22:26

Wenn ich es debuggen will kommt ne Fehlermeldung:

Es könnenn keine Debuginformationen gefunden werden
fortfahren?

und

Es sind keine Symbole für den Aufruflistenramen geladen.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

17

15.07.2006, 00:01

*gesplittet, Flame entfernt.

1.) ich glaub nicht das es eine Fensterklasse Blabla gibt
2.) In die Fensterklasse (WndClass) muss das HMENU rein
3.) Registrieren von WndClass fehlt
4.) CreateWindow kommt dann

u.s.w.

ich würd dich hier bitte erstmal nachzusehen in nem Tutorial oder so wie man ein Fenster macht, und lass vroerst die Tribase weg, die hilft dir hier nicht.

Kopier dies nicht einfach ab, probier es zu verstehen, bzw. frag aber nutz auch das Forum/Internet

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
#include <windows.h> // Unicode muss aktiviert sein


int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow)
{
    ::WNDCLASS                wndcls;
    ::HWND                    hWnd;
    ::MSG                    msg;


    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;  // <= Menu rein (wenn Resource)

    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(), NULL, hInstance, NULL); // <= Menu rein (wenn nicht Resource)


    if(!hWnd)
        EXCEPTION(core::MID_SYSTEM, L"Invalid window");

    ::ShowWindow(hWnd, nCmdShow);
    ::UpdateWindow(hWnd);

    while(::GetMessageW(&msg, NULL, NULL, NULL))
    {
        ::TranslateMessage(&msg);
        ::DispatchMessageW(&msg);
    }
    return 0;
}


LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
    case WM_CLOSE:
        PostQuitMessage(0);
        return 0;
    };
    return ::DefWindowProcW(hwnd, uMsg, wParam, lParam);
}

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

18

16.07.2006, 12:23

Zitat von »"koschka"«

*// Unicode muss aktiviert sein


Muss ich den irgendwie besonders aktivieren?

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

19

16.07.2006, 12:24

wenn du VC Express hast nicht, sonst schreib ein #define UNICODE davor (vor #include <windows.h>)

Fred

Supermoderator

  • »Fred« ist der Autor dieses Themas

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

20

16.07.2006, 12:49

C-/C++-Quelltext

1
wndcls.lpszClassName = L"app";


Quellcode

1
error C2440: '=': 'const wchar_t [4]' kann nicht in 'LPCSTR' konvertiert werden


Das verstehe ich nicht wie ich das beheben solll

Werbeanzeige