• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

[VB6]Tạo Aero Glass cho Form

Các thủ thuật liên quan đến việc xử lý ứng dụng, biểu mẫu và control
Hình đại diện của người dùng
DQHung
Guru
Guru
Bài viết: 576
Ngày tham gia: T.Hai 12/02/2007 3:24 pm
Đến từ: Rach Gia - Kien Giang
Been thanked: 40 time
Liên hệ:

[VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi DQHung » T.Năm 13/08/2009 11:36 pm

Thủ thuật: Tạo Aero Glass cho Form và biết khi nào Aero glass Enable
Tác giả: DQHung
Mô tả: Làm cho Form có giao diện aero glass khi Windows Vista - 7 có sử dụng giao diện Aero, và kiểm tra xem Windows có chạy Aero glass không



Thanks vo_minhdat2007 đã góp thêm hàm DwmIsCompositionEnabled.

ScreenShot :
VB6Aero.jpg
Aero Glass trong Form VB6


Mã: Chọn hết

  1. Private Type MARGINS
  2.   Left As Long
  3.   Right As Long
  4.   Top As Long
  5.   Bottom As Long
  6. End Type
  7.  
  8. Private Declare Function DwmExtendFrameIntoClientArea Lib "dwmapi.dll" (ByVal hwnd As Long, margin As MARGINS) As Long
  9. Private Declare Function DwmIsCompositionEnabled Lib "dwmapi" (ByRef pfEnabled As Long) As Long  'Hàm này kie^?m tra xem
  10.                                                                                                                                        'Aero Glass có enable hay ko
  11. Private Sub Form_Load()
  12.     On Error GoTo Nodwmapi
  13.     Dim GlassEnable As Long
  14.     DwmIsCompositionEnabled GlassEnable
  15.     If CBool(GlassEnable) Then  '
  16.         Dim m As MARGINS
  17.         Me.BackColor = vbBlack
  18.         m.Bottom = ScaleWidth / 2
  19.         m.Top = ScaleHeight / 2
  20.         m.Right = ScaleHeight / 2
  21.         m.Left = ScaleWidth / 2
  22.         DwmExtendFrameIntoClientArea hwnd, m
  23.     End If
  24.     Me.Caption = "Aero Glass is " & CBool(GlassEnable)
  25.     Exit Sub
  26. Nodwmapi:
  27.     Me.Caption = "Aero Glass is False"
  28. End Sub
Sửa lần cuối bởi DQHung vào ngày T.Hai 17/08/2009 10:22 pm với 2 lần sửa.



Hình đại diện của người dùng
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 319
Ngày tham gia: T.Tư 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 time

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi hdn » T.Sáu 14/08/2009 7:13 am

tưởng đâu có cả Aero cho các máy xài win XP chứ cái này thì xài thư viện sẵn có của vista/win7 thôi mà :|
cái này mà đem qua XP là húp cháo ngay 8-}
:|

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi vo_minhdat2007 » T.Sáu 14/08/2009 11:44 am

hdn đã viết:tưởng đâu có cả Aero cho các máy xài win XP chứ cái này thì xài thư viện sẵn có của vista/win7 thôi mà :|
cái này mà đem qua XP là húp cháo ngay 8-}

Sai, Windows XP soft vẫn chạy ngon, mặc dù không có hiệu ứng!

Edit : Dùng BackColor của Form là Black thì mới có tác dụng!

Hình đại diện của người dùng
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 319
Ngày tham gia: T.Tư 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 time

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi hdn » T.Sáu 14/08/2009 12:03 pm

thế thì chạy làm gì :|
:|

Hình đại diện của người dùng
DQHung
Guru
Guru
Bài viết: 576
Ngày tham gia: T.Hai 12/02/2007 3:24 pm
Đến từ: Rach Gia - Kien Giang
Been thanked: 40 time
Liên hệ:

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi DQHung » T.Sáu 14/08/2009 9:37 pm

Có rất nhiều soft hiện nay dùng Aero glass (ví dụ Nero) để trang trí cho form của mình vậy mà bạn lại bảo chạy làm gì !

Hình đại diện của người dùng
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 319
Ngày tham gia: T.Tư 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 time

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi hdn » T.Bảy 15/08/2009 7:01 am

nói vậy thôi :)) bỏ bụng làm gì :D
cũng cám ơn bác đã chia sẽ =D>
:|

