Zum Inhalt springen

Narf!

Mitglieder
  • Gesamte Inhalte

    480
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von Narf!

  1. Jetzt sieht es so aus: Ich habe die Funktion als static DWORD WINAPI Dlg::ArbeitsFunktion(LPVOID pParam); deklariert. Als Aufruf habe ich AfxBeginThread(ArbeitsFunktion, &m_c[ListCtrl], 0, 0, 0, 0);. Folgende Fehlermeldung bekomme ich jetzt: [Program]Dlg.cpp(1020): error C2665: 'AfxBeginThread': Durch keine der 2 Überladungen kann Parameter 1 vom Typ 'DWORD (LPVOID)' konvertiert werden e:\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\afxwin.h(4105): kann 'CWinThread *AfxBeginThread(AFX_THREADPROC,LPVOID,int,UINT,DWORD,LPSECURITY_ATTRIBUTES)' sein bei Anpassung der Argumentliste '(overloaded-function, CListCtrl *__w64 , int, int, int, int)' Und der o.g. Fehler bleibt der selbe.
  2. Ich habe die Funktion als static deklariert, der selbe Fehler tritt immer noch auf und jetzt bekomme ich Probleme mit der ListCtrl-Variable: Mit der Funktion durchlaufe ich ein CListCtrl von oben nach unten.
  3. Bei mir klappt es so nicht. Die Arbeits-Funktion: UINT [Program]Dlg::ArbeitsFunktion(LPVOID) { ... tut was ... return 0; } Aufruf im Programm: DWORD dwThreadId=0; CreateThread(NULL, NULL, ArbeitsFunktion, NULL, NULL, &dwThreadId); Die Fehlermeldung: ?:\[Program].cpp(702) : error C2664: 'CreateThread': Konvertierung des Parameters 3 von 'UINT (LPVOID)' in 'LPTHREAD_START_ROUTINE' nicht möglich Keine Funktion mit diesem Namen im Gültigkeitsbereich stimmt mit dem Zieltyp überein Was ist daran falsch, wenn es doch oben so geht?
  4. Bedeutet das, dass ich mir aus der wmp.h z.Bsp. die Klasse IWMPControls erstellen lasse, dann in der Funktion, in der ich die Position abfrage, eine Instanzvariable erstelle und dann erst an die Funktionen rankomme?
  5. So, nun habe ich das mit den Interfaces auch ein bisschen verstanden. Es sieht jetzt so aus: ProgramDlg.h: #pragma once #include "ocx1_medplay.h" //die Wrapper-Klasse vom MediaPlayer #include "E:\WMSDK\WMPSDK9\include\wmp.h" //die wmp.h aus dem SDK ProgramDlg.cpp: void CProgramDlg::OnBnClickedButton10() { m_cMedPlay.put_URL("Datei.mp3"); //hiermit lade ich eine Datei in den Player; wird abgespielt }//end void CProgramDlg::OnBnClickedButton10() void CProgramDlg::OnBnClickedButton2Pos() { double Pos=0.0; IWMPControls::get_currentPosition(&Pos); //hiermit wollte ich die aktuelle Position anzeigen lassen, aber: s.u. }//end void CProgramDlg::OnBnClickedButton2Pos() Fehlermeldung: f:\ProgramDlg.cpp(100) : error C2352: 'IWMPControls::get_currentPosition::IWMPControls::get_currentPosition': Unzulässiger Aufruf einer nicht statischen Memberfunktion e:\WMSDK\WMPSDK9\include\wmp.h(1342): Siehe Deklaration von 'IWMPControls::get_currentPosition' Erst seit die wmp.h aus dem SDK drin ist, komme ich an die Interfaces ran. Was mache ich denn falsch!?!
  6. Jetzt muss ich hier nochmal nachhaken: Mit meiner o.g. Funktion fasse ich jede Datei an. Wenn der Nutzer nun ziemlich viele Dateien auf seinem Rechner hat, kann das ganz schön dauern. Gibt es einen schnelleren Weg, um eine ganz bestimmte Datei zu suchen?
  7. Also, ich habe mich exakt an die Hilfe aus der MSDN gehalten, habe alles so gemacht, wie es da stand, aber es stimmt nichts von den beschriebenen Ergebnissen. Zugegeben, es ist ja auch für VC++ 6.0 ausgeschrieben. Mit dem WMP 7.1 hat es damals genau so hingehauen. Da hatte ich alle Funktionen, die ich brauchte, nur durch das Setzen der Control-Variable auf das ActiveX-Control. Warum macht es der 9er so kompliziert, oder liegt es an VC++ 7? Hat jemand Erfahrungen mit dem 9er und VC++ 7?
  8. Das mit dem Thread funktioniert nicht: Die Funktion: void C[Program]Dlg::Aktualisieren() { UpdateData(false); }//end void C[Program]Dlg::Aktualisieren(void) Der Aufruf: DWORD IDAktualisieren; HANDLE hAktualisieren; hAktualisieren=CreateThread(NULL, 0, Aktualisieren, NULL, 0, &IDAktualisieren); Fehlermeldung: - Konvertierung des Parameters 3 von 'void (void) ' in 'LPTHREAD_START_ROUTINE' nicht möglich - Keine Funktion mit diesem Namen im Gültigkeitsbereich stimmt mit dem Zieltyp überein Die Funktion Aktualisieren ist definitiv vorhanden.
  9. Wenn die Funktionen beendet sind, wird der Dialog wieder aktualisiert und die letzten Werte angezeigt. Ich versuche gerade einen Thread mit UpdateData(false) zu starten. Mal sehen.
  10. Ja, auch diese Möglichkeit habe ich probiert.
  11. Wenn dem so ist, wie kann ich dann eine Aktualisierung des Hauptdialogs erzwingen?
  12. Ich habe beide Variablen erstellt. Ich habe auch schon mit DlgKlasse.m_wStatic="Text", DlgKlasse.m_cStatic.SetDlgItemText() und UpdateData() gearbeitet, aber das selbe Ergebnis. Invalidate() probier ich mal.
  13. Hallo an alle, ich habe ein Dialogfeld, in dem ich ein Static-Feld habe, was ständig Meldungen ausgeben soll. Mit SetDlgItemText(IDC_STATIC_xy, "Text") weise ich dem Feld den Text zu, aber es wird nicht aktualisiert, wenn ich das aus einer anderen Klasse mache: DlgKlasse.SetDlgItemText(IDC_STATIC_xy, "Text"); Ich habe es mit UpdateData(false/true) probiert, mit RedrawWindow, es hilft alles nichts. Weiterhin starte ich einen Prozess mit CreateProcess(). Wenn der beendet ist und sich das DOS-Fenster schliesst, bleibt auf meinem Dialog ein weißer Fleck, wo vorher das DOS-Fenster war. Auch hier halfen die o.g. Schritte nicht.
  14. Um den WMP als Element der ToolBox hinzu zufügen, muss man den als COM-Objekt auswählen. Man setzt in der Liste einen Haken, und das war's. Danach zieht man den WMP auf den Dialog und setzt die Variable. Mehr habe ich nicht dazu getan. Ich weiß, dass ich mir aus Active-X-Elementen weitere Klassen erstellen lassen kann. Das habe ich auch mit den WMP-Klassen gemacht, die die entsprechenden Funktionen hatten. Aber wie weiter? Denn wenn ich eine Instanz-Variable auf diese Klassen erstelle, komme ich zwar an die Funktionen, aber es passiert nichts. Mit instanz.put_Filename("Datei.wav/mp3"); müsste der WMP das Abspielen anfangen, tut er aber nicht.
  15. Schönen guten Tag an alle, ich habe mal dieses Thema erstellt, weil mein Thema Umstellung von VC 6.0 auf VC .NET unübersichtlich wird, was den Media Player betrifft. Hier nochmal meine bisherige Vorgehensweise: Ich habe mit VC++ .NET eine dialogfeldbasierende MFC-Win32-Anwendung erstellt, in die ich den WMP 9 über ActiveX eingebunden habe. Die ID ist ID_OCX1_MedPlay und die Control-Variable ist m_cMedPlay. Es wurde eine Wrapper-Klasse erstellt, auf die ich mit m_cMedPlay Zugriff habe. Nun mein Problem: In der Wrapper-Klasse sind nicht die Funktionen enthalten, die ich brauche. Z.Bsp. double get_CurrentPosition(), welche mir die aktuelle Position in einer Sound-Datei angibt. Klotzkopp hat folgendes dazu geschrieben: Wie komme ich an die Interfaces ran? Ich habe mir aus der MSDN Code-Beispiele runtergeladen (wmphost, usw.), die mir aber nicht weitergeholfen haben. Hat jemand 'ne Idee?
  16. Hallo an alle, ich starte mit CreateProcess(...) ein Programm als DOS-Fenster. Nun möchte ich evtl. auftretende Fehler dieses Programms auswerten. Wie bzw. wohin gibt dieses Programm aus dem DOS-Fenster seine Meldungen ab? Als ich den Flag STARTF_USESTDHANDLES gesetzt hatte, wird im DOS-Fenster nichts mehr angezeigt, aber die Handles zeigten keine Änderungen.
  17. Das Problem hat sich irgend wie von selbst gelöst, denn jetzt klappt alles wieder.
  18. Hallo mal wieder! Ich bekomme folgende Fehlermeldung: *** Debug Assertion Failed! Program: Mein Programm File: f:\vs70builds\3077\vc\MFCATL\ship\atlmfc\include\afxwin1.inl Line 26 *** 1. F: ist mein CD-ROM 2. Die Verzeichnisstruktur existiert überhaupt nicht auf meinem Rechner 3. Keine Ahnung, wie der Fehler entstanden ist, denn das tut es erst seit heute. Das Icon wird in dieser Funktion geladen, die ich nicht geändert habe: C[MeinProg]Dlg::C[MeinProg]Dlg(CWnd* pParent /*=NULL*/) : CDialog(C[MeinProg]Dlg::IDD, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } Wenn ich auf "Ignorieren" gehe, wird das Programm weiter fortgesetzt. Kann mir da jemand helfen?
  19. Hallo halli, ich möchte einen Ordnernamen bzw. Pfad angeben und die Größe des Inhaltes dieses Ordners ermitteln. Welche Funktion kann ich nutzen? VC++ 7.0; MFC
  20. Das habe ich hier schon mal im Forum gefunden: void [Programm]::ZeigeFehler(CString Fnkt) //Stand 02.04.2004 { LPVOID lpMsgBuf; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL); MessageBox((LPCTSTR)lpMsgBuf, Fnkt, MB_OK | MB_ICONINFORMATION ); LocalFree(lpMsgBuf); }//end void [Programm]::ZeigeFehler(void)
  21. Ich habe mal wieder selbst gebastelt und wie immer ohne Resultat. Ich habe mir eine Klasse CMediaPlayer erstellen lassen, in der alle Funktionen drin sind, die ich brauche. Aber wenn ich z. Bsp. eine wav-Datei laden will, passiert gar nichts. Folglich kann ich auch nicht die aktuelle Position oder andere Werte abfragen. Mit der Variable, die auf das Steuerelement bezogen ist, kann ich zwar eine Datei mit m_cWMP.put_URL("irgendeine.wav") die Datei laden und abspielen, aber es fehlen eben die anderen Funktionen, die in dieser Klasse nicht vorhanden sind. ... #include "CMediaPlayer.h" ... void irgendwas() { CMediaPlayer media; double pos=0.0; media.put_filename("irgendeine.wav"); //soll automatisch abspielen pos=media.get_CurrentPosition(); //fragt die aktuelle Position ab }
  22. 'schuldigung für drängeln, aber ich muss es wissen. Ich habe bis heute selbst nichts gefunden, was mir helfen könnte.
  23. Mir geht es darum, wie man ein Steuerelement vergrößert. Ich habe es mit ScreenToClient und ClientToScreen probiert, aber die neuen Werte für x und y wurden nicht angenommen.
  24. Ich habe es gestern selbst mit viel experimentieren herausbekommen: //Das Editfeld wird auf dem markierten Item erstellt, wenn auf das Item doppelt geklickt wurde void [Projekt]Dlg::OnLvnItemActivateList2(NMHDR *pNMHDR, LRESULT *pResult) { LPNMITEMACTIVATE pNMIA = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); m_cList.EditLabel(m_cList.GetSelectionMark()); *pResult = 0; }//end void //Nachdem Enter gedrückt wurde, wird der Inhalt des Editfeldes ausgelesen und dem Item als neuer Text zugewiesen void [Projekt]Dlg::OnLvnEndlabeleditList2(NMHDR *pNMHDR, LRESULT *pResult) { NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR); CString Text; CEdit *pEdit=m_cList.GetEditControl(); pEdit->GetWindowText(Text); m_cList.SetItemText(m_cList.GetSelectionMark(), 0, Text); *pResult = 0; }//end void

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