• 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
User avatar
DQHung
Guru
Guru
Posts: 576
Joined: Mon 12/02/2007 3:24 pm
Location: Rach Gia - Kien Giang
Been thanked: 40 times
Contact:

[VB6]Tạo Aero Glass cho Form

Postby DQHung » Thu 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


Code: Select all

  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
Last edited by DQHung on Mon 17/08/2009 10:22 pm, edited 2 times in total.



User avatar
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 319
Joined: Wed 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 times

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

Postby hdn » Fri 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-}
:|

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

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

Postby vo_minhdat2007 » Fri 14/08/2009 11:44 am

hdn wrote: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!

User avatar
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 319
Joined: Wed 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 times

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

Postby hdn » Fri 14/08/2009 12:03 pm

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

User avatar
DQHung
Guru
Guru
Posts: 576
Joined: Mon 12/02/2007 3:24 pm
Location: Rach Gia - Kien Giang
Been thanked: 40 times
Contact:

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

Postby DQHung » Fri 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ì !

User avatar
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 319
Joined: Wed 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 times

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

Postby hdn » Sat 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>
:|

User avatar
andylam1992
Thành viên danh dự
Thành viên danh dự
Posts: 380
Joined: Mon 06/04/2009 12:57 pm
Location: TP.HCM Q5
Has thanked: 2 times
Been thanked: 4 times
Contact:

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

Postby andylam1992 » Sat 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

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

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

Postby vo_minhdat2007 » Sat 15/08/2009 3:26 pm

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

User avatar
thuongall
Quản trị
Quản trị
Posts: 456
Joined: Wed 26/01/2005 8:05 am
Location: Quê hương Đồng Khởi
Been thanked: 9 times
Contact:

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

Postby thuongall » Sat 15/08/2009 3:49 pm

Cái dwmapi.dll đó.
vo_minhdat2007 wrote:
hdn wrote: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) Viewed 8417 times

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

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

Postby vo_minhdat2007 » Sat 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) :(

User avatar
hdn
Thành viên tâm huyết
Thành viên tâm huyết
Posts: 319
Joined: Wed 26/03/2008 7:09 pm
Has thanked: 1 time
Been thanked: 4 times

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

Postby hdn » Sat 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à :-?
:|

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

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

Postby vo_minhdat2007 » Sat 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 :(

User avatar
thuongall
Quản trị
Quản trị
Posts: 456
Joined: Wed 26/01/2005 8:05 am
Location: Quê hương Đồng Khởi
Been thanked: 9 times
Contact:

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

Postby thuongall » Sat 15/08/2009 9:09 pm

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

Code: Select all

  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

User avatar
vo_minhdat2007
Quản trị
Quản trị
Posts: 2227
Joined: Sun 17/07/2005 1:40 am
Has thanked: 13 times
Been thanked: 87 times
Contact:

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

Postby vo_minhdat2007 » Mon 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

User avatar
DQHung
Guru
Guru
Posts: 576
Joined: Mon 12/02/2007 3:24 pm
Location: Rach Gia - Kien Giang
Been thanked: 40 times
Contact:

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

Postby DQHung » Mon 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
Posts: 43
Joined: Tue 29/06/2010 8:47 am
Has thanked: 2 times

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

Postby hocvatly » Wed 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?

User avatar
DQHung
Guru
Guru
Posts: 576
Joined: Mon 12/02/2007 3:24 pm
Location: Rach Gia - Kien Giang
Been thanked: 40 times
Contact:

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

Postby DQHung » Wed 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
Posts: 43
Joined: Tue 29/06/2010 8:47 am
Has thanked: 2 times

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

Postby hocvatly » Thu 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.

User avatar
DQHung
Guru
Guru
Posts: 576
Joined: Mon 12/02/2007 3:24 pm
Location: Rach Gia - Kien Giang
Been thanked: 40 times
Contact:

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

Postby DQHung » Thu 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.

User avatar
VuVanHoanh
Thành viên danh dự
Thành viên danh dự
Posts: 1259
Joined: Thu 03/06/2010 9:23 pm
Location: Kim Sơn - Đông Triều - Quảng Ninh
Has thanked: 22 times
Been thanked: 138 times
Contact:

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

Postby VuVanHoanh » Sun 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


Return to “[VB] Ứng dụng - Form và Control”

Who is online

Users browsing this forum: No registered users and 0 guests