Hình đại diện của người dùng
andylam1992
Thành viên danh dự
Thành viên danh dự
Bài viết: 380
Ngày tham gia: T.Hai 06/04/2009 12:57 pm
Đến từ: TP.HCM Q5
Has thanked: 2 time
Been thanked: 4 time
Liên hệ:

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi andylam1992 » T.Bảy 15/08/2009 2:18 pm

Ủa sao em download cái dll trên về, past vô system32, registry không được"the libary could not be load", em dùng xp2. vậy cái thủ thuật trẹn không xài được cho xp à? Hay là file dll em down về bị lỗi. Anh up file dll len dc không?

不相信未作牺牲竟先可拥有
只相信是靠双手找到我欲求
Cần - Kiệm- Liêm(liêm kiết) - Nghĩa - Chí - Tín

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi vo_minhdat2007 » T.Bảy 15/08/2009 3:26 pm

Cái này có DLL nào đâu :-/ . Toàn code mà?

Hình đại diện của người dùng
thuongall
Quản trị
Quản trị
Bài viết: 455
Ngày tham gia: T.Tư 26/01/2005 8:05 am
Đến từ: Quê hương Đồng Khởi
Been thanked: 9 time
Liên hệ:

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi thuongall » T.Bảy 15/08/2009 3:49 pm

Cái dwmapi.dll đó.
vo_minhdat2007 đã viết:
hdn đã viết:tưởng đâu có cả Aero cho các máy xài win XP chứ cái này thì xài thư viện sẵn có của vista/win7 thôi mà :|
cái này mà đem qua XP là húp cháo ngay 8-}

Sai, Windows XP soft vẫn chạy ngon, mặc dù không có hiệu ứng!

Ủa:
image001.png
image001.png (6.79 KiB) Đã xem 7347 lần

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi vo_minhdat2007 » T.Bảy 15/08/2009 4:27 pm

Em tưởng code này convert từ bài này :-?
http://www.caulacbovb.com/forum/viewtop ... =56&t=8807

Nếu giống như VB.NET thì khi chạy trên XP không báo lỗi (em test rồi) :(

Hình đại diện của người dùng
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 319
Ngày tham gia: T.Tư 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 time

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi hdn » T.Bảy 15/08/2009 6:38 pm

=)) hình như dwmapi.dll chỉ có từ win vista và 7 trở lên thôi :)) nói rồi ko nghe
mà code nào cũng thế thôi :| ku đạt xài vista mà :-?
:|

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi vo_minhdat2007 » T.Bảy 15/08/2009 6:51 pm

