Problem it char variable
-
ah thx. wusst ich garnicht... trotzdem bleibt meine frage:
wie kann ich den Standard Öfnen/Speicherdialog einbinden?
-
Such nach GetOpenFileName und GetSaveFileName.
-
THX. ich such mal.( du minst doch in der msdn, oder?)
-
So, wieder ein prob( ich hasse es). jett werden die childs nicht angezeigt. wieder keinerleih fehler. hier ist mal nur die WndProc, weil sich nix von edm anderen verändert hat.
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { static HWND hEdit1; //Editfeld für die ausgabe der Vokabeldatei bzw. der bereits abgefragten Vokabeln static HWND hEdit2; //Editfeld zur eingabe der Englischen Vokabel static HWND hEdit3; //Editfeld zur eingabe der deutschen Vokabel //static HWND hEdit4; //editfeld zur Eingabe des Dateinamens static HWND hButton1; //Button zum eintragen der Vokabel in die vokabeldatei //static HWND hButton2; //Button zum speichern der Vokabeldatei static HBRUSH hBrush; //Brush für den schrifthintergrund static RECT rect; //Fenstergröße const char szUeberschrift1[] = "Englische Vokabel:"; // Überschrift für das eingabefelde der englischen vokabel const char szUeberschrift2[] = "Deutsche Vokabel:"; // Das selbe für die deutsche Vokabel const char szUeberschrift3[] = "Inhalt der Vokabeldatei:"; // jo, nomal für das dritte editfeld const char szUeberschrift4[] = "Bereits abgefragte Vokabeln:"; // <- const char szUeberschrift5[] = "Dateiname (ohne Endung):"; //Überschrift des savewindows Program.optionen[1] = FALSE; Program.optionen[2] = FALSE; switch (message) { case WM_SIZE: { rect.left = 0; rect.top = 0; rect.right = LOWORD(lParam); rect.bottom = HIWORD(lParam); return 0; } case WM_COMMAND: { switch (LOWORD (lParam)) { case IDM_NEWVOK: case IDM_OPENVOK: case IDM_SAVEVOK: case IDM_PRACTICEVOK: case IDM_HELP: { MessageBox(hWnd, (LPSTR) "Funktion noch nicht eingebaut.", (LPSTR) Program.szClassName, MB_ICONINFORMATION | MB_OK); return 0; } case IDM_ABOUT : { MessageBox(NULL, "Vokabeltrainer \n Copyright bei Martin 'Arathorns Sohn' Alsfasser \n Dark Grass Software", "Über das Programm", MB_OK); return 0; } case IDM_EXIT : { PostQuitMessage(0); return 0; } } return 0; } case WM_CREATE: { hBrush = CreateSolidBrush(RGB(255, 255, 255)); hEdit1 = CreateWindowEx(WS_EX_CLIENTEDGE, "edit", NULL, WS_CHILD | WS_VISIBLE | ES_READONLY | WS_VSCROLL | ES_AUTOVSCROLL | ES_MULTILINE, 0, 0, 0, 0, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); MoveWindow(hEdit1, 310, 30, 270, 310, TRUE); hEdit2 = CreateWindowEx(WS_EX_CLIENTEDGE, "edit", NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); MoveWindow(hEdit2, 40, 70, 230, 22, TRUE); hEdit3 = CreateWindowEx(WS_EX_CLIENTEDGE, "edit", NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); MoveWindow(hEdit3, 40, 120, 230, 22, TRUE); hButton1 = CreateWindow( "button", "Eintragen", WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, hWnd, NULL, ((LPCREATESTRUCT) lParam) -> hInstance, NULL); MoveWindow(hButton1, 70, 150, 160, 22, TRUE); UpdateWindow(hWnd); return 0; } case WM_DESTROY: { if (hBrush) { DeleteObject(hBrush); } PostQuitMessage (0); break; } } return DefWindowProc(hWnd, message, wParam, lParam); }habs auch schon mit showWindow und allem probiert, wieder nix gebracht.
aja, wenn ich im menü auf die einträge klicke, wird die messageBox, die da erscheinen sollte nicht angezeigt....
-
switch (LOWORD (wParam)) {
-
thx dafür, aber anscheinend hat mein pc was dagegen neue fenster zu öffnen. ich hör zwar sounds, aber die messageboxen werden nicht geöffnet...
-
Einmal aufgeräumt ... zwar nicht getestet, aber egal:P
#define IDC_EDIT_1 1001 #define IDC_EDIT_2 1002 #define IDC_EDIT_3 1003 #define IDC_BTN_INSERT 1004 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_COMMAND: { switch (LOWORD(wParam)) { case IDM_NEWVOK: case IDM_OPENVOK: case IDM_SAVEVOK: case IDM_PRACTICEVOK: case IDM_HELP: { MessageBox(hWnd, TEXT("Funktion noch nicht implementiert"), Program.szClassName, MB_OK | MB_ICONWARNING); } break; case IDM_\1: { MessageBox(NULL, TEXT("Vokabeltrainer\nCopyright bei Martin 'Arathorns Sohn' Alsfasser\nDark Grass Software"), TEXT("Über das Programm"), MB_OK | MB_ICONINFORMATION); } break; case IDM_EXIT: { PostQuitMessage(0); } break; } } break; case WM_CREATE: { if (CreateWindowEx( WS_EX_CLIENTEDGE, TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE | ES_READONLY | WS_VSCROLL | ES_AUTOVSCROLL | ES_MULTILINE, 310, 30, 270, 310, hWnd, (HMENU)IDC_EDIT_1, ((LPCREATESTRUCT)lParam)->hInstance, NULL) == NULL || CreateWindowEx( WS_EX_CLIENTEDGE, TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE, 40, 70, 230, 22, hWnd, (HMENU)IDC_EDIT_2, ((LPCREATESTRUCT)lParam)->hInstance, NULL) == NULL || CreateWindowEx( WS_EX_CLIENTEDGE, TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE, 40, 120, 230, 22, hWnd, (HMENU)IDC_EDIT_3, ((LPCREATESTRUCT)lParam)->hInstance, NULL) == NULL || CreateWindowEx( 0, TEXT("button"), TEXT("Eintragen"), WS_CHILD | WS_VISIBLE, 70, 150, 160, 22, hWnd, (HMENU)IDC_BTN_INSERT, ((LPCREATESTRUCT)lParam)->hInstance, NULL) == NULL) { MessageBox(NULL, TEXT("Es ist ein Fehler beim erstellen des Fensters aufgetreten!"), TEXT("Fehler"), MB_OK | MB_ICONERROR); return -1; } } break; case WM_DESTROY: { PostQuitMessage(0); } break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0L; }... dann hast du die bescheuerten static's mal alle raus -.- Das Handle auf die Fenster bekommst du per GetDlgItem(hWnd, IDC_EDIT_1) bsw. bei hEdit1 ...
-
THX, aber was war an dem anderen Code so schlimm? Und wenn da was schlimm dran ist: warum lernt man nicht in tuts keinen schlechten code zu schreiben. was ich hier und auch woanders höre, haben viele tutorials ziemlich schlechten code...
thx, aber anscheinend gibts beim erstellen der fenster nen fehler. ich höre sofort nen sound, aber selbst das mainwindow öffnet sich nicht...
-
Also wusste jetzt nicht ob du in C oder C++ schreibst ... deswegen mal bei C geblieben, da C++ dazu kompatibel ist.
Einmal waren bei dir statische Variablen drin ... nur notfalls nutzen!
Dann hast du auf LPSTR gecastet. Warum? Ein TEXT("..") tut es auf jedenfall und du bekommst auch keine Probleme, wenn du auf UNICODE umsteigst.Dann hast du da irgendwas bei WM_SIZE gemacht ... frag mich nicht was du damit bezwecken wolltest

Dann hast du nochmal MoveWindow aufgerufen, anstelle die Werte direkt bei CreateWindow(Ex) anzugeben. Dann hast du nen haufen return 0 drin, die man sich durch nen default-value für die switch-case-Konstruktion sparen kann ...
usw. ^^
-
ok, ich prog in C++^^ aber wie gesagt, es gibt das prob, dass jetzt garnix mehr angezeigt wird.
ps: das mit dem moveWindow hab ich aus nem tut, dass es so besser wäre
EDIT: och ne. hab grade gemerckt, dass es das prob nur gibt, wenn ich den xp style verwenden will( hab ich hier ausm forum die anleitung.) nja, wenn ich ihn weglasse funtz es zumindest. thx für die tips.