-
Gesamte Inhalte
480 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Narf!
-
-
Es hat sich soeben erledigt.
Ich habe das Projekt wieder geöffnet und es läuft wieder. Keine Ahnung was das war.
Wenn es möglich ist, kann dieser Beitrag gelöscht werden, denn er bringt ja nicht so viel.
-
Hallo wiedermal,
ich habe einen Hauptdialog in dem ein anderer Dialog mit DoModal geöffnet wird. Dieser Dialog hat ein Text-Edit-Feld, in das nur Zahlen eingetragen werden können.
Wenn ich eine Zahl eingeben will, springt er gleich nach dem Tastendruck raus mit folgender Fehlermeldung:
"Unbehandelte Ausnahme bei 0x00534125 in [Programm].exe: 0xC00000FD: Stack overflow."
Und zeigt die Datei chkstk.asm bei folgendem Inhalt an:
(--> ist der gelbe Pfeil am Seitenrand)
***
probepages:
sub ecx,_PAGESIZE_ ; yes, move down a page
sub eax,_PAGESIZE_ ; adjust request and...
--> test dword ptr [ecx],eax ; ...probe it
cmp eax,_PAGESIZE_ ; more than one page requested?
jae short probepages ; no
***
Das Erstaunliche ist, dass es vorher schonmal funktioniert hat.
Der Dialog hat eine eigene Klasse und wird so aufgerufen:
DlgKlasse dlg;
if(dlg.DoModal()==IDOK)
...
Wo liegt das Speicherproblem?
-
Klappt super. Danke.
-
Hallo an alle,
gibt es eine schnelle Methode, den Inhalt einer Textdatei auf einmal in eine CString-Variable zu speichern?
Zur Zeit mache ich das Zeichenweise.
Oder gibt es eine Möglichkeit eine Datei zeilenweise auszulesen, wobei die Länge der Zeile bzw. des Puffers variieren kann?
Im Moment muss ich immer eine konstante Pufferlänge mit angeben.
Ich arbeite mit fstream(.h) und MFC.
-
-
Ich habe es mal so probiert:
... IHTMLTxtRange *range=0; IHTMLBodyElement *body=0; CComBSTR ID=0; ID.Empty(); ID.Append([ID-Text]); element->QueryInterface(IID_IHTMLBodyElement, (void**) &body); body->CreateTextRange(&range); range->findText(ID, sizeof(range), 2, &suc); res=range->scrollIntoView(true);
Aber das klappt auch nicht.
-
Haut bei mir nicht hin.
Deine Zeile habe ich angefügt und ein Element markiert, was direkt unter dem Fenster steht. Es wird nicht gescrollt.
-
Das habe ich auch schon probiert.
Allerdings muss man dort eine VARIANT-Variable mitgeben, in der eine ganze Menge weiterer Variablen stehen. Zu denen ist mir nicht so klar, welche Parameter ich eintragen muss bzw. wo ich die herbekommen soll.
-
Hallo an alle,
ich habe einen Dialog mit einem IE-Fenster in das ich ein HTML-Dokument geladen habe.
Mit dem folgenden Beispiel suche ich mir eine ID aus den HTML-Tags, ergänze dieses Tag mit einem Style-Aufruf, der die Hintergrundfarbe dieser Zeile ändert. Das klappt auch ganz gut, aber wenn die Zeile außerhalb des sichtbaren Bereichs des IE-Fensters liegt, kann man als Nutzer damit nicht viel anfangen.
Wie kann ich diese Zeile nach der Änderung in den sichtbaren Bereich scrollen?
(VS .NET 2003 C++ MFC) LPDISPATCH disp=0; IHTMLDocument2 *doc2=0; IHTMLElement *element=0; CString suchID="[ID-Text]"; CString Text; CComBSTR ID=0; CString InsertText=" style=\"BACKGROUND-COLOR: ORANGE\" "; int pos=0; disp=m_cExpl.get_Document(); disp->QueryInterface(IID_IHTMLDocument2, (void**) &doc2); disp->Release(); doc2->get_body(&element); doc2->Release(); element->get_innerHTML(&ID); Text=ID; pos=Text.Find(suchID, 0)+strlen(suchID); Text.Insert(pos, InsertText); ID.Empty(); ID.Append(Text); res=element->put_innerHTML(ID); //Hier soll die geänderte Zeile im Fenster erscheinen
-
:floet: Hallo an alle! :floet:
Ich lade in den WMP Sounddateien (mp3, wav), die aber nur teilweise abgespielt werden sollen. Diese Schnipsel möchte ich in eine wav-Datei aufnehmen, um diese dann als gesamte Sounddatei abspielen zu können.
Hat jemand 'ne Idee wie das gehen könnte?
-
Hat sich erledigt. Man sollte das Dokument im Explorer sehen und nicht bloss Navigate() aufrufen.
-
Ich habe mir bei CodeProject die Funktion FindText() kopiert.
Sie funktioniert bis zum Aufruf
lpHtmlDocument->get_body(&lpBodyElm); ASSERT(lpBodyElm);
Beim Aufruf wird die Variable lpBodyElm auf 0x0000000 gesetzt und HRESULT gibt S_OK aus.
Nach get_body kommt eine Debug Assertion Fehlermeldung mit Verweis auf die aufrufende Zeile.
:confused:
-
Es handelt sich um den Microsoft Webbrowser, den man aus der COM-Liste auswählen kann.
-
Beim Hinzufügen der Kontroll-Variable wurde eine Klasse "CExplorer1_name" erstellt, die von CWnd abgeleitet ist.
Anmerkung zum Bearbeiten: Ich möchte den Quelltext der angezeigten Seite bearbeiten.
-
Hallo Leute,
ich habe den IE als ActiveX in meinem MFC-Dialog, der eine HTML-Seite anzeigt.
Ich möchte diese angezeigte Seite bearbeiten, ohne die ursprüngliche Datei zu verändern, d.h. die Änderungen sollen nicht abgespeichert werden.
Der geänderte Bereich soll in der Mitte des Explorerfensters angezeigt werden.
Wie bekomme ich Zugriff auf die angezeigte Seite und wie kann ich diese im Fenster ausrichten?
-
Ich habe das mal mit den Threads probiert. Klappt eigentlich ganz gut, aber:
In meinem Arbeitsthread habe ich als Parameter eine CListCtrl-Variable, mit der ich im Thread Aktualisierungen vornehmen will.
Jedoch bleibt er beim Breakpoint-Lauf bei m_cList->SetItemText(item, Spalte, Text) stehen und rührt sich nicht mehr.
Was nun?
-
Ich werde wohl die Anweisungen in den Timer setzen.
Bei WaitForSingleObject() muss ich ja eine Zeitspanne eingeben, die ist jedoch unterschiedlich lang. Und mit einer while-Schleife ist alles wieder blockiert, wie Klotzkopp schon sagte.
Mein SetTimer hat drei Argumente: ID, Zeit, Funktion. Kommt darauf an, welche SetTimer-Funktion man verwendet.
-
Wegen der ständigen Aktualisierung meines Dialogs.
-
Hallo an alle.
Ich habe folgendes vor: Ich starte einen Thread, danach SetTimer(), der das Ende des Threads prüft und erst danach sollen folgende Anweisungen abgearbeitet werden.
Jetzt ist es so:
{ CreateThread(...); SetTimer(1, 250, 0); Weitere Anweisung(en); }
Wenn der Timer gesetzt wurde, führt er die Weiteren Anweisungen aus, die aber erst nach dem Ende des Threads abgearbeitet werden sollen.
Gibt es Timer-Funktionen, die das Abarbeiten anhalten, bis sie fertig sind?
-
Man kann. Sorry!
-
Ich habe Variante 2 mit SetTimer() genommen und es funktioniert.
Dazu eine Frage:
Kann ich in der OnTimer()-Funktion ein weiteres SetTimer() aufrufen?
Denn das habe ich versucht, aber der neue Timer wurde nicht angesprochen.
-
Und wieder mal zu früh gefreut... :confused:
Ich möchte das Ende des Threads abwarten und erst dann weitermachen. Den Thread habe ich gestartet, um die Dialoganzeige aktuell zu halten.
Ich habe folgendes Beispiel aus der MSDN angepasst:
... CWinThread* pThread=0; DWORD exitCode=0; ... pThread=AfxBeginThread(ArbeitsThread, &m_cSmiley, 0, 0, 0, 0); pThread->m_bAutoDelete=false; do { GetExitCodeThread(pThread->m_hThread, &exitCode); } while(exitCode==STILL_ACTIVE); AfxEndThread(0, true); ...
Nur bleibt er in der do-while-Schleife stecken und führt den Thread bzw. dessen Funktion nicht aus.
Ich habe hier den Tipp gefunden, in die Schleife ein Sleep() einzubinden. Das hat auch nicht geholfen.
Und noch ein Hinweis: Verschiedene Themen-Links sind nicht mehr zu erreichen.
-
Es war wieder eine schwere Geburt. Es funktioniert jetzt. Danke für die Geduld.
-
Das hat nur soweit geholfen, dass ich jetzt nur noch die Fehlermeldung mit der ListCtrl-Variable bekomme.
Deklaration:
static UINT ArbeitsFunktion(LPVOID);
Aufruf:
AfxBeginThread(ArbeitsFunktion, &m_cSmiley, 0, 0, 0, 0);
Fehler:
Der linke Teil von '.GetItemCount' muss eine Klasse/Struktur/Union sein
"m_cSmiley.GetItemCount();" in einer for-Schleife.
Weder mit &m_cSmiley noch ohne & hat es etwas gebracht.
Einen markierten Bereich im Explorerfenster in den Sichtbereich scrollen
in C++: Compiler, IDEs, APIs
Geschrieben
Hab es hinbekommen. Vielleicht etwas umständlich, aber es geht:
Ich hoffe, ich kann damit weiterhelfen. Wenn jemand einen einfacheren Weg kennt, bitte schreiben.