Zweites Konsolenfenster



  • Ja, sonst hätte ich den windows.h Header ja nicht eingebunden

    Das ist völlig unerheblich. Es gibt Leute, die binden sich die windows.h ein, und wissen trotzdem nicht, dass sie sich das SDK nicht oder falsch eingerichtet haben.

    So wie du deine stdafx.h einbindest, bringt sie sowieso nichts, und du kannst sie gleich rausschmeißen. Wenn dann packe alle Includes in diese stdafx.h, und inkludiere dann nur diese in die main.cpp. So bringt dir das beim Compilen auch einen Geschwindigkeitsvorteil, wozu die stdafx.h eigentlich auch gedacht ist. Und lösch diese beiden Includes aus der stdafx.h raus:

    #include <stdio.h>
    #include <tchar.h>
    

    Kompiliere in einem neuen Projekt diesen Code, und sag mir, ob er fehlerfrei kompiliert:

    /* Creation of a simple Windows API program */
    
    #include <windows.h>
    
    /*  Declare Windows procedure  */
    LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
    
    /*  Make the class name into a global variable  */
    char szClassName[ ] = "WindowsApp";
    
    int WINAPI
    WinMain (HINSTANCE hThisInstance,
             HINSTANCE hPrevInstance,
             LPSTR lpszArgument,
             int nFunsterStil)
    
    {
        HWND hwnd;               /* This is the handle for our window */
        MSG messages;            /* Here messages to the application are saved */
        WNDCLASSEX wincl;        /* Data structure for the windowclass */
    
        /* The Window structure */
        wincl.hInstance = hThisInstance;
        wincl.lpszClassName = szClassName;
        wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
        wincl.style = CS_DBLCLKS;                 /* Catch double-clicks */
        wincl.cbSize = sizeof (WNDCLASSEX);
    
        /* Use default icon and mouse-pointer */
        wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
        wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
        wincl.lpszMenuName = NULL;                 /* No menu */
        wincl.cbClsExtra = 0;                      /* No extra bytes after the window class */
        wincl.cbWndExtra = 0;                      /* structure or the window instance */
        /* Use Windows's default color as the background of the window */
        wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
    
        /* Register the window class, and if it fails quit the program */
        if (!RegisterClassEx (&wincl))
            return 0;
    
        /* The class is registered, let's create the program*/
        hwnd = CreateWindowEx (
               0,                   /* Extended possibilites for variation */
               szClassName,         /* Classname */
               "Windows App",       /* Title Text */
               WS_OVERLAPPEDWINDOW, /* default window */
               CW_USEDEFAULT,       /* Windows decides the position */
               CW_USEDEFAULT,       /* where the window ends up on the screen */
               544,                 /* The programs width */
               375,                 /* and height in pixels */
               HWND_DESKTOP,        /* The window is a child-window to desktop */
               NULL,                /* No menu */
               hThisInstance,       /* Program Instance handler */
               NULL                 /* No Window Creation data */
               );
    
        /* Make the window visible on the screen */
        ShowWindow (hwnd, nFunsterStil);
    
        /* Run the message loop. It will run until GetMessage() returns 0 */
        while (GetMessage (&messages, NULL, 0, 0))
        {
            /* Translate virtual-key messages into character messages */
            TranslateMessage(&messages);
            /* Send message to WindowProcedure */
            DispatchMessage(&messages);
        }
    
        /* The program return-value is 0 - The value that PostQuitMessage() gave */
        return messages.wParam;
    }
    
    /*  This function is called by the Windows function DispatchMessage()  */
    
    LRESULT CALLBACK
    WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch (message)                  /* handle the messages */
        {
            case WM_DESTROY:
                PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
                break;
            default:                      /* for messages that we don't deal with */
                return DefWindowProc (hwnd, message, wParam, lParam);
        }
    
        return 0;
    }
    


  • Ja,das kann ich fehlerfrei kompilieren, also heißt das auch,dass ich das SDK richtig eingebunden hab 😉

    Hmm aber

    1>ic.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__ShowWindow@8" in Funktion ""public: void __thiscall ic::Console::hide(void)" (?hide@Console@ic@@QAEXXZ)".
    1>ic.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__GetWindowRect@8" in Funktion ""public: int __thiscall ic::Console::getWndPosX(void)const " (?getWndPosX@Console@ic@@QBEHXZ)".
    1>ic.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SetWindowPos@28" in Funktion ""public: void __thiscall ic::Console::setWndPos(int,int)" (?setWndPos@Console@ic@@QAEXHH@Z)".
    1>C:\Users\Daniel\Desktop\Projekte\X\Debug\X.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.

    kann ich mir wirklich nicht erklären 😕

    Mit freundlichen Grüßen,
    Daniel



  • Dann kann ich mir das auch nicht erklären. Evtl. hilft SideWinder weiter.



  • mikey schrieb:

    Dann kann ich mir das auch nicht erklären. Evtl. hilft SideWinder weiter.

    Ok, aber trodzdem vielen dank, mikey 😉

    Hier ist noch was, einer hatte das gleiche Problem:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-131915-and-postdays-is-0-and-postorder-is-asc-and-start-is-110.html

    Aber einfach so ein leeres Projekt zu starten(Win32-Konsolenanwendung?) funzt nicht ganz, da der Compiler wieder herummeckert, dass etwas fehlt und so . ^^



  • Dann kann ich dir nur eins sagen, wie SideWinder 2 Seiten zuvor:

    Das SDK ist sicher eingebunden? Das kann in dem Fall nicht sein. Schau mal ob da noch irgendwas in der ReadMe der SDK-Install für die ExpressEdition steht was du übersehen hast...

    Eine andere Möglichkeit fällt mir jetzt dazu wirklich nicht ein. Alles deutet darauf hin, dass das SDK nicht vollständig eingebunden wurde.



  • mikey schrieb:

    Dann kann ich dir nur eins sagen, wie SideWinder 2 Seiten zuvor:

    Das SDK ist sicher eingebunden? Das kann in dem Fall nicht sein. Schau mal ob da noch irgendwas in der ReadMe der SDK-Install für die ExpressEdition steht was du übersehen hast...

    Eine andere Möglichkeit fällt mir jetzt dazu wirklich nicht ein. Alles deutet darauf hin, dass das SDK nicht vollständig eingebunden wurde.

    Da fällt mir gerade ein,dass bei mir,statt 1033, 1031 steht:

    Step 5: Generate and build a Win32 application to test your paths.
    In Visual C++ Express, the Win32 Windows Application type is disabled in the Win32 Application Wizard. To enable that type, you need to edit the file AppSettings.htm file located in the folder “%ProgramFiles%\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\Generic\Application\html*1033*\".

    Woher bekomme ich den Ordner 1031? bei mir scheint es ihn gar nicht zu geben..



  • Afaik ist das ein Fehler von Microsoft. Der Ordner hat eine andere Zahl, in der sich die Datei befindet. Sorry, hatte ich (und alle anderen hier) ganz vergessen. Sollte man in den FAQs deutlich darauf hinweisen!



  • ey wo find isch de schritt nr. 3?
    so schauts us:

    Add the paths to the appropriate subsection:

    Executable files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin 
    Include files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include 
    Library files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib
    

    da gibets kein extramenü in visual c++ ee 🙄
    wo find i des wo man des istelle cha?



  • xyz2 schrieb:

    ey wo find isch de schritt nr. 3?
    so schauts us:

    Add the paths to the appropriate subsection:

    Executable files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin 
    Include files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include 
    Library files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib
    

    da gibets kein extramenü in visual c++ ee 🙄
    wo find i des wo man des istelle cha?

    ey watt willste? hu?
    --------------------
    ye twat hstae rovß
    --------------------
    Kannst du auch normal sagen was du suchst?



  • oh sry...

    Executable files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin
    Include files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include
    Library files: C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib

    wo find ich des zum einstellen?



  • Hab jetzt nicht den ganzen Thread verfolgt, wenn noch Probleme bestehen, dann bitte melden.

    Diese Pfade kannst du unter Extras -> Optionen -> Projekte und Projektmappen -> VC++-Verzeichnisse

    Dann wählst du aus der ComboBox rechts oben einmal "Ausführbare Dateien", einmal "Includedateien" und einmal "Bibliotheksdateien" aus und addest jeweils den von dir genannten Pfad (und schaust das er ganz oben in der Liste steht).

    MfG SideWinder



  • Hallo Side,

    Hab jetzt nicht den ganzen Thread verfolgt, wenn noch Probleme bestehen, dann bitte melden.

    Guck dir mal die letzten zwei Seiten des Threads an, bitte 🙂



  • Hab die Improved Console erstmals weggelassen 🙂
    Aber das Problem besteht immer noch ^^

    Daniel



  • Moin,

    Muss dein Proramm denn unbending eine Konsolenanwendung sein?
    Wenn du ein Spiel programmierst, wäre es einfacher die MFC zu benutzen!
    (Oder die API - je nach geschmack,..)

    Da kannst du die Fensterkontrolle selbst übernehmen.
    Außerdem kannst du deinem Gamer auch Butten zum Anklicken bieten (kommt immer gut).

    MfG David



  • Hallo 🙂

    Cfunc() schrieb:

    Muss dein Proramm denn unbending eine Konsolenanwendung sein?

    Nein, ich konnte es auch mit OpenGL machen, wäre sogar für mich leichter.
    Aber ich will mal das bestmöglichste aus der Konsole rausholen ^^

    Cfunc() schrieb:

    Wenn du ein Spiel programmierst, wäre es einfacher die MFC zu benutzen!
    (Oder die API - je nach geschmack,..)

    Wenn ich nur die Erfahrung und den Mut dazu hätte .. :p

    Cfunc() schrieb:

    Da kannst du die Fensterkontrolle selbst übernehmen.
    Außerdem kannst du deinem Gamer auch Butten zum Anklicken bieten (kommt immer gut).

    Das ist mir schon klar, aber da wäre schon, wie bereits oben erwähnt, OpenGL besser, da man die Tasten belegen kann und so mehr Spaß am Spiel hat, anstatt die ganze Zeit auf irgendwelche Buttons zu klicken.

    Mit freundlichen Grüßen,
    XP^


Anmelden zum Antworten