title: (Save Dialog) How to change file extension automatically on file filter change in Vista/Win7?
body: <p>While showing a save dialog, I want to hook user's filter type change and change file extension automatically. (e.g. like MSPaint's "Save As" operation.)</p>
  
  <p>With TSaveDialog and setting UseLatestCommonDialogs := False, 
  I can handle this by the following code. (without latest common dialog support, of cource.)</p>
  
  <pre><code>procedure TForm1.SaveDialog1TypeChange(Sender: TObject);
  var
    FName, Ext: string;
  begin
    with TSaveDialog(Sender) do
    begin
      if DirectoryExists(FileName) then // FileName is Empty
        exit;
      case FilterIndex of
      1: Ext := '.png';
      2: Ext := '.bmp';
      3: Ext := '.jpg';
      end;
      FName := ChangeFileExt(ExtractFileName(FileName), Ext);
      SendMessage(Windows.GetParent(Handle), CDM_SETCONTROLTEXT, 1152, LongInt(PChar(FName)));
    end;
  end;
  </code></pre>
  
  <p>I want to support both XP, and vista/7 with Delphi 2007.</p>
  
  <p>Should I use TFileSaveDialog instead of TSaveDialog with internal wrapper ?
  (And I have to struggle with COM programming using <a href="http://akirabbq.spaces.live.com/blog/cns!CEB8A04DC43BCEE9!283.entry" rel="noreferrer">IFileDialogControlEvents</a> ?)</p>
  
  <p>Or can I achieve this with TFileSaveDialog and it's standard properties only ?
  (My development environment is still on XP machine, so I've never tried. sorry.)</p>
  
  <p>I think it's very common task, but I couldn't find any sample code supporting Vista/7...</p>