ComDlg32.ocx

نحوه نمايش OpenDialog بدون استفاده از comdlg32.ocx

براي نمايش OpenDialog‌ در ويژوال بيسيك بايد از Microsoft Common Dialog 6.0 يا همون comdlg32.ocx استفاده كرد. كه با اين حساب اگر برنامه اي نوشته باشيد كه توش از اين OCX استفاده شده باشه، وقتي به كسي كه ويژوال بيسيك نصب نكرده بدين، روی کامپيوترش اجرا نمیشه . براي حل اين مشكل مي تونيد از تابع GetOpenFileName استفاده كنيد.
مثال:

همانطور که می دانيد، برای نمايش دادن کادر FileOpen، بايد از کنترل CommonDialog استفاده کنيد. و اگر بخواهيد برنامه تان را برای کسی بفرستيد، بايد فايل ComDlg32.ocx رو هم براش بفرستين. ولی با استفاده از تابع GetOpenFileName، ميشه همين کار رو انجام داد بدون نياز به اين که از اين فايل استفاده کنيد. که با اين کار برنامه ی شما Portable تر خواهد شد.

اين كدها رو بريزيد توي يك Module:
 

 

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
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_ALLOWMULTISELECT = &H200
Public Const OFN_PATHMUSTEXIST = &H800
Public Const OFN_EXPLORER = &H80000

Public Declare Function GetOpenFileName Lib "comdlg32.dll" AliAs "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
 

حالا يه دكمه و يك Text‌بذارين و اين كدها رو توي فرم Paste كنيد:

 

Private Sub Command1_Click()
Dim Ofn As OPENFILENAME
Dim N1 As Long
With Ofn
.hInstance = App.hInstance
.hwndOwner = Form1.hWnd
.lpstrInitialDir = "C:\"
.lStructSize = Len(Ofn)
.lpstrFilter = "exe files" & vbNullChar & "*.exe" & vbNullChar & "All Files" & vbNullChar & "*.*"
.nFilterIndex = 0
.nMaxCustFilter = 1
.flags = OFN_FILEMUSTEXIST Or OFN_PATHMUSTEXIST Or OFN_EXPLORER
.lpstrFile = Space(256)
.nMaxFile = Len(.lpstrFile)
End With
N1 = GetOpenFileName(Ofn)
Text1.Text = Ofn.lpstrFile

End Sub


 

 

 

  
نویسنده : محمد ; ساعت ٤:٠۸ ‎ب.ظ روز دوشنبه ۱٢ آبان ،۱۳۸٢