Blog

[VB] 파일 열기, 저장 다이알로그 API

최고관리자 0 1,132

K-1.jpg

 

 

 

이런 다이알로그박스를 띄울 수 있는 API를 좀더 사용하기 쉽게 만든 모듈입니다.

 

'--- 바람개비(cjh9217)
'--- http://blog.naver.com/cjh9217

Private 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
    nFileOffset As Integer
    nFileExtension As Integer
    lpstrDefExt As String
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type

Private Const MAX_PATH = 256&

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Declare Function GetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) As Long

'### 형식 및 인자설명 ##########################################################

'-- IsSaveMode   : True이면 파일 저장, False이면 파일 열기 다이알로그 생성
'-- HwndOwner    : 다이알로그박스를 소유할 핸들(0이면 바탕화면)
'-- hInstance    : App.hInstance
'-- Filter       : 필터의 형식
'                  ex) 모듈 파일(*.bas)|*.bas|모든파일(*.*)|*.*
'-- DlgTitle     : 선택적 인수. 다이알로그박스 타이틀바의 제목
'-- initDir      : 선택적 인수. 맨 처음 초기화될 경로
'
'-- Return       : 선택한 파일의 경로를 반환. 취소를 누르면 vbNullString 반환


'###############################################################################

Public Function OpenFileDlg(ByVal IsSaveMode As Boolean, _
                            ByVal HwndOwner As Long, _
                            ByVal hInstance As Long, _
                            ByVal Filter As String, _
                            Optional ByVal DlgTitle As String = "파일 선택", _
                            Optional ByVal initDir As String = "C:\" _
                            ) As String
                           
    Dim OFN As OPENFILENAME
   
    With OFN
        .lStructSize = Len(OFN)
        .HwndOwner = HwndOwner
        .hInstance = hInstance
       
        .lpstrFilter = Replace$(Filter, "|", vbNullChar) & vbNullChar
       
        .lpstrFile = Space$(MAX_PATH - 1)
        .nMaxFile = MAX_PATH
       
        .lpstrFileTitle = Space$(MAX_PATH - 1)
        .nMaxFileTitle = MAX_PATH
       
        .lpstrInitialDir = initDir
        .lpstrTitle = DlgTitle
    End With
   
    If issavemdoe Then
        If GetSaveFileName(OFN) Then
            OpenFileDlg = Split(OFN.lpstrFile, vbNullChar, 2)(0)
        End If
    Else
        If GetOpenFileName(OFN) Then
            OpenFileDlg = Split(OFN.lpstrFile, vbNullChar, 2)(0)
        End If
    End If

End Function

 

  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기
  • 카카오스토리로 보내기
  • 네이버밴드로 보내기
  • 네이버로 보내기
  • 텀블러로 보내기
  • 핀터레스트로 보내기

Comments

27 08, 2015

테스트

최고관리자 | 댓글 0 | 조회 1,113 | 추천 0