PDA

View Full Version : انتخاب عکس برای دکمه ها



masoud17
دوشنبه 12 بهمن 1388, 21:42 عصر
من میخوام برای دکمه هام از این علامت ها استفاده کنم ضربدر،چاپگرو...مثل اینایی که توی این عکس است البته اینا مال ویندوز که از اونجایی که میشه عکس برای فولدر انتخاب کرد انتخاب کردم حالا من از کجا میتونم این عکس ها را پیدا کنم توی اینترنت هم گشتم پیدا نکردم نمیشه از همین عکسای ویندوز استفاده کنم اگه میشه چطوری من که پیدا نکردم
مثل آيكون هاي اين عكس

javadt
دوشنبه 12 بهمن 1388, 23:25 عصر
http://www.barnamenevis.org/forum/showthread.php?t=72361&highlight=%D8%A2%DB%8C%DA%A9%D9%88%D9%86

lordarma
سه شنبه 13 بهمن 1388, 00:40 صبح
اینا توی SHELL32.dll ذخیره شده اند،
آدرس: C:\Windows\system32\SHELL32.dll

masoud17
سه شنبه 13 بهمن 1388, 10:50 صبح
اینا توی SHELL32.dll ذخیره شده اند،
آدرس: C:\Windows\system32\SHELL32.dll

سلام خودم ميدونستم در كجا قرار داد ولي چطور توي برنامه از اين عكسا استفاده كنم چون اينا به صورت SHELL32.dll هستند؟

lordarma
سه شنبه 13 بهمن 1388, 12:50 عصر
اول اینکه می تونی این آیکون ها رو توسط برنامه ای مثل Resource Hacker جدا کنی و دوم اینکه به طور مستقیم این آیکون ها رو از DLL بخونی،
من کد قسمت دوم رو در حال حاضر بلد نیستم، اگر صبر کنی می تونم برات آماده اش کنم...
موفق باشی

butterfly8528
چهارشنبه 14 بهمن 1388, 01:36 صبح
سلام دوستان عزیز

روش استفاده از تصاویر درون dll ها :

این کد هارو داخل یک ماژول بریزید :


' in module

Option Explicit


Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type
Private Type PicBmp
Size As Long
Type As Long
hBmp As Long
hPal As Long
Reserved As Long
End Type




Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long
Private Declare Function LoadBitmap Lib "user32" Alias "LoadBitmapA" (ByVal hInstance As Long, ByVal lpBitmapID As Long) As Long
Private Declare Function Delete Lib "gdi32" (ByVal h As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long




Public Function LoadPicture(sResourceFileName As String, lResourceId As Long) As Picture
Dim hInst As Long
Dim hBmp As Long
Dim Pic As PicBmp
Dim IPic As IPicture
Dim IID_IDispatch As GUID
Dim lRC As Long
hInst = LoadLibrary(sResourceFileName)
If hInst <> 0 Then
hBmp = LoadBitmap(hInst, lResourceId)
If hBmp <> 0 Then
IID_IDispatch.Data1 = &H20400
IID_IDispatch.Data4(0) = &HC0
IID_IDispatch.Data4(7) = &H46
Pic.Size = Len(Pic)
Pic.Type = vbPicTypeBitmap
Pic.hBmp = hBmp
Pic.hPal = 0
lRC = OleCreatePictureIndirect(Pic, _
IID_IDispatch, 1, IPic)
If lRC = 0 Then
Set LoadPicture = IPic
Set IPic = Nothing
Else
Call Delete(hBmp)
End If
End If
Call FreeLibrary(hInst)
hInst = 0
End If
End Function



و این هم نحوه استفاده :



Private Sub Form_Load()
Set Me.Picture = LoadPicture("shell32.dll", 131)
End Sub

موفق باشید .

masoud17
چهارشنبه 14 بهمن 1388, 10:19 صبح
سلام دوستان عزیز

روش استفاده از تصاویر درون dll ها :

این کد هارو داخل یک ماژول بریزید :


' in module

Option Explicit


Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type
Private Type PicBmp
Size As Long
Type As Long
hBmp As Long
hPal As Long
Reserved As Long
End Type




Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long
Private Declare Function LoadBitmap Lib "user32" Alias "LoadBitmapA" (ByVal hInstance As Long, ByVal lpBitmapID As Long) As Long
Private Declare Function Delete Lib "gdi32" (ByVal h As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long




Public Function LoadPicture(sResourceFileName As String, lResourceId As Long) As Picture
Dim hInst As Long
Dim hBmp As Long
Dim Pic As PicBmp
Dim IPic As IPicture
Dim IID_IDispatch As GUID
Dim lRC As Long
hInst = LoadLibrary(sResourceFileName)
If hInst <> 0 Then
hBmp = LoadBitmap(hInst, lResourceId)
If hBmp <> 0 Then
IID_IDispatch.Data1 = &H20400
IID_IDispatch.Data4(0) = &HC0
IID_IDispatch.Data4(7) = &H46
Pic.Size = Len(Pic)
Pic.Type = vbPicTypeBitmap
Pic.hBmp = hBmp
Pic.hPal = 0
lRC = OleCreatePictureIndirect(Pic, _
IID_IDispatch, 1, IPic)
If lRC = 0 Then
Set LoadPicture = IPic
Set IPic = Nothing
Else
Call Delete(hBmp)
End If
End If
Call FreeLibrary(hInst)
hInst = 0
End If
End Function



و این هم نحوه استفاده :



Private Sub Form_Load()
Set Me.Picture = LoadPicture("shell32.dll", 131)
End Sub

موفق باشید .


اين كدهايي كه شما گذاشتيد را امتحان كردم ولي فقط 2تا عكس را از بين اين همه عكس نشون ميده من ميخوام مثلا عكس 50را نشون بده ولي نميده فقط 130و131ونشون ميده چيكار كنم كه همه را نشون بده.