Zum Inhalt springen

Board00

Mitglieder
  • Gesamte Inhalte

    49
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Board00

  1. Hallo ich bins wieder und habe wieder eine tolle Fehlermeldung. Wenn ich die Funktion CreateWindow aufrufe bekomme ich eine AV (siehe Anhang). HWND Modulfenster = (info).handles.Modulfenster; HWND handle = NULL; HINSTANCE Instance = (info).hInstance; handle = CreateWindow (szAuswahlModule, "Modul", WS_CHILD | WS_VISIBLE , // Flags 0, 0, 0 , 0, Modulfenster, //ParentWindow (HMENU)NULL, // Menu? Instance, // Instanz des Programms (LPVOID)NULL ) ; info ist ein Paramter von der Struktur ProgrammInformation den ich übergebe. Die Werte werden beim Start alle schön eingetragen und wenn ich einen Haltepunkt vor CreateWindow setze steht überall was drin. Warum knallt es hier ab und zu. Das passiert nicht immer, aber ab und zu Mal. Wenn ich das Programm ohne Debugger starte (STRG + F5) gehts, nur beim Debuggen (F5) knallt es öfters mal. Habt ihr eine Idee (vllt du Klotzkopp? :hells: ) ?
  2. So lFreunde ich habe es gelöst war triviales Problem und habe ihn net gefunden, das Problem war das ID_FILE_SAVE_AS falsch geschrieben war (in der resource.rc) hies ursprüngleich ID_FILE_AS IDR_MENU_EN MENU DISCARDABLE BEGIN POPUP "&File" BEGIN MENUITEM "&New FUP Project", ID_FILE_NEW MENUITEM "New &MAKRO Project", ID_FILE_MAKRO MENUITEM "&Open", ID_FILE_OPEN MENUITEM "&Save", ID_FILE_SAVE MENUITEM "Save &as", ID_FILE_SAVE_AS MENUITEM SEPARATOR MENUITEM "E&xit", ID_FILE_EXIT END so funktioniert es jetzt Ich danke euch für eure Hielfe
  3. der Aufruf lautet so: DateiMenue.lpstrFile = Programminfo.Datei.FileName; if(GetSaveFileName(&DateiMenue)) { FehlerVar = DateiSpeichern(&Programminfo,DateiMenue,&BlockSpeicherHandle,&VerdrahtungsListenHandle); if (FehlerVar != ok) { FehlerMeldung(FehlerVar,&Programminfo,0); Programminfo.Datei.gespeichert = FALSE; return 0; } else Programminfo.Datei.gespeichert = TRUE; } else { MeldeFehler(CommDlgExtendedError()); } Die Initialsisierung habe ich nach einem Tipp aus dem C-PLus-Plus Forum verändert, nun bekomme ich wieder den Fehlercode 9. TCHAR Datei[MAX_PATH] = { 0 }; extern bool InitDateimenue (ProgrammInformation *info,OPENFILENAME *Dateiname) { static TCHAR szFilter[] = TEXT("EX_PRESS - Dateien (*.FUP)\0*.FUP\0") \ //eingefügt// TEXT("MAKRO - Dateien (*.MKR)\0*.MKR\0") \ //eingefügt// TEXT("Alle Dateien (*.*)\0*.*\0\0"); (*Dateiname).lStructSize = sizeof(OPENFILENAME); // (*Dateiname).lStructSize = sizeof(*Dateiname); (*Dateiname).hwndOwner = (*info).handles.Hauptfenster; (*Dateiname).hInstance = (*info).hInstance; (*Dateiname).lpstrFilter = szFilter; (*Dateiname).lpstrCustomFilter = NULL; (*Dateiname).nMaxCustFilter = 0; (*Dateiname).nFilterIndex = 0; // (*Dateiname).lpstrFile = NULL; // (*Dateiname).nMaxFile = MAX_PATH; (*Dateiname).lpstrFile = Datei; (*Dateiname).nMaxFile = sizeof(Datei);/// sizeof(*Datei);; (*Dateiname).lpstrFileTitle = NULL; (*Dateiname).nMaxFileTitle = MAX_PATH; (*Dateiname).lpstrInitialDir = NULL; (*Dateiname).lpstrTitle = NULL; (*Dateiname).Flags = OFN_CREATEPROMPT; (*Dateiname).nFileOffset = 0; (*Dateiname).nFileExtension = 0; (*Dateiname).lpstrDefExt = TEXT("FUP"); (*Dateiname).lCustData = 0L; (*Dateiname).lpfnHook = NULL; (*Dateiname).lpTemplateName = NULL; return true; };
  4. Achso, dass sind 2 verschiedene Fehlercodes :upps Wenn ich die Struktur mit ZeroMemory auf NULL setze bekomme ich als Fehlercode 65535.
  5. habs selber gefunden Das geht bei den Projekteinstellungen->Debug->Zusätzliche DLLs, da habe ich die alten DLLs löschen und beim neuen Debuggen konnte ich den Pfad zu den Win2000 DLLs setzen
  6. ok, werde ich probieren. das liefert den Wert: 9
  7. Hiermit initialisiere ich die OPENFILENAME -Struktur: extern bool InitDateimenue (ProgrammInformation *info,OPENFILENAME *Dateiname) { static TCHAR szFilter[] = TEXT("EX_PRESS - Dateien (*.FUP)\0*.FUP\0") \ //eingefügt// TEXT("MAKRO - Dateien (*.MKR)\0*.MKR\0") \ //eingefügt// TEXT("Alle Dateien (*.*)\0*.*\0\0"); (*Dateiname).lStructSize = sizeof(OPENFILENAME); (*Dateiname).hwndOwner = (*info).handles.Hauptfenster; (*Dateiname).hInstance = (*info).hInstance; (*Dateiname).lpstrFilter = szFilter; (*Dateiname).lpstrCustomFilter = NULL; (*Dateiname).nMaxCustFilter = 0; (*Dateiname).nFilterIndex = 0; (*Dateiname).lpstrFile = NULL; (*Dateiname).nMaxFile = MAX_PATH; (*Dateiname).lpstrFileTitle = NULL; (*Dateiname).nMaxFileTitle = MAX_PATH; (*Dateiname).lpstrInitialDir = NULL; (*Dateiname).lpstrTitle = NULL; (*Dateiname).Flags = OFN_CREATEPROMPT; (*Dateiname).nFileOffset = 0; (*Dateiname).nFileExtension = 0; (*Dateiname).lpstrDefExt = TEXT("FUP"); (*Dateiname).lCustData = 0L; (*Dateiname).lpfnHook = NULL; (*Dateiname).lpTemplateName = NULL; return TRUE; };
  8. ich werde mir das fürs nächste Mal merken. und wie ändere ich das um, dass der Remotedebugger nun die anderen DLLs nimmt? Er fragt mich ja nicht mehr, wo die DLLs liegen? Wird das in der Projektdatei gespeichert?
  9. Filename ist so in der struct DateiInfo deklariert: TCHAR FileName[MAX_PATH]; Initialisieren tue ich es so: strcpy(Programminfo.Datei.FileName, TEXT(""));
  10. sorry, sonst sieht den Thread ja keiner mehr und ich habe ja über eine Woche gewartet. ja, da hab ich die von meinem XP-Rechner angegeben. Oder muss ich die Dateien vom dem Win2k-PC angeben, wo der Remotedebugger läuft?
  11. Ich hab mal wieder ein Problemchen :hells: Und zwar, wenn ich die Funktion GetSaveFileName aufrufe bekomme ich folgenden Fehler: Die MessageBox hab ich eingebaut um den kryptischen Fehlercode in einen besseren Fehlertext zu konvertieren: void MeldeFehler(DWORD Fehlercode) { LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, Fehlercode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL ); MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION ); // Free the buffer. LocalFree( lpMsgBuf ); } Jetzt kommt mein Aufruf: //Dialog zum Speichern aufrufen DateiMenue.lpstrFile = Programminfo.Datei.FileName; if(GetSaveFileName(&DateiMenue)) { FehlerVar = DateiSpeichern(&Programminfo,DateiMenue,&BlockSpeicherHandle,&VerdrahtungsListenHandle); if (FehlerVar != ok) { FehlerMeldung(FehlerVar,&Programminfo,0); Programminfo.Datei.gespeichert = FALSE; return 0; } else Programminfo.Datei.gespeichert = TRUE; } else { [COLOR="Red"]MeldeFehler(CommDlgExtendedError());[/COLOR] } Bei der roten Zeile lasse ich mir den Fehler ausgeben und der lautet, wie auf dem Bild zu sehen: Die Adresse des Steuerblocks ist ungültig. Hat jemand eine Idee woran das liegt? Danke.
  12. *push* :hells: hat von euch Profis keiner eine Ahnung? Das Wegklicken nervt auf Dauer.
  13. Ich habe eine Frage zum Remotedebugger von VC++ 6. Und zwar benutze ich als Entwicklermaschine einen Laptop mit Windows XP SP2. Der PC auf dem der Remotedebugger läuft ist aber ein Windows 2000 SP4 installiert. Nun bekomme ich immer folgende Meldung für alle DLLs die geladen werden müssen (am Beispiel der Shell32.dll): Wie kann man diese Warnung deaktivieren? :hells: Danke euch schon mal im Vorraus.
  14. Hi Guybrush, danke für den Denkanstoß. Nach ein wenig Anpassungsarbeit funktioniert der Rahmen fast so wie gewünscht. In der großen Anwendung geht es noch nicht. Hab erstmal ein Testprojekt erstellt und da geht es Ich werde mal schauen woran es liegt. @Klotzkopp Danke für den Tipp mit dem Remotedebugger. Ich habe auf Codeproject einen guten Artikel gefunden, der das gut erklärt hat, so konte ich das einfach einrichten :uli .
  15. hab ich jetzt gemacht. case WM_LBUTTONUP : isDrawing = false; x_Stop = LOWORD(lParam); y_Stop = HIWORD(lParam); break; und nun bei WM_PAINT eingefügt: case WM_PAINT: hDC = BeginPaint(hwnd, &ps); // Gerätekontext if (isDrawing) // Rechteck wird gewählt und wird gezeichnet { SelectObject(hDC, Brush); SelectObject(hDC, Pen); Rectangle(hDC, x_Start, y_Start, x_Stop * Programminfo.Raster, y_Stop * Programminfo.Raster / 2); } EndPaint (hwnd, &ps); return 0; ich seh trotzdem nichts :old wie kann man dieses Problem gescheit debuggen? :floet: Die Paint-Message wird ja dauernd gesendet.
  16. hDC = GetDC(Programminfo.handles.Zeichnenfenster); Geht das nur bei WM_PAINT? :old Wie sag ich Windows, dass er das RechtEck bei Paint mit den Werte malen soll? :upps :upps hmm, dachte 255,255,255 ist schwarz :upps :upps Macht aber nix, denn es passiert eh nix :hells:
  17. Bisher habe ich folgendes probiert: case WM_LBUTTONDOWN: // aktuelle Mausposition ermitteln x = LOWORD(lParam); y = HIWORD(lParam); x_Start = x; y_Start = y; isDrawing = true; break; damit merke ich mir den Startpunkt. So, dann behandel ich die WM_MOUSEMOVE Message: case WM_MOUSEMOVE : if (isDrawing) // Rechteck wird gewäht und wird gezeichnet { SelectObject(hDC, Brush); SelectObject(hDC, Pen); x = LOWORD(lParam); y = HIWORD(lParam); Rectangle(hDC, x_Start, y_Start, x * Programminfo.Raster, y * Programminfo.Raster / 2); } break; case WM_LBUTTONUP : isDrawing = false; break; Meine Pen habe ich mit Pen = CreatePen(PS_DASH,1,RGB(255,255,255)); erstellt, damit der unterbrochene Stricheffekt erzeugt wird. Nur wird nirgends das Rechteck gezeichnet. Als Noob in Win32-API Programmierung stehe ich grad völlig auf dem Schlauch :upps :hells: Hat jemand von Euch einen Tipp oder kann mir sagen wie dieses Auswahl-Dinges überhaupt richtig heißt, damit ich bei google was dazu finde? Danke.
  18. Hallo danke für die Antwort. Ich versuche den Rat zu befolgen. Bei ersten Erkenntnissen meiner Seits melde ich mich nocheinmal
  19. ich möchte mit der "Maske" etwas markieren und alles was sich in der "Maske verbirgt möchte ich dann kopieren.
  20. ich möchte es mit c++ 6.0 realisieren.
  21. Hallo ich habe eine frage wie programiert mman so einen Auswahlrahmen siehe Bild, weiß net wie man so etwas nennt. http://s6.bilder-hosting.de/img/1E7YS.png
  22. nein nein es ist kein Bob-der-Baumeister-Programm? sondern es ist ein Programm zum Programmieren von SPS´en ist, das aus Schaltlogiken Srukturierten Text macht.
  23. Danke für eure Hilfe, aber ich habe immer novh Probleme den Algorithmus zu verstehen. Ich habe mal die Werte die der Debugger anzeigt aufgeschrieben (siehe Bild). Bis zu 16 Bausteinen werden die Werte in der roten Umrandung angezeigt. Beim 17. Baustein werden die Werte in grün angezeigt und die Bezeichnung wird wieder auf 1 gesetzt. Nur warum? Wie erkennt er das? Das ist der Knackpunkt, den ich bei seinen 2 Schleifen nicht erkenne. http://www.bilder-hosting.de/show/5085C.html Bild durch Link ersetzt [Klotzkopp]
  24. Mein Problem ist das ich den Algorithmus der hinter den 2 For-Schleifen steckt nicht verstehe. Hoffe ich konnte mich besser ausdrücken Zur Definition struct EINGAENGE { char Pin[5]; char Bezeichnung[10]; int Anzahl; bool TextDarstellen; }; EINGAENGE *PosZeiger; PosZeiger = (EINGAENGE *) GlobalLock(Beschriftung.Eingaenge); // Minimum bestimmen for (int i = 1; i <= (*(PosZeiger)).Anzahl; i++) if ((*(PosZeiger + i)).Anzahl < min) min = (*(PosZeiger + i)).Anzahl; //Wert zwischen min finden for (int i = 1; i <= (*(PosZeiger)).Anzahl; i++) if ((*(PosZeiger + i)).Anzahl == min) break; if (i > (*(PosZeiger)).Anzahl) i = (*(PosZeiger)).Anzahl; Kann mir jemand weiter helfen

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...