Zum Inhalt springen

Board00

Mitglieder
  • Gesamte Inhalte

    49
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Board00

  1. Hallo an was kann es liegen das wenn ich ein Programm Kompiliere und danach aufrufe meine CPU Auslastung bei 100% liegt. Das Programm verursacht die 100% auslastung. bei Minimierung geht die Last sofort wieder runter und bei Maximierung des Programms bekomme wich wieder eine CPU Vollast. An was für ein problem kann es liegen, bzw. wie kann man erkenne warum das Programm soviel CPu Last brauch. MFG Board00
  2. Ja, das mache ich. Wie kann man das schon vorher machen oder geht das nicht? Wenn ich die TB_SETBUTTONINFO Message sende fliegt das Programm weg. Ich hab den Aufruf von Sendmessage mit TB_SETBUTTONINFO in die Schleife gepackt, ist das vllt verkehrt? Hast du eine Idee?
  3. Also Sendmessage war erfolgreich aber die Tooltips kamen immer noch nicht. Nun hab ich beim googeln was gefunden: Tooltip won't display over toolbar button - C Board NUn hab ich das versucht den Code an mein Programm anzupassen, aber erscheint über jedem Toolbutton der gleiche Tooltext (immer der erste String von meinem Textarry, in dem ich die Tooltips hinterlegt habe) for(int i =0; i < AnzahlButtons; i++) { if (*ToolButtonHilfsText[i] != *"") { tbButton[i].iString = SendMessage((*info).handles.Toolbar, TB_ADDSTRING, 0, (LPARAM) (LPSTR) ToolButtonHilfsText[i]); } else tbButton[i].iString = 0; } DWORD ToolButtonID[AnzahlButtons] = { ID_FILE_NEW, ID_FILE_MAKRO, ID_FILE_OPEN, ID_FILE_SAVE, ID_EDIT_CLEAR, 0, ID_HARDCOPY, 0, ID_STRUKTURIERTER_TEXT, 0, ID_EINGANG_PLUS, ID_EINGANG_MINUS, 0, ID_ZOOM_PLUS, ID_ZOOM_MINUS, 0, ID_HELP, 0 }; char* ToolButtonHilfsText[AnzahlButtons] = { "Neues FUP-Projekt", "Neues Makro-Projekt", "Projekt Öffnen", "Projekt Speichern", "letztes eingefügtes Element löschen", "HARDCOPY", "", "erzeuge Strukturierten Text", "", "Eingang hinzufügen", "Eingang entfernen", "", "herein zoomen", "heraus zoomen", "", "Hilfe", "", "" }; Hast du eine Idee, woran es liegt?
  4. Hallo Danke für deinen Tipp aber es funktioniert noch nicht bei mir. so sieht jetzt mein Quellcode aus für die Umgebung.h also wo die Toolbar erzeugt wird bool ErstelleArbeitsFenster(HWND Handle,ProgrammInformation *info) { RECT rect; GetClientRect(Handle,&rect); (*info).handles.Arbeitsfenster = CreateWindow ( TEXT("Arbeitsfenster"), NULL, WS_CHILDWINDOW | WS_VISIBLE, 0,0, rect.right,rect.bottom, Handle,NULL, (*info).hInstance, NULL) ; if ((*info).handles.Arbeitsfenster == NULL) return FALSE; // Toolbar erstellen (*info).handles.Toolbar = CreateToolbarEx((*info).handles.Arbeitsfenster, // parent WS_CHILD | WS_BORDER | WS_VISIBLE | TBSTYLE_TOOLTIPS, // style IDR_TOOLBAR, // toolbar id AnzahlButtons, // number of bitmaps (*info).hInstance, // mod instance IDB_TOOLBAR, // resource id for the bitmap (LPCTBBUTTON)&tbButton, // address of buttons AnzahlButtons, // number of buttons 16,16, // width & height of the buttons 16,16, // width & height of the bitmaps sizeof(TBBUTTON) ); if ((*info).handles.Toolbar == NULL) return FALSE; HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, (*info).handles.Arbeitsfenster, NULL,info->hInstance, NULL); if (NULL != hwndTip) { Programminfo.handles.ToolTip = hwndTip; SetWindowPos(hwndTip, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); } TOOLINFO ti; ti.cbSize = sizeof(TOOLINFO); ti.uFlags = TTF_SUBCLASS; ti.hwnd = info->handles.Arbeitsfenster; ti.hinst = info->hInstance; ti.rect.left=1; ti.rect.top=1; ti.rect.bottom=200; //ti.rect.left = 0; //ti.rect.top = 0; //ti.rect.right = 100; //ti.rect.bottom = 100; for(int i =0; i < AnzahlButtons; i++) { int x; if( ToolButtonHilfsText[i][0]==0) x=6; // Separator else x=22; // normaler Button ti.rect.right = ti.rect.left + x; ti.lpszText = ToolButtonHilfsText[i]; SendMessage(hwndTip, TTM_ADDTOOL, 0,(LPARAM)&ti); ti.rect.left = ti.rect.right + 1; } return TRUE; } und so schaut der Quelltext vom Hauptprogramm.h aus wo die elemente definiert werden für die Toolbar const int AnzahlButtons = 18; #define ID_FILE_NEW 0xE100 #define ID_FILE_OPEN 0xE101 #define ID_FILE_SAVE 0xE103 #define ID_FILE_SAVE_AS 0xE104 #define ID_EDIT_CLEAR 0xE120 #define ID_HELP 0xE146 #define ID_HELP_INDEX 0xE142 // Die Elemente für die Toolbar TBBUTTON tbButton[] = { {0, ID_FILE_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, //{0, ID_FILE_NEWtb, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {16, ID_FILE_MAKRO, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {1, ID_FILE_OPEN, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {2, ID_FILE_SAVE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, //{4, ID_FILE_SAVE_AS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, //{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, {3, ID_EDIT_CLEAR, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, {12, ID_HARDCOPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, {7, ID_STRUKTURIERTER_TEXT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, {9, ID_EINGANG_PLUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {10, ID_EINGANG_MINUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, {14, ID_ZOOM_PLUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {15, ID_ZOOM_MINUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, {11, ID_HELP, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, //{13, ID_INFO, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0} }; char* ToolButtonHilfsText[AnzahlButtons] = { "Neues FUP-Projekt", "Neues Makro-Projekt", "Projekt Öffnen", "Projekt Speichern", "letztes eingefügtes Element löschen", "HARDCOPY", "", "erzeuge Strukturierten Text", "", "Eingang hinzufügen", "Eingang entfernen", "", "herein zoomen", "heraus zoomen", "", "Hilfe", "", "" }; aber leider wird immernoch kein tooltip erzeugt wenn ich mit der Maus darüber fahre. Weis einer rat?? Oder was mache ich falsch??
  5. HAllo, ich habe mal wieder ein problem. Ich habe eine Toolbar (siehe Bild) die einzelnen elemte sind dafür in einem Bitmap gespeichert das Bitmap schaut so aus (sihe Bild) Die einzlnen Elemente werden aus dem bitmap gelesen denn aller 15*16 Pixel entspricht ein symbol. diese werden in einer header datei geladen // Die Elemente für die Toolbar TBBUTTON tbButton[] = { //{0, ID_FILE_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {16, ID_FILE_NEWtb, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {0, ID_FILE_MAKRO, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {1, ID_FILE_OPEN, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {2, ID_FILE_SAVE, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, //{4, ID_FILE_SAVE_AS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, //{0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, {3, ID_EDIT_CLEAR, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, {12, ID_HARDCOPY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, {7, ID_STRUKTURIERTER_TEXT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, {9, ID_EINGANG_PLUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {10, ID_EINGANG_MINUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, {14, ID_ZOOM_PLUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {15, ID_ZOOM_MINUS, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, {11, ID_HELP, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0}, {0, 0, TBSTATE_ENABLED, TBSTYLE_SEP, 0L, 0}, //{13, ID_INFO, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0L, 0} }; Die anfangs zahlen entpricht den Symbol auf den Bitmap. Nun meine Frage wie kann ich realiesieren das wenn ich über ein BUtton mit der Maus bin, dann sich dann pro button so ein Tooltip öffnet wo der name des Butten steht. Bsp. Maus ist über der dem Button OPEN das dann steht öffnen. Quasi so eine art mousovereffekt wie bei java. Danke im VOrraus.
  6. Ich habe ein Array von einer struct definiert und möchte in einer Funktion die Werte in dem Array bearbeiten. Wenn ich das Array normal übergebe dann werden die veränderten Daten beim Beenden der funktion nicht verändert. Also brauch ich einen Zeiger darauf, oder? Kann mir mal jemand ein kleines Beispiel dazu erstellen und dies ein bisschen kommentieren. Das ist meine Struktur: struct BausteinNummernSpeicher { int alteBausteinNummer; int neueBausteinNummer; }; Dann erstelle ich eine Array: BausteinNummernSpeicher Array[255]; Dieses Array würde ich nun gerne einer FUnktion übergeben, diese soll was machen und die Daten dann wieder in das Array schreiben. Könnt ihr mir mal erklären, wie man das macht?
  7. ich sag nix weiter ah ok thx
  8. ja danke habe gerade den selben tipp in einen anderen Forum bekommen. Kann es sein das du dort auch der freundliche Helfer warst. denn dort ist die selbe Signatur wie hier. Aber was ist wenn jetzt zb hinter YBYA eine mehrstellige zahl steht wie zb 199 wie bekomme ich die dort raus. da ja die zahl sich aus 3 stellen zusamensetzt aus der 5,6 und7 stelle.?
  9. könnte ich bitte mal ein bsp bekommen für strstr.
  10. so sieht mein quellcode jetzt aus BausteinNummernSpeicher *Zeiger; char* Zahl; int alteBsNr; char Wert; Zeiger = (BausteinNummernSpeicher *) GlobalLock(Speicher); if (NULL == Zeiger) return false; while(((*Hilfszeiger) != ';') && ((*Hilfszeiger) != '!')) { (*Output) = (*Hilfszeiger); if (isdigit(Hilfszeiger[0])) { Wert = Hilfszeiger[0]; strcpy(Zahl,Hilfszeiger[0]); strcat(Zahl,"\0"); char* puffer = _atoi(Zahl); } Output ++; Hilfszeiger ++; }; (*Output) = '\0'; GlobalUnlock(Speicher); return true; im Hilfszeiger sieht es so aus "0x0012f279 "1;AP2;YBYA1:bBXB12;PVO!"
  11. bei mir funktioniert aber nicht atoi Fehlermeldung: 'Initialisierung': 'int' kann nicht in 'char *' konvertiert werden
  12. ja aber atoi geht nicht denn wenn ich nur die zahl auslesen will steht vor der zahl der Asci code im Zeiger also der wert 52 für die 4 deshalb funzt atoi nicht.
  13. Ok, isdigit kannte ich nicht. Ich hab einen String und dazwischen ist eine Zahl. Bei einer Ziffer ist das mit isDigit kein Problem, was amche ich wenn die Zahl aus mehreren Ziffern besteht? Wie kriege ich diese Zahl dann in eine int Variable, weil ich damit was überprüfen will und gegebenfalls die Zahl druch einen andere ersetzen muss? :hells:
  14. So, der Fehler hat sich in Luft aufgelöst, wie auch alle anderen Speicherfehler. Ich hab mal die Trial von der VS 2005 TS geladen und den Code durch die Codeanalyse gejagt, da hat mir das VS einige NULL-Pointer Dereferenzierungen angemant. Ich hab den Zeiger erst auf ungleich NULL geprüft und dann weiter gearbeitet. Nun ist alles in Ordnung :floet:
  15. Hallo, ich steh gerade voll auf dem Schlauch.Wie erkenne ich in einem String Zahlen und gebe diese einzeln als Zahl zurück und die Position an der diese Zahl in dem String stand? Ich muss Zahlen in einem String ersetzen und komm nicht zurecht :hells: :hells: Hat jemand einen Denkanstoß?
  16. das ist ja das kuriose, es war als Flag nur OFN_CREATEPROMPT definert, nix anderes Und wie außer mit GetLastError komme ich an eine gescheite Fehlermeldung?
  17. Wenn die Flags sich beim 2 Aufruf ändern kommt diese Fehlermeldung. Es kommt eine Fehlemeldung ERROR_INVALID_PARAMETER das bedeutet funktioniert nicht.
  18. Hallo hier der Code strcpy(alterName,Programminfo.Datei.FileName); strcpy(Programminfo.Datei.FileName,""); if (1 == Aufruf) flags_Temp = DateiMenue.Flags; DateiMenue.lpstrFile = Programminfo.Datei.FileName; if (2 == Aufruf) { DateiMenue.Flags = flags_Temp; } // Dialog zum Ermitteln des Dateinamen aufrufen if(!GetOpenFileName(&DateiMenue)) { MeldeFehler(GetLastError()); MeldeFehler(CommDlgExtendedError()); strcpy(Programminfo.Datei.FileName,alterName); return TRUE; } Diesen habe ich benutzt um die Flag des ersten GetOpenFileName in den in den 2 Aufruf des GetOpenFileName zu kopieren. denn wenn die Flag 8192 ist funktioniert die Funktion aber wenn die Flag 14336 ist nicht. Siehe Anhang.
  19. Ich bekomme diese Ausnahme, wenn ich die Win32 API Funktion GetOpenFileName ein zweites mal aufrufe. Beim ersten Aufruf klappt alles, aber beim 2. Aufruf knallt es. Bei google gibts nicht mal was zu der Ausnahme GCError. Was bedeutet diese überhaupt? Ich nutze nun das VS2005, da dass VS6 einfach mies ist.
  20. nee ich hatte ja nix verändert, deshalb war ich so erstaunt. nun bekomm ich einen anderen Fehler, siehe neuen Thread.
  21. Ich hab mal wieder ein Problem. Bei einem CreateWindow-Aufruf bekomme ich folgenden Fehler: nur, das hat immer funktionert: Programminfo.handles.Menue = LoadMenu(hInstance,MenueName); hwnd = CreateWindow (szHauptAppName, // Name der Fensterklasse szTitle, // Fenstertitel WS_OVERLAPPEDWINDOW | WS_MAXIMIZE, // Fensterstil CW_USEDEFAULT, // X-Position des Fensters CW_USEDEFAULT, // Y-Position des Fensters /* CW_USEDEFAULT, // Fensterbreite CW_USEDEFAULT, // Fensterhöhe */ GetSystemMetrics( SM_CXSCREEN ), GetSystemMetrics( SM_CYSCREEN ), NULL, // übergeordnetes Fenster Programminfo.handles.Menue, // Menü hInstance, // Programm-Kopiezähler (Programm-ID) NULL) ; warum zur Hölle knallt das hier auf einmal?
  22. OK, das klingt einleuchtend. Ich hab jetzt eine Idee, warum es knallt. Vor dem CreateWindow wird ja die WM_Create Message gesendet und die wird behandelt. Dort werden bestimmte Funktionen aufgerufen und das klappt wenn ich es im Remotedebugger starte oder ohne Debugger starte. Wen ich an einer anderen Stelle wieder eine der Funktioenn aufrufe die auch bei dem WM_Create aufgerufen werden knallt es bool TextEinfuegen(HDC *Abbhdc, HBITMAP *AbbBild, BlockSpeicherFeld *ModulDaten,ProgrammInformation *info) , da dort der Zeiger auf die ProgramInfo Struktur NULL ist :upps Nur wie bekomme ich raus, wo diese globale Variable ( :old ) auf einmal NULL wird? das war nur eine Symptonbehandlung :hells: :hells: :hells:
  23. Wie dann? Bei einem Haltepunkt davor steht eigentlich überall was drin, da ist nix NULL. nee, das ist in Zeile 201. Ich hatte einfach ein _try _except drumgemacht und Zeile 197 ist das _try. Warum kann es bei szAuswahlModule knallen? Das wurde mit RegisterClass registriert und sollte gehen. Und es steht ja auch was drin. //Edit: Wenn ich das Programm über den Remotedebugger debugge, dann geht alles :eek Wieso gehts da, aber beim lokalen Debugger nicht?
  24. Hi Klotzkopp, da ist keiner NULL: GrafikOberfläche.exe!erstelleAuswahlModule(ProgrammInformation info={...}, char * szAuswahlModule=0x004db0a8) Zeile 197 C++ GrafikOberfläche.exe!ErstelleModulAuswahl(void * * AuswahlSpeicherHandle=0x004dcff4, ProgrammInformation * info=0x004dcff8) Zeile 677 + 0x1c Bytes C++ GrafikOberfläche.exe!ArbeitsfensterProc(HWND__ * hwnd=0x00010ef0, unsigned int message=273, unsigned int wParam=57600, long lParam=0) Zeile 808 + 0xf Bytes C++ user32.dll!77d18734() [Unten angegebene Rahmen sind möglicherweise nicht korrekt und/oder fehlen, keine Symbole geladen für user32.dll] mehrere user32.dll-Aufrufe GrafikOberfläche.exe!ArbeitsfensterProc(HWND__ * hwnd=0x9de1a96a, unsigned int message=1243932, unsigned int wParam=2010220340, long lParam=69360) Zeile 759 C++ mehrere user32.dll-Aufrufe GrafikOberfläche.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * szCmdLine=0x00151f1d, int iCmdShow=1) Zeile 189 C++ GrafikOberfläche.exe!__tmainCRTStartup() Zeile 324 + 0x35 Bytes C GrafikOberfläche.exe!WinMainCRTStartup() Zeile 196 C kernel32.dll!7c816fd7() nein ich nutze keine Threads. Erst wurde sie als Zeiger übergeben, dann hatte ich es umgeändert auf einen einfachen CallByValue, kein Unterschied. erstelleAuswahlModule(ProgrammInformation info,TCHAR szAuswahlModule[]) Kann es wegen dem szAuswahlModule knallen?

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