Trước khi xài Windows 7 em đã dùng đoạn code trên VB.NET trên Windows XP. Chương trình vẫn chạy bình thường nhưng không có Windows Glass thôi :(

Hình đại diện của người dùng
thuongall
Quản trị
Quản trị
Bài viết: 455
Ngày tham gia: T.Tư 26/01/2005 8:05 am
Đến từ: Quê hương Đồng Khởi
Been thanked: 9 time
Liên hệ:

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi thuongall » T.Bảy 15/08/2009 9:09 pm

Để chạy trên WinXP không bị lỗi thì check OS:

Mã: Chọn hết

  1. Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As Long
  2. Private Type OSVERSIONINFO
  3.     dwOSVersionInfoSize As Long
  4.     dwMajorVersion As Long
  5.     dwMinorVersion As Long
  6.     dwBuildNumber As Long
  7.     dwPlatformId As Long
  8.     szCSDVersion As String * 128
  9. End Type
  10.  
  11. Private Declare Function DwmExtendFrameIntoClientArea Lib "dwmapi.dll" (ByVal hWnd As Long, margin As MARGINS) As Long
  12. Private Type MARGINS
  13.     Left As Long
  14.     Right As Long
  15.     Top As Long
  16.     Bottom As Long
  17. End Type
  18.  
  19. Private Sub Form_Load()
  20.     Dim myOS As OSVERSIONINFO
  21.     myOS.dwOSVersionInfoSize = Len(myOS)
  22.     GetVersionEx myOS
  23.     If myOS.dwMajorVersion >= 6 Then
  24.         Dim m As MARGINS
  25.         Me.BackColor = vbBlack
  26.         m.Bottom = ScaleWidth / 2
  27.         m.Top = ScaleHeight / 2
  28.         m.Right = ScaleHeight / 2
  29.         m.Left = ScaleWidth / 2
  30.         DwmExtendFrameIntoClientArea hWnd, m
  31.     End If
  32. End Sub

Hình đại diện của người dùng
vo_minhdat2007
Quản trị
Quản trị
Bài viết: 2227
Ngày tham gia: CN 17/07/2005 1:40 am
Has thanked: 13 time
Been thanked: 87 time
Liên hệ:

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi vo_minhdat2007 » T.Hai 17/08/2009 5:16 pm

OK, em tìm được code xác định có dùng Aero không rồi, ai biết dịch qua VB6 nha :D

viewtopic.php?f=51&t=8857&start=0

Hình đại diện của người dùng
DQHung
Guru
Guru
Bài viết: 576
Ngày tham gia: T.Hai 12/02/2007 3:24 pm
Đến từ: Rach Gia - Kien Giang
Been thanked: 40 time
Liên hệ:

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi DQHung » T.Hai 17/08/2009 10:24 pm

OK, thank đạt nhé, mình dịch qua code VB6 rồi đó.

hocvatly
Thành viên chính thức
Thành viên chính thức
Bài viết: 43
Ngày tham gia: T.Ba 29/06/2010 8:47 am
Has thanked: 2 time

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi hocvatly » T.Tư 28/07/2010 5:20 pm

Mình thấy code tạo giao diện form rất hay. Nhưng code dài quá, nếu form nào cũng dán code như vậy thì chương trình rất dài và rườm rà. Có cách nào đưa các code này thành file dll để sử dụng cho tiện không vậy?

Hình đại diện của người dùng
DQHung
Guru
Guru
Bài viết: 576
Ngày tham gia: T.Hai 12/02/2007 3:24 pm
Đến từ: Rach Gia - Kien Giang
Been thanked: 40 time
Liên hệ:

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi DQHung » T.Tư 28/07/2010 8:40 pm

Thì cho mấy cái API vào module rồi tự chế ra hàm, chỉ cần gọi lại hàm đó trong form là đc. Cần gì cho vào dll ?

hocvatly
Thành viên chính thức
Thành viên chính thức
Bài viết: 43
Ngày tham gia: T.Ba 29/06/2010 8:47 am
Has thanked: 2 time

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi hocvatly » T.Năm 29/07/2010 8:20 am

Anh có thể ví dụ dùm em được không? Em mới học VB nên chưa rành lắm. Xin cảm ơn anh.

Hình đại diện của người dùng
DQHung
Guru
Guru
Bài viết: 576
Ngày tham gia: T.Hai 12/02/2007 3:24 pm
Đến từ: Rach Gia - Kien Giang
Been thanked: 40 time
Liên hệ:

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi DQHung » T.Năm 29/07/2010 8:43 pm

Cho tất cả code sau vào module :
  1. Private Type MARGINS
  2.   Left As Long
  3.   Right As Long
  4.   Top As Long
  5.   Bottom As Long
  6. End Type
  7.  
  8. Private Declare Function DwmExtendFrameIntoClientArea Lib "dwmapi.dll" (ByVal hWnd As Long, margin As MARGINS) As Long
  9. Private Declare Function DwmIsCompositionEnabled Lib "dwmapi" (ByRef pfEnabled As Long) As Long 'Hàm này kie^?m tra xem
  10.                                                                                                                                      'Aero Glass có enable hay ko
  11. Public Function LoadAero(ByVal hWnd As Long, ByVal lLeft As Long, ByVal lTop As Long, ByVal lRight As Long, ByVal lBottom As Long) As Boolean
  12.     On Error GoTo Nodwmapi
  13.     Dim GlassEnable As Long
  14.     DwmIsCompositionEnabled GlassEnable
  15.     If CBool(GlassEnable) Then '
  16.        Dim m As MARGINS
  17.         m.Bottom = lBottom
  18.         m.Top = lTop
  19.         m.Right = lRight
  20.         m.Left = lLeft
  21.         DwmExtendFrameIntoClientArea hWnd, m
  22.     End If
  23.     LoadAero = CBool(GlassEnable)
  24.     Exit Function
  25. Nodwmapi:
  26.     LoadAero = False
  27. End Function


Rồi vô form cứ gọi hàm LoadAero là xong.

Hình đại diện của người dùng
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Bài viết: 1259
Ngày tham gia: T.Năm 03/06/2010 9:23 pm
Đến từ: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 time
Been thanked: 138 time
Liên hệ:

Re: [VB6]Tạo Aero Glass cho Form

Gửi bàigửi bởi VuVanHoanh » CN 29/08/2010 8:49 am

Hức, vậy là phải dùng thêm thư viện dwmapi.dll Nhưng máy em XP nên không có
Up file dwmapi.dll bản mới nhất lên cho bọn em down
Since 2008...
One love! :x


Quay về “[VB] Ứng dụng - Form và Control”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách