| This isn't very clean/tidy etc. as I cobbled it together in a bit of a hurry but here's the code I used in my Editor... 
 
 
String mpp_Load(int fileTypes )
{
    printf("MPPLoad()\n");
    TCHAR   szFile[MAX_PATH] = TEXT("\0");
    OPENFILENAME   ofn;
    HANDLE hFile = INVALID_HANDLE_VALUE;
    memset( &(ofn), 0, sizeof(ofn));
    switch (fileTypes)
    {
    case 0:
    default:
        ofn.lpstrFilter = TEXT("MPP Map File (*.mpp)\0*.mpp\0"); 
        ofn.lpstrDefExt = TEXT("mpp");  // 
        break;
    case 1:
        ofn.lpstrFilter = TEXT("png Image File (*.png)\0*.png\0");
        ofn.lpstrDefExt = TEXT("png");
        break;
    case 2:
        ofn.lpstrFilter = TEXT("TRG/MP1 SNES Map File(s) (*.TRG)\0*.TRG\0*.MP?\0");
        ofn.lpstrDefExt = TEXT("TRG");
        break;
    }
    
    ofn.lStructSize   = sizeof(ofn);
    ofn.hwndOwner = 0;  //hDlg;
    ofn.lpstrFile = szFile;
    ofn.nMaxFile = MAX_PATH;
    ofn.lpstrTitle = TEXT("Load File...");
    ofn.Flags = OFN_HIDEREADONLY; 
    //get the filename the user wants to Load to
    if (GetOpenFileName(&ofn)) 
    {
        // Display what we were about to Load...
        printf("Loading[%s]\n", ofn.lpstrFile);
        String txt = ofn.lpstrFile;
        return txt;
    }
    else
    {
        printf("Cancelled FILE Load\n");
    }
    return NULL;
}
void mpp_SaveAs(String dataText, String fileName)
{
    const char* pData = dataText.ToCString<char>();
    const char* pFileName = fileName.ToCString<char>();
    printf("MPPSaveAs(%s, %s)\n", pData, pFileName);
    TCHAR   szFile[MAX_PATH] = TEXT("\0");
    strcpy(szFile, (LPSTR)pFileName);
    OPENFILENAME   ofn;
    HANDLE hFile = INVALID_HANDLE_VALUE;
    
    memset( &(ofn), 0, sizeof(ofn));
    ofn.lStructSize   = sizeof(ofn);
    ofn.hwndOwner = 0;  //hDlg;
    ofn.lpstrFile = szFile;
    ofn.nMaxFile = MAX_PATH;
    ofn.lpstrFilter = TEXT("MPP Map File (*.mpp)\0*.mpp\0");   
    ofn.lpstrTitle = TEXT("Save File As");
    ofn.Flags = OFN_HIDEREADONLY; 
    ofn.lpstrDefExt = TEXT("mpp");
    //get the filename the user wants to save to
    if (GetSaveFileName(&ofn)) 
    {
        // Display what we were about to save...
        printf("Opening[%s]\n", ofn.lpstrFile);
        FILE* fp = fopen(ofn.lpstrFile, "wb+");
        if (fp!=NULL)
        {
            fwrite(pData, strlen(pData), 1, fp);
            fputc(0, fp);
            fclose(fp);
            printf("Success\n");
        }
        else
        {
            printf("Failed\n");
        }
    }
    else
    {
        printf("Cancelled FILE SAVEAS\n");
    }
}
int mpp_OpenFile(String s, String mode)
{
	FILE* fp=NULL;
	fp=fopen(s.ToCString<char>(), mode.ToCString<char>());
	return (int)fp;
}
void mpp_CloseFile(int fp)
{
	if((FILE *)fp)fclose((FILE *)fp);
}
void mpp_WriteFileInt(int fp,int i)
{
	fwrite(&i,sizeof(i),1,(FILE *)fp);
}
int mpp_FileRead(void* ptr, size_t size, size_t count, int stream)
{
	return fread(ptr, size, count, (FILE*)stream);
}
String mpp_FGets(int fp)
{
	int i=0;
    char pString[2048];
	fgets(pString, 2048, (FILE *)fp);
    String txt = pString;
	return txt;
}
 
 |