B
ein Problem habe ich noch und zwar wie kann ich es ermöglichen das im Menü Save_As bei der Auswahl der Dateiendung nur die ShellExecute aufgerufen wird wenn man als Endung .mkr einstellt zurzeit öffnet sich Shell Execute sobald man auf speichern drückt bei allen Endungen
Auswahl Code
extern bool InitDateimenueSave (ProgrammInformation *info,OPENFILENAME *Dateiname,bool ismakroprojekt)
{
static TCHAR szFilter[] = TEXT("EX_PRESS - Dateien (*.FUP)\0*.FUP\0") \
TEXT("MAKRO - Dateien (*.MKR)\0*.MKR\0") \
TEXT("Alle Dateien (*.*)\0*.*\0\0");
static TCHAR szFilterMakro[] = TEXT("MAKRO - Dateien (*.MKR)\0*.MKR\0") \
TEXT("Alle Dateien (*.*)\0*.*\0\0");
(*Dateiname).lStructSize = sizeof(OPENFILENAME);
// (*Dateiname).lStructSize = sizeof(*Dateiname);
(*Dateiname).hwndOwner = (*info).handles.Hauptfenster;
(*Dateiname).hInstance = (*info).hInstance;
if (!ismakroprojekt)
(*Dateiname).lpstrFilter = szFilter;
else
(*Dateiname).lpstrFilter = szFilterMakro;
// (*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_PATHMUSTEXIST | OFN_CREATEPROMPT;
(*Dateiname).nFileOffset = 0;
(*Dateiname).nFileExtension = 0;
if (!ismakroprojekt)
(*Dateiname).lpstrDefExt = TEXT("FUP");
else
(*Dateiname).lpstrDefExt = TEXT("MKR");
(*Dateiname).lCustData = 0L;
(*Dateiname).lpfnHook = NULL;
(*Dateiname).lpTemplateName = NULL;
return true;
};
und jetzt der code zum save as Aufruf
case ID_FILE_SAVE_AS :
{
//Dialog zum Speichern aufrufen
InitDateimenueSave(&Programminfo,&DateiMenue,ismakroprojekt);
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;
ShellExecute(hwnd ,NULL,"C:\\test.exe",NULL, NULL, SW_HIDE);
}
else
{
// MeldeFehler(CommDlgExtendedError());
}
return 0;
};