OPENFILENAME struktur und sortierungsalgorithmus
-
braucht ihr den kompletten code?
-
Hast du fuer das ofn.lpstrFile ein vordefiniertes char/wchar Array verwendet?
z.B. File[1024]=" ";
-
Den dekliniere ich in einer Klasse, so:
char *buffer3[256]; //Buffer für Filename
als Public.
-
Arathorns Sohn schrieb:
Den dekliniere ich in einer Klasse, so:
char *buffer3[256]; //Buffer für Filename
als Public.EDIT: Du musst dem Array-Zeiger bei der Initialisierung einen Wert übergeben, da der Zeiger sonst keine Addresse enthält.
-
das geht leider nicht. wenn ich schreibe char *buffer3[] = NULL; meint er, das das nicht geht.
-
Arathorns Sohn schrieb:
das geht leider nicht. wenn ich schreibe char *buffer3[] = NULL; meint er, das das nicht geht.
Versuchs mal so
char* buffer3[256] ={"",""}; (enstpricht 2 Stringelementen)
-
Da meint Borland:
[C++ Fehler] Main.h(24): E2233 Klassenelement kann hier nicht initialisiert werden
-
Arathorns Sohn schrieb:
Da meint Borland:
[C++ Fehler] Main.h(24): E2233 Klassenelement kann hier nicht initialisiert werden
Hmm, ich habe es mir noch mal überlegt. Eigentlich sollte es schon reichen, wenn du die Initialisierung weglässt...
Kannst du nicht mal den Code posten?
EDIT: Du musst aber *buffer3 irgendwo initialisieren (z.B. *buffer3=" "; )
-
THX, jetzt gibts keinen fehler mehr, das fenster wird aber noch immer net angezeigt... hier mal der code( sagt, wenn ihr die header braucht, aber da steht eh nich viel zum thema drin^^)
#include"Main.h" App Program; LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); App::App() //Konstruktorfunktion { strcpy(szClassName, "Vokabeltrainer"); } App::~App() //Destruktorfunktion { } HWND hWnd; // Window Handle MSG message; //Messages WNDCLASSEX wc; //Window class HMENU menu; // Menu Handle OPENFILENAME ofn = {}; //OpenFileName structure *buffer3[] = {NULL}; int App::Vokabeldatei_erstellen() { return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int iCmdShow) { wc.hInstance = hInstance; wc.lpszClassName = Program.szClassName; wc.lpfnWndProc = WndProc; wc.style = CS_HREDRAW | CS_VREDRAW; wc.cbSize = sizeof(WNDCLASSEX); wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.lpszMenuName = NULL; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground = (HBRUSH) COLOR_BACKGROUND; if(!RegisterClassEx(&wc)) { return 0; } ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hWnd; ofn.hInstance = hInstance; ofn.lpstrFile = *Program.buffer3; hWnd = CreateWindowEx( WS_EX_CLIENTEDGE, Program.szClassName, "Vokabeltrainer", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 600, 400, NULL, NULL, hInstance, NULL); ShowWindow(hWnd, iCmdShow); menu = LoadMenu(hInstance, MAKEINTRESOURCE(ID_MENU)); SetMenu(hWnd, menu); //UpdateWindow(hWnd); while (GetMessage (&message, NULL, 0, 0)) { TranslateMessage(&message); DispatchMessage(&message); } return message.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { 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:"; // <- Program.optionen[0] = FALSE; //Program.optionen[1] = FALSE; DWORD d; 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(wParam)) { case IDM_NEWVOK: { Program.Vokabeldatei_erstellen(); break; } case IDM_OPENVOK: case IDM_SAVEVOK: case IDM_PRACTICEVOK: case IDM_HELP: { MessageBox(hWnd, TEXT("Funktion noch nicht implementiert"), TEXT("Vokabeltrainer"), MB_OK | MB_ICONWARNING); } break; case IDM_\1: { GetSaveFileName(&ofn); //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; } if (lParam == (LPARAM)GetDlgItem(hWnd, IDC_BTN_INSERT)) { if (HIWORD(wParam) == BN_CLICKED) { MessageBox(NULL, TEXT("Funktion noch nicht implementiert"), TEXT("Vokabeltrainer"), MB_ICONWARNING | MB_OK); } } } break; case WM_CTLCOLORSTATIC: { if ((HWND) lParam == GetDlgItem(hWnd, IDC_EDIT_1)) { SetBkColor((HDC)wParam, RGB(255, 255, 255)); return (LRESULT)hBrush; } SetBkMode((HDC)wParam, GetSysColor(COLOR_WINDOW)); SetBkColor((HDC)wParam, GetSysColor(COLOR_WINDOW)); return 0; }break; case WM_CTLCOLOREDIT: { if((HWND)lParam == GetDlgItem(hWnd, IDC_EDIT_2)) { SetBkColor((HDC)wParam, RGB(255, 255, 255)); return (LRESULT)hBrush; } if((HWND)lParam == GetDlgItem(hWnd, IDC_EDIT_3)) { SetBkColor((HDC)wParam, RGB(255, 255, 255)); return(LRESULT)hBrush; } }break; case WM_CREATE: { hBrush = CreateSolidBrush(RGB(255, 255, 255)); 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) { return -1; } UpdateWindow(hWnd); }break; case WM_PAINT: { HDC hDC; PAINTSTRUCT ps; hDC = BeginPaint(hWnd, &ps); { SetBkMode(hDC, TRANSPARENT); TextOut(hDC, 40, 50, szUeberschrift1, sizeof(szUeberschrift1) - 1); TextOut(hDC, 40, 100, szUeberschrift2, sizeof(szUeberschrift2) - 1); if (Program.optionen[0] == TRUE) { TextOut(hDC, 310, 10, szUeberschrift4, sizeof(szUeberschrift4) - 1); } else if(Program.optionen[0] == FALSE) { TextOut(hDC, 310, 10, szUeberschrift3, sizeof(szUeberschrift3) - 1); } } EndPaint(hWnd, &ps); }break; case WM_DESTROY: { if (hBrush) { DeleteObject(hBrush); } PostQuitMessage (0); break; } } return DefWindowProc(hWnd, message, wParam, lParam); }
-
Ich sehe immer noch nirgendwo, dass nMaxFile auf einen gültigen Wert gesetzt wird. Auch lpstrFile ist für mich noch fraglich. Du solltest dir die Platform SDK Dokumentation wirklich nochmal genau anschauen.
Hier mal ein kurzes Beispiel, wie es aussehen kann:
TCHAR buf[MAX_PATH] = TEXT(""); OPENFILENAME ofn = {}; ofn.lStructSize = sizeof(ofn); ofn.hwndOwner = hWnd; ofn.hInstance = hInstance; ofn.lpstrFile = buf; ofn.nMaxFile = sizeof(buf) / sizeof(*buf); GetSaveFileName(&ofn);
-
ach, ok, dann hab ich deinen alten post von letzter seite falsch verstanden... ich dachte, das müsse ich nicht, wenn ich
OPENFILENAME ofn = {}; verwende...es funzt, danke sehr^^ aber ein klitzekleines problem hab ich noch. ich mach das ganze für die schule, und wollte es auf einem schulcomputer zum löaufen bringen( altes teil, win 2000^^) dabei bekomme ich diese fehlermeldung( das bild sieht unten so seltsam aus, weil ich den usb stick zu früh rausgezogen habe^^):
http://s2.directupload.net/images/071109/temp/vh77xdrd.jpgwas kann ich da machen? die bemängelte dll raussuchen und in edn system32 ordner tun oder wie? den projektordner hab ich übrigends komplett aufm stick mitgenommen.
-
Arathorns Sohn schrieb:
was kann ich da machen? die bemängelte dll raussuchen und in edn system32 ordner tun oder wie?
Yep, genau so. Ansonsten schau mal, ob der Borland Kompiler bzw. deine IDE eine Option bietet, statisch zu linken. Dann sollte eigentlich sämtlicher Code der Runtime direkt in die Executable gepackt werden, so dass nur noch Abhängigkeiten bezüglich der System Bibliotheken (kernel32, user32, ...) bestehen. Und die sind bei Windows immer vorhanden.
-
danke, du hat mir echt sehr geholfen^^