Datei Speichen ?
-
Hallo alle zusammen
Ich habe eine Dialog-Anwendung und möchte mit einem Button click diese Datei Abspeicher.
BOOL CCh14Ex2Doc::OnSaveDocument(LPCTSTR lpszPathName)
{
CMaxMidiSMF wSMF;
int i;// open a smf for writing and output the recorded track
if(pTrackList)
{
wSMF.Open(lpszPathName, WRITE);for(i = 0; i < nTracks; i++)
wSMF.Attach(pTrackList[i]);wSMF.Save();
wSMF.Close();
}return TRUE;
}void CCh14Ex2Doc::OnUpdateFileSave(CCmdUI* pCmdUI)
{
BOOL saveable = FALSE;
int i;for(i = 0; i < nTracks; i++)
saveable |= !pTrackList[i]->IsEmpty();pCmdUI->Enable(saveable);
}void CCh14Ex2Doc::OnUpdateFileSaveAs(CCmdUI* pCmdUI)
{
OnUpdateFileSave(pCmdUI);
}Wenn ich ein Button clicke dan muss das Save-Dialog erscheinen
Ich tippe den namen der datei ein und ok.Halt wie es bei Win üblich ist.Wie macht man so was?
Für Hilfe ein großen Dank..
Grüße Can
-
da benutzt du einen CFileDialog:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmfc98/html/_mfc_cfiledialog.asp
-
Hallo Frauke2k
Danke für deine Antwort.. ich bin programmier-anfänger mit 40

Kann leider kein Englisch

-
hm ach so. also, erstell zuerst ein Dialogobjekt:
CFileDialog dlg(TRUE); //Datei öffnen //oder: CFileDialog dlg(FALSE); //Datei speichern dlg.DoModal(); //Dialog starten CString pfad=dlg.GetPathName(); //Gesamten Dateinamen mit Pfad CString dateiname=dlg.GetFileName(); //Nur Dateiname
-
Hallo Frauke2k
Danke!! es Funktioniert wenn ich es mit einem Button Mache.
Aber wenn diese bedingung eintrifft Funktioniert es nicht!
void CMaxMidiProtoDlg::SMF(LPMIDIEVENT pMsg)
{if(pMsg->status==0x9f && pMsg->data2!=0 && pMsg->data1== 48)
{
CFileDialog dlg(TRUE);
dlg.DoModal();
}}
wenn ich die Taste 48 drücke wird pMsg gesendet.Die status wert usw
kommen auch an. Aber das dlg erscheint nicht wie bei einem Button click.was mache ich da was Falsch?
-
hm da kenn ich mich ned so wirklich aus.
ich empfehle dir, dass du einfach mal den code umstellst:void CMaxMidiProtoDlg::SMF(LPMIDIEVENT pMsg) { if( pMsg->status==0x9f && pMsg->data2!=0 && pMsg->data1== 48) { CFileDialog dlg(TRUE); int i=dlg.DoModal(); } }bei der "if(" zeile einen Haltepunkt (F9) erstellst
und dann DEBUG startest (F5)
dann mit F10 jeden schritt einzeln ausführen, dann siehst du, was nocht stimmt und welche Werte die Variablen haben.
Wenn i <0 ist, dann hat irgendwas mit dem Dialog ned funktioniert...
-
Frauke2k
vielen hetzlichen dank für deine hilfe !!
habs hin bekommen.Grüße Can
-
kein problem, helfe doch gerne
