ホーム > カテゴリ > Visual Basic >

音楽、動画プレビュー付き「ファイルを保存」ダイアログを表示する

音楽、動画プレビュー付き「ファイルを保存」ダイアログを表示するサンプルです。

サンプルの実行画面

APIの宣言

[SaveDlgPw.bas]

'--------------------------------------------------------------------------
'音楽、動画プレビュー機能付き「ファイルの保存」コモンダイヤログを表示するAPI関数
'--------------------------------------------------------------------------
'
'<引数>  pOpenfilename:OPENFILENAME
'<戻り値> OKボタンを押した時1、キャンセルボタンを押した時0

Public Declare Function GetSaveFileNamePreview Lib "msvfw32.dll" Alias "GetSaveFileNamePreviewA" (pOpenfilename As OPENFILENAME) As Long

'OPENFILENAME構造体
Public Type OPENFILENAME
    lStructSize As Long             '構造体のサイズ
    hwndOwner As Long               'ウインドウのハンドル
    hInstance As Long               'インスタンスハンドル
    lpstrFilter As String           'フィルター
    lpstrCustomFilter As String     'カスタムフィルター
    nMaxCustFilter As Long          'カスタムフィルターのサイズ
    nFilterIndex As Long            'フィルタのインデックス
    lpstrFile As String             'ファイル名のバッファ
    nMaxFile As Long                'ファイル名のバッファのサイズ
    lpstrFileTitle As String        'フルパス用のバッファ
    nMaxFileTitle As Long           'フルパス用のバッファのサイズ
    lpstrInitialDir As String       'ディレクトリを指定
    lpstrTitle As String            'ダイヤログボックスのタイトル
    flags As Long                   '定数(OFN_××参照)
    nFileOffset As Integer          'フルパスの中のファイル名までのオフセット
    nFileExtension As Integer       '拡張子までのオフセット
    lpstrDefExt As String           'デフォルトの拡張子
    lCustData As Long               'lpfnHookで渡すデータ
    lpfnHook As Long                'フック関数のポインタ
    lpTemplateName As String        'テンプレート名
End Type


Public Const OFN_ALLOWMULTISELECT = &H200       '複数ファイルを選択可能にする
Public Const OFN_CREATEPROMPT = &H2000          '指定のファイル名が存在しない時にメッセージボックスを表示
Public Const OFN_FILEMUSTEXIST = &H1000         '存在しないファイル名は入力不可
Public Const OFN_HIDEREADONLY = &H4             '読み取り専用のチェックボックスを非表示
Public Const OFN_NOCHANGEDIR = &H8              '他のサブディレクトリから選択不可
Public Const OFN_NOREADONLYRETURN = &H8000      '読み込み専用ファイルと書きこみ禁止ディレクトリの選択不可
Public Const OFN_NOVALIDATE = &H100             'ファイル名の有効性をチェックしない
Public Const OFN_OVERWRITEPROMPT = &H2          '既存のファイル名を指定した時にメッセージを出す
Public Const OFN_PATHMUSTEXIST = &H800          '有効なパスだけをうけつける
Public Const OFN_READONLY = &H1                 '読み取り専用のチェックボックスをチェック
Public Const OFN_SHOWHELP = &H10                'ヘルプボタンを表示
'-----------------------------------------------------------------------------------
'■関数名    SavePreviewDlg
'■用途         音楽、動画プレビュー機能付き「ファイルの保存」コモンダイヤログを表示する
'■引数         nHandle:ウインドウのハンドル、nFilter:フィルター
'■戻り値       ファイルを選択した場合そのファイルのパス名、キャンセルを押した場合""が戻る
'-----------------------------------------------------------------------------------
Public Function SavePreviewDlg(nHandle As Long, nFilter As String) As String

  Dim OFN As OPENFILENAME                       'OPENFILENAME構造体
  Dim Ret As Long                               '戻り値

    With OFN                                    '構造体の設定
         .flags = OFN_PATHMUSTEXIST Or _
                  OFN_FILEMUSTEXIST Or _
                  OFN_HIDEREADONLY Or _
                  OFN_OVERWRITEPROMPT
                 'Or OFN_SHOWHELP
         .hInstance = App.hInstance             'インスタンスハンドルを設定
         .hwndOwner = nHandle                   'ウインドウハンドルを設定
         .lpstrTitle = "ファイルを保存する"      'タイトルを設定
         .lpstrFilter = nFilter                 'フィルターを設定
         .lStructSize = Len(OFN)                '構造体のサイズを設定
         .nMaxFile = 250                        'ファイル名のバッファサイズを設定
         .lpstrFileTitle = String(250, Chr(0))  'フルパス用のバッファを確保
         .nMaxFileTitle = 250                   'フルパス用のバッファサイズを設定
         .lpstrFile = String(250, Chr(0))       'ファイル名のバッファを確保
        '.lpstrInitialDir = CurDir              'デフォルトのディレクトリを指定
    End With
    
     Ret = GetSaveFileNamePreview(OFN)

    If Ret = 0 Then
       SavePreviewDlg = vbNullString
    Else
       SavePreviewDlg = OFN.lpstrFile           'パスを取得
    End If

End Function

APIの呼び出し

[SaveDlgPw.frm]

Private Sub Command1_Click()

Dim nFilter As String
Dim Ret As String

 Text1.Text = ""

'フィルターの設定
 nFilter = "WAVEファイル(*.wav)" & Chr(0) & "*.wav" & Chr(0) & _
           "MIDIファイル(*.mid)" & Chr(0) & "*.mid" & Chr(0) & _
           "AVIファイル(*.avi)" & Chr(0) & "*.avi" & Chr(0)

 Ret = SavePreviewDlg(Form1.hWnd, nFilter)
     
 Text1.Text = Ret
  
End Sub

Private Sub Form_Load()
  Text1.Text = ""
End Sub

ソースコード一式のダウンロード

vbapi_savedlgpw.zip 2.97 KB (3,044 バイト)

このサンプルの動作環境について

このサンプルは 「Windows98」及び「Microsoft Visual Basic 5.0 Professional Edition」で確認しております。環境が異なる場合は正常に動作しない場合もございますのでご了承下さい。





関連記事



公開日:2015年03月03日
記事NO:00327


この記事を書いた人

💻 ITスキル・経験
サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。

画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ
プチモンテ代表、アーティスト名:プチモンテ
🎵 音楽制作
BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~

オリジナル曲を始めました✨

YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte

【男性ボーカル】DA・KA・RA | 新たな明日が風と共に訪れる

【男性、女性ボーカル】時空を超越する先に | 時空と風の交響曲

【女性、男性ボーカル】絆 | 穏やかな心に奏でる旋律