Dialog...
-
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!!!