einfache GUI Anwendung



  • #include "resource.h"
    #include "WinApi.h"
    
    int __stdcall WndProc(::HWND__*, unsigned int, unsigned int, long);
    
    int __stdcall WinMain(::HINSTANCE__* hInstance, ::HINSTANCE__* hPrevInstance, PSTR szCmdLine, int iCmdShow)
    {
        return DialogBox(hInstance, MAKEINTRESOURCE(IDD_MYDIALOG), 0, WndProc);
    }
    
    int __stdcall WndProc(::HWND__* hWnd, unsigned int nMsg, unsigned int wParam, long lParam)
    {
        switch(nMsg)
        {
        case WM_INITDIALOG:
            return 1;
        case WM_CLOSE:
            ::EndDialog(hWnd, 0);
            return 1;
        case WM_COMMAND:
        {
            switch(LOWORD(wParam))
            {
            case IDC_BUTTON1:
               ::EndDialog(hWnd, 0);
               return 1;
            default:
                break;
            }
            return 0;
        }
        return 0;
    }
    


  • ::HINSTANCE__*
    

    lachhaft.

    @burnout: Bleib bloß bei deinem Code, den du hast, der ist 100 mal besser als der den (D)Evil geposted hat. Dein Code ist auch soweit in Ordnung, schau mal ob CodeFinders Ratschläge dein Problem lösen.



  • SpectorX
    Hmm. Klar das __* ist unnütz. Wobei es eigentlich ein nur Verdeutlich. es ist ein Pointer.
    Das :: hat einen Grund... jo, jetzt nur noch wissen welcher, nee??! Ui das weiß das kleine Dummerchen SpectorX natürlich nicht... mist.

    burnout
    Mach was de willst... wobei 1. das hwnd; unnütz war und du bei WM_COMMAND nen default vergessen hast.



  • Diese Diskussion wurde erst kürzlich ausgiebig geführt, also müssen wir es hier nicht wiederholen, aber deine Variante bietet NUR Nachteile und KEINEN Vorteil. Lirum Larum, Microsoft hat sich die Bezeichner nicht zum Spaß ausgedacht und theoretisch könnte aus WINAPI oder CALLBACK irgendwann mal was anderes als __stdcall werden und dann bist du GE*RSCHT mit deinem Code, stell dir vor dein Projekt wäre riesengroß...viel Spass dann tagelang Typen auszutauschen.



  • Tach nochmal,
    Also ich lass niemanden dumm sterben 😃
    ...

    Das :: hat einen Grund... jo, jetzt nur noch wissen welcher, nee??! Ui das weiß das kleine Dummerchen SpectorX natürlich nicht... mist.

    Das :: sorgt dafür, das die Definition des ensprechenden Objekts(Typ, Funktion, Klasse, etc.) in den globalen Namensbereich importiert wird...

    Also noch mal zu dem CodePosting von (D)Evil:
    Ich find schon der Code sieht verdammt geil aus, aber hilfreich ist er hier ganz bestimmt nicht...=> viel zu unübersichtlich, wobei das warscheinlich jedem selbst überlassen ist 😉

    MfG CodeFinder



  • CodeFinder
    Jo... hmm schon. Hab aber auch die Fehler die drin waren raus gemacht 😉 Aber hast schon recht 😞

    SpectorX
    Hab auch keinen Bock auf ne Diskussion. Aber imo werd ich meine Projekte in 10 Jahren eh nicht neu compilieren -.-



  • ich hätte nicht gedacht das meine bescheidende frage so ein wirbel auslöst 😃
    aber danke für die antworten!



  • hallo ,hab jetzt unter eigenschaften->verhalten->sichtbar auf true gesetzt ,aber immer noch kein fenster nach dem kompilieren zu sehen und das mit dem commoncontrols initialisieren hab ich noch nie gehört !musste vorher auch commoncontrols initialisieren ,bis auf einmal gings nicht mehr!



  • zeig mal was in deiner .rc datei drinne is



  • //{{NO_DEPENDENCIES}}
    // Microsoft Visual C++ generated include file.
    // Used by WinApi.rc
    //
    #define IDI_ICON1                       101
    #define IDD_PROPPAGE_LARGE              107
    #define IDC_LIST1                       108
    #define IDC_BUTTON1                     109 
    
    // Next default values for new objects
    // 
    #ifdef APSTUDIO_INVOKED
    #ifndef APSTUDIO_READONLY_SYMBOLS
    #define _APS_NEXT_RESOURCE_VALUE        103
    #define _APS_NEXT_COMMAND_VALUE         40001
    #define _APS_NEXT_CONTROL_VALUE         1001
    #define _APS_NEXT_SYMED_VALUE           101
    #endif
    #endif
    

    und in der WinApi.rc ist halt nur das dialog IDD_PROPPAGE_LARGE und IDI_ICON1 ,hier ist alles in ordnung,die exe zeigt mir ja auch das icon an was ich gemalt habe.



  • Du hast ja auch einen Property Sheet Dialog erstellt. Der hat völlig verkorkste Flags, z.B. WS_CHILD obwohl er bei dir gar kein Child ist und außerdem ist er standardmäßig auf Disabled gestellt. Stell das in den Eigenschaften im Resoruce Editor mal alles richtig ein, also Popup und nicht Child oder ändere es in deiner .RC Datei

    /////////////////////////////////////////////////////////////////////////////
    //
    // Dialog
    //
    
    IDD_PROPPAGE_LARGE DIALOG DISCARDABLE  0, 0, 235, 156
    STYLE WS_POPUP | WS_CAPTION
    CAPTION "Property Page"
    FONT 8, "MS Sans Serif"
    BEGIN
        LTEXT           "TODO: layout property page",IDC_STATIC,73,74,90,8
    END
    


  • sorry für die dumme frage,aber wie kann ich auf meine rc* also WinApi.rc* datei zugreifen bzw. im editor öffnen unter dem projekt-explorer sehe ich die datei nicht und auch nicht unter resource ansicht!?



  • die kannste auch mit nem normalen editor wie notepad.exe editieren ist auch nur ne normale text datei.



  • ja danke hat soweit funktioniert,sehe aber nur mein button und listbox,das dialog an sich ist durchsichtig,bei verhalten hab ich es aber auf true gestellt?!wo kann ich die ganze flags nachlesen was sie bewirken ?




Anmelden zum Antworten