Dialog...



  • ups^^ sorry jetz is richtig
    also... woran könnts liegen 😕



  • Ist UltrisInstance gültig? Wie ist helpdialog deklariert? Was machst du dadrin?



  • öhm, am besten poste ich mal nochn stück mehr Code...
    also, das is die main.cpp in der das ganze stattfindet:

    #include <windows.h>
    #include "resources.h"
    #include "ressource.h"
    #include "Sounds.h"
    #include "Display.h"
    #include "forms.h"
    #include <fstream>
    
    HINSTANCE UltrisInstance;
    HWND UltrisWindow;
    HMENU UltrisMenu;
    const int UltrisNettoHoehe = 520;
    const int UltrisNettoBreite = 360;
    int UltrisBruttoHoehe;
    int UltrisBruttoBreite;
    Sounds sounds;
    Display display;
    int testform;
    std::ofstream debug("Debug.txt");
    BOOL CALLBACK helpdialog(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch(message)
        {
            case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                    case IDOK:
                        EndDialog(hwnd, wParam);
                        return TRUE;
                }
                break;
        DefWindowProc(hwnd, message, wParam, lParam);
        return FALSE;
        }
    }
    LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch(message)
        {
            case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                    case IDM_CLOSE:
                        SendMessage(hwnd, WM_DESTROY, wParam, lParam);
                        break;
                    case ID_INFO_HILFE:
                    case IDM_HELP:
                        DialogBox(UltrisInstance, MAKEINTRESOURCE(IDD_HILFE), UltrisWindow, helpdialog);
                        break;
                }
                break;
            case WM_DESTROY:
                PostQuitMessage(0);
                break;
            case WM_KEYDOWN:
                switch(wParam)
                {
                    case 84:
                    //T - Test
                        testform = (testform+1)%35;
                        PostMessage(hwnd, WM_PAINT, 0, 0);
                        break;
                }
                break;
            case WM_PAINT:
                int variante, x, y, z;
                const form *f;
                display.Background();
                for(variante = 0; variante < 4; variante++)
                {
                    z = 1 + 5*variante;
                    f = ultris_form[testform][variante];
                    for(x = 0; x < f->b; x++)
                        for(y = 0; y < f->h; y++)
                        {
                            if(f->data[y][x])
                            {
                                display.Fallingbrick(z+y, 3+x, 0);
                            }
                        }
                }
                display.Present();
                break;
            default:
                DefWindowProc(hwnd, message, wParam, lParam);
                break;
        }
    }
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPreviousInstance, LPSTR pCmdLine, int nCmdShow)
    
    {
    	MSG msg;
    	HACCEL acc;
    	WNDCLASSEX wcx;
    	wcx.cbSize = sizeof(wcx);
    	wcx.lpszClassName = TEXT("Ultris");
    	wcx.lpfnWndProc = WindowProcedure;
    	wcx.style = CS_VREDRAW | CS_HREDRAW;
    	wcx.hInstance = hInstance;
    	wcx.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON));
    	wcx.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SMALLICON));
    	wcx.hCursor = LoadCursor(NULL, IDC_ARROW);
    	wcx.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    	wcx.lpszMenuName = MAKEINTRESOURCE(IDR_MENU);
    	wcx.cbClsExtra = 0;
    	wcx.cbWndExtra = 0;
    
    	if(!RegisterClassEx(&wcx))
    		return 0;
    
    	//acc = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_DIRECTXLERNAPPLIKATION));
    
    	UltrisBruttoHoehe = UltrisNettoHoehe + 2 * GetSystemMetrics(SM_CYSIZEFRAME) + GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CYCAPTION);
    	UltrisBruttoBreite = UltrisNettoBreite + 2 * GetSystemMetrics(SM_CXSIZEFRAME);
    
    	UltrisWindow = CreateWindowEx(0, TEXT("ULTRIS"), TEXT("ULTRIS"), WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, UltrisBruttoBreite, UltrisBruttoHoehe, NULL, NULL, hInstance, NULL);
    	if(!UltrisWindow)
    		return 0;
    	MoveWindow(UltrisWindow, (GetSystemMetrics(SM_CXSCREEN) - UltrisBruttoBreite)/2, (GetSystemMetrics(SM_CYSCREEN) - UltrisBruttoHoehe)/2, UltrisBruttoBreite, UltrisBruttoHoehe, TRUE);
    	ShowWindow(UltrisWindow, nCmdShow);
    
    	UltrisInstance = hInstance;
    	UltrisMenu = GetMenu(UltrisWindow);
    
        sounds.Initialize(UltrisWindow);
        display.Initialize(UltrisWindow);
    
        while(TRUE)
    	{
    		if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
    		{
    			if(GetMessage(&msg, NULL, 0, 0) == 0)
    				return 0;
    			if(TranslateAccelerator(UltrisWindow, acc, &msg) == 0)
    			{
    				TranslateMessage(&msg);
    				DispatchMessage(&msg);
    			}
    		}
    		else
    		{
    		    HRESULT hr;
    		    hr = display.cooperative();
    		    if(hr < 0)
    		    {
    		        switch(hr)
    		        {
    		            case DDERR_EXCLUSIVEMODEALREADYSET:
                            Sleep(10);
                            break;
                        case DDERR_WRONGMODE:
                            display.FreeAll();
                            display.Initialize(UltrisWindow);
                            PostMessage(UltrisWindow, WM_PAINT, 0, 0);
                            break;
    		        }
    		    }
    		    else
    		    {
    
    		    }
    		}
    
    	}
    }
    

    das die ganze Resource(der auskommentierte Teil war der den ich noch einigermaßen selbst geschrieben habe(in der Blocks IDE is ja kein Resourcedesigner), der Teil der aktuell in verwendung ist, hab ich aus visual studios kopiert...

    // Microsoft Visual C++ generated resource script.
    //
    #include "resources.h"
    
    #define APSTUDIO_READONLY_SYMBOLS
    /////////////////////////////////////////////////////////////////////////////
    //
    // Generated from the TEXTINCLUDE 2 resource.
    //
    #include <windows.h>
    #include <afxres.h>
    /////////////////////////////////////////////////////////////////////////////
    #undef APSTUDIO_READONLY_SYMBOLS
    
    /////////////////////////////////////////////////////////////////////////////
    // German (Germany) resources
    
    #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
    #ifdef _WIN32
    LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
    #pragma code_page(1252)
    #endif //_WIN32
    
    /////////////////////////////////////////////////////////////////////////////
    //
    // Menu
    //
    
    IDR_MENU MENU DISCARDABLE
    BEGIN
        POPUP "Ultris"
        BEGIN
            MENUITEM "Neues Spiel",                 ID_ULTRIS_NEUESSPIEL
            MENUITEM "Pause",                       ID_ULTRIS_PAUSE
            MENUITEM "Sound",                       ID_ULTRIS_SOUND
            MENUITEM SEPARATOR
            MENUITEM "Ende",                        IDM_EXIT
        END
        POPUP "Einstellungen"
        BEGIN
            MENUITEM "Konfiguration",               ID_EINSTELLUNGEN_KONFIGURATION
    
        END
        POPUP "Info"
        BEGIN
            MENUITEM "Hilfe",                       ID_INFO_HILFE
            MENUITEM "Highscores",                  ID_INFO_HIGHSCORES
            MENUITEM "Ultris",                      ID_INFO_ULTRIS
        END
    END
    
    /////////////////////////////////////////////////////////////////////////////
    //
    // Icon
    //
    
    // Icon with lowest ID value placed first to ensure application icon
    // remains consistent on all systems.
    IDI_MAIN                ICON                    "Icon.ico"
    
    /////////////////////////////////////////////////////////////////////////////
    //
    // Accelerator
    //
    
    IDR_ACCEL ACCELERATORS
    BEGIN
        "T",            IDM_TEST,               VIRTKEY, CONTROL, NOINVERT
        VK_ESCAPE,      IDM_EXIT,               VIRTKEY, NOINVERT
        VK_F5,          ID_ULTRIS_SOUND,        VIRTKEY, NOINVERT
    END
    
    /////////////////////////////////////////////////////////////////////////////
    //
    // Dialog
    //
    
    IDD_HILFE DIALOGEX 0, 0, 316, 118
    STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
    CAPTION "Dialog"
    FONT 8, "MS Shell Dlg", 400, 0, 0x1
    BEGIN
        DEFPUSHBUTTON   "OK",IDOK,259,97,50,14
        GROUPBOX        "Steuerung des Spiels",IDC_STATIC,17,7,136,89
        LTEXT           "F1: Neues Spiel",IDC_STATIC,19,22,119,8
        LTEXT           "F2: Pause(ein/aus)",IDC_STATIC,19,38,119,8
        LTEXT           "F3: Schneller",IDC_STATIC,19,52,119,8
        LTEXT           "F4: Langsamer",IDC_STATIC,19,67,119,8
        LTEXT           "F5: Sound(ein/aus)",IDC_STATIC,19,81,119,8
        GROUPBOX        "Steuerung des Spiels",IDC_STATIC,173,7,136,89
        LTEXT           "J oder Cursor left:links",IDC_STATIC,175,22,119,8
        LTEXT           "L oder Cursor right: Rechts",IDC_STATIC,175,38,119,8
        LTEXT           "K oder Cursor Down: Linksdrehung",IDC_STATIC,175,52,119,8
        LTEXT           "I oder Cursor Up: Rechtsdrehung",IDC_STATIC,175,67,119,8
        LTEXT           "Space: Stein fallen lassen",IDC_STATIC,175,81,119,8
    END
    
    /////////////////////////////////////////////////////////////////////////////
    //
    // DESIGNINFO
    //
    
    #ifdef APSTUDIO_INVOKED
    GUIDELINES DESIGNINFO
    BEGIN
        IDD_DIALOG1, DIALOG
        BEGIN
            LEFTMARGIN, 7
            RIGHTMARGIN, 309
            TOPMARGIN, 7
            BOTTOMMARGIN, 111
        END
    END
    #endif    // APSTUDIO_INVOKED
    
    #endif    // German (Germany) resources
    /////////////////////////////////////////////////////////////////////////////
    
    /////////////////////////////////////////////////////////////////////////////
    // English (U.S.) resources
    
    #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
    #ifdef _WIN32
    LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
    #pragma code_page(1252)
    #endif //_WIN32
    
    #ifdef APSTUDIO_INVOKED
    /////////////////////////////////////////////////////////////////////////////
    //
    // TEXTINCLUDE
    //
    
    1 TEXTINCLUDE
    BEGIN
        "resource.h\0"
    END
    
    2 TEXTINCLUDE
    BEGIN
        "#include <windows.h>\r\n"
        "#include <afxres.h>\0"
    END
    
    3 TEXTINCLUDE
    BEGIN
        "\r\n"
        "\0"
    END
    
    #endif    // APSTUDIO_INVOKED
    
    #endif    // English (U.S.) resources
    /////////////////////////////////////////////////////////////////////////////
    
    #ifndef APSTUDIO_INVOKED
    /////////////////////////////////////////////////////////////////////////////
    //
    // Generated from the TEXTINCLUDE 3 resource.
    //
    
    /////////////////////////////////////////////////////////////////////////////
    #endif    // not APSTUDIO_INVOKED
    
    /*#include "ressource.h"
    #include <windows.h>
    
    IDI_ICON ICON "Icon.ico"
    IDI_SMALL ICON "Icon.ico"
    
    ID_MENU MENU
    BEGIN
        POPUP "Datei"
        BEGIN
            MENUITEM "Neues Spiel", IDM_NEWGAME
            MENUITEM "Pause", IDM_PAUSE
            MENUITEM SEPARATOR
            MENUITEM "Schließen", IDM_CLOSE
        END
        POPUP "Einstellungen"
        BEGIN
            MENUITEM "Konfiguration", IDM_CONFIG
        END
        POPUP "Hilfe"
        BEGIN
            MENUITEM "Steuerung", IDM_HELP
            MENUITEM "Highscores", IDM_HIGHSCORES
        END
    END
    IDD_CONTROLS DIALOG 0, 0, 316, 118
    STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
    CAPTION "Dialog"
    //FONT 8, "MS Shell Dlg", 400, 0, 0x1
    BEGIN
        DEFPUSHBUTTON   "OK",IDOK,259,97,50,14
        GROUPBOX        "Steuerung des Spiels",IDC_STATIC,17,7,136,89
        LTEXT           "F1: Neues Spiel",IDC_STATIC,19,22,119,8
        LTEXT           "F2: Pause(ein/aus)",IDC_STATIC,19,38,119,8
        LTEXT           "F3: Schneller",IDC_STATIC,19,52,119,8
        LTEXT           "F4: Langsamer",IDC_STATIC,19,67,119,8
        //LTEXT           "F5: Sound(ein/aus)",IDC_STATIC,19,81,119,8
        GROUPBOX        "Steuerung des Spiels",IDC_STATIC,173,7,136,89
        LTEXT           "J oder Cursor left:links",IDC_STATIC,175,22,119,8
        LTEXT           "L oder Cursor right: Rechts",IDC_STATIC,175,38,119,8
        LTEXT           "K oder Cursor Down: Linksdrehung",IDC_STATIC,175,52,119,8
        LTEXT           "I oder Cursor Up: Rechtsdrehung",IDC_STATIC,175,67,119,8
        LTEXT           "Space: Stein fallen lassen",IDC_STATIC,175,81,119,8
    END
    */
    

    Der Rest hat damit nix zu tun oder enthält nur die defines^^



  • BOOL CALLBACK helpdialog(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch(message)
        {
            case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                    case IDOK:
                        EndDialog(hwnd, wParam);
                        return TRUE;
                }
                break;
        DefWindowProc(hwnd, message, wParam, lParam);
        return FALSE;
        }
    }
    

    Ein Dialog sollte ned DefWindowProc aufrufen, mach das mal weg. Windows ruft automatisch DefDlgProc auf, wenn du in deiner DialogProc FALSE zurückgibst. Und mach das return FALSE ans Ende der Funktion, nicht im Switch Statement.



  • ok, hat aber auch nicht geholfen^^

    aber ich hab jetzt herausgefunden, dass der Dialog doch da ist, wenn ich den Taskmanager z.B. öffne dann sehe ich teile der Schriftzüge auf ihm, aber irgendwie scheint das alles entweder abgestürtzt zu sein oder sonst was, es ist zumindest da, aber ich kann nichts mehr amchen und in einem eigenen Fenster sehen wie es sein sollte tue ich es auch nicht



  • Hast du die Resource File So übernommen wie du sie gepostet hast oder hast du die spezifischen merkmale von Visual Studio Entfernt - denn soweit ich gelesen hab verwendest du als IDE - Blocks



  • so übernommen, was sind denn die spezifischen Merkmale von Visual Studio?
    Denn der Externe Ressourcendesigner verursacht nur Errors und im Internet finde ich auch nirgens eine BEschreibung wie man Ressourcefiles erstellt(wenn jemand eine kennt, her damit^^), extra ein Buch deswegen fand ich übertrieben, also hab ich mir einfach mal angeguckt wie das bei Visual Studio so rauskommt, verwende aber Blocks, weil das die bisher einzige ist die so funktioniert wie ich will, aber das ist eine ander geschichte...
    edit:
    so... mit WS_VISIBLE sehe ich es schonmal, allerdings sieht das noch nicht nach nem Fenster aus sondern nach nem weißen Fleck mit Steuerelementen drauf und das Fenster im Hintergrund wird auch weiß
    edit2:
    also so
    http://rpgmakerxpdreams.rp.funpic.de/Bilderupload/daten/1190649171_wiekanndassein.PNG
    das sind 2 verschiedene Zeitpunkte



  • Also nen Kleines Tut im Sachen Resourcen gipts hier Kapitel 3: Resourcen

    die static kannst mit dem res-style WS_EX_TRANSPARENT transparent machen

    MFG Ascharan



  • was soll ich transparent machen?

    danke für den Link



  • Der Hintergrund von den Text wo steht bsp.: F1: Neues Spiel usw. is nur n Vorschlag



  • mhm, aber wenn das Fenster dahinter komplett weiß wird, bringt transparenz auch nix zur Schönheit^^
    außerdem muss ja auch irgendwie ein Fenster anzuzeigen sein?



  • hmm Wird wohl so sein



  • Interessant:P

    ich lad das Projekt mal hoch, vieleich ist ja jemand so nett sich das ma anzugucken?
    www.ysites.de/v5.zip



  • Frage wo hast du den style gesetzt doch nich etwa da

    EXSTYLE WS_EX_OVERLAPPEDWINDOW | WS_EX_TRANSPARENT

    sollte eigentlich so sein

    CAPTION "Dialog"
    FONT 8, "MS Shell Dlg", 400, 0, 0x1
    BEGIN
        DEFPUSHBUTTON   "OK",IDOK,259,97,50,14
        GROUPBOX        "Steuerung des Spiels",IDC_STATIC,17,7,136,89,WS_EX_TRANSPARENT
        LTEXT           "F1: Neues Spiel",IDC_STATIC,19,22,119,8,WS_EX_TRANSPARENT
        LTEXT           "F2: Pause(ein/aus)",IDC_STATIC,19,38,119,8,WS_EX_TRANSPARENT
    


  • tenchou schrieb:

    BOOL CALLBACK helpdialog(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch(message)
        {
            case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                    case IDOK:
                        EndDialog(hwnd, wParam);
                        return TRUE;
                }
                break;
        DefWindowProc(hwnd, message, wParam, lParam);
        return FALSE;
        }
    }
    

    Ein Dialog sollte ned DefWindowProc aufrufen, mach das mal weg. Windows ruft automatisch DefDlgProc auf, wenn du in deiner DialogProc FALSE zurückgibst. Und mach das return FALSE ans Ende der Funktion, nicht im Switch Statement.



  • oh... den hinteren Teil des Satzes hab ich voll übersehne o.o
    sorryy^^ und danke!!!


Anmelden zum Antworten