/**************/ /* filename.h */ /**************/ #ifndef FILENAME_H #define FILENAME_H #include "incwin.h" #define OLDNAMES "OldNames" #define CALLBACK_E CALLBACK _export #ifdef __cplusplus extern "C" { #endif typedef int (*LPFNFILE)(struct FileTypeS *); typedef struct FileTypeS{ char Name[128]; /* Tiedoston nimi, aluksi "" */ char Title[40]; /* Ikkunan otsikko, jonka perään tied.nimi */ int Type; /* Luetun funktion tyyppi, ks. szFilter */ char szFilter[256]; /* Tunnetut tiedosto-tyypit */ int changed; /* Onko tiedostoa muutettu. */ LPFNFILE MySave; /* Osoitin talletusfunktioon */ LPFNFILE MyRead; /* Osoitin lukufunktioon */ LPFNFILE MyNew; /* Osoitin tiedon nollausfunktioon */ FAR VOID *data; /* Osoitin varsinaiseen dataan */ WPARAM id; /* Mahdollinen DATA-olion id, esim EDIT-ik.*/ HWND hWnd; /* Ikkunan kahva, joka käsittelee tiedon */ } FileType; int Changed(FileType *File); int AskFileName(HWND hwnd,int save,FileType *File); int SaveFile(HWND hWnd,FileType *File); int SaveFileAs(HWND hWnd,FileType *File); int SaveFileIfChanged(HWND hWnd,FileType *File,int ClearName); int OpenAndReadFile(HWND hWnd,FileType *File); int OpenFileNr(HWND hWnd,FileType *File,int nr); int OpenLastFile(HWND hWnd,FileType *File,const char *); int OpenFileName(HWND hWnd,FileType *File,const char *name); int NewFile(HWND hWnd,FileType *File); int ExitFile(HWND hWnd,FileType *File,const char *); int MySave(FileType *File); int MyRead(FileType *File); int MyNew(FileType *File); int SaveOldFilenames(HWND hWnd,const char *ini); int RestoreOldFilenames(HWND hWnd,const char *ini); #define FILE_EVENTS(File,DoClose,IniName) \ static EVENT WM_command_CM_FILENEW(tMSGParam *msg) \ { \ return NewFile(msg->hWnd,&File); \ } \ \ static EVENT WM_command_CM_FILEOPEN(tMSGParam *msg) \ { \ return OpenAndReadFile(msg->hWnd,&File); \ } \ \ static EVENT WM_command_CM_FILESAVEAS(tMSGParam *msg) \ { \ return SaveFileAs(msg->hWnd,&File); \ } \ \ static EVENT WM_command_CM_FILESAVE(tMSGParam *msg) \ { \ return SaveFile(msg->hWnd,&File); \ } \ \ static EVENT WM_command_CM_FILEEXIT(tMSGParam *msg) \ { \ if ( ExitFile(msg->hWnd,&File,IniName) ) return 1; \ if ( DoClose ) return 1; \ return SendMessage(msg->hWnd,WM_DESTROY,0,0); \ } \ \ static EVENT WM_command_CM_FILEn(tMSGParam *msg) \ { \ return OpenFileNr(msg->hWnd,&File,msg->wParam-CM_FILE0); \ } \ #define EV_HANDLE_CM_FILE \ { WM_COMMAND , TRANGE, DoC , WM_command_CM_FILEn ,0, SAME_AS_W,CM_FILE0,CM_FILE9}, \ { WM_COMMAND , CM_FILENEW , DoC , WM_command_CM_FILENEW }, \ { WM_COMMAND , CM_FILEOPEN , DoC , WM_command_CM_FILEOPEN }, \ { WM_COMMAND , CM_FILESAVEAS , DoC , WM_command_CM_FILESAVEAS }, \ { WM_COMMAND , CM_FILESAVE , DoC , WM_command_CM_FILESAVE }, \ { WM_COMMAND , CM_FILEEXIT , DoC , WM_command_CM_FILEEXIT }, \ { WM_CLOSE , DoC, DoC , WM_command_CM_FILEEXIT }, \ { WM_ENDSESSION , DoC , DoC , WM_command_CM_FILEEXIT } #ifdef __cplusplus } #endif #endif /* FILENAME_H */