Skin Cho form (New)

Các ví dụ nho nhỏ và những thứ linh tinh không thuộc nhóm nào
Đăng trả lời
Hình đại diện của thành viên
andylam1992
Thành viên danh dự
Thành viên danh dự
Bài viết: 380
Ngày tham gia: Thứ 2 06/04/2009 12:57 pm
Đến từ: TP.HCM Q5
Has thanked: 2 times
Been thanked: 4 times
Tiếp xúc:

Skin Cho form (New)

Gửi bài by andylam1992 »

Thủ thuật: Skin cho form
Tác giả: Sưu tầm:source code của chương trình BlueMedia
Mô tả: tạo Skin tức thì lúc load form
Trước đây tôi có mở 1 toptic về "Tạo skin tức thì cho form" nhưng các cách mà các anh chị đưa ra đều không được. Lý do, Theo SRC Code trong vblib thì form phải ở chế độ visible thì ta mới copy được form thành 1 object, sau đó thì loại bỏ những màu được set là trong suốt, sau đó thì cho hiện object đó lên. Như vậy thì quá trình Quá trình copy-> loại bỏ-> hiện lên sẽ mất khoảng 1 giây. Điều này dẫn tới skin không thể nào tạo tức thì trong lúc "form load".VD: skin của game phong thần, Thiên long bát bộ là những skin được tạo tức thì .

Ngoài ra cách này còn 1 nhược điểm là đôi khi skin tạo ra có 1 vài chỗ bị lốm đốm Do màu nền không được đồng nhất và chỉ chênh lệc nhau vài bit (Vd:H0000 & H0001).

SRC Code sau đây sẽ loại bỏ những màu được xem là trong suốt ngay khi "from load" nên thời gian sẽ rút ngắn rất nhiều. Các bạn có thể sử dụng 1 ảnh gift không nền, điều này có thể khắc phục việc bị lốm đốm.

Modul:

Mã: Chọn tất cả

 Option Explicit Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal HWND As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPublic Declare Function ReleaseCapture Lib "user32" () As LongPublic Const HTCAPTION = 2Public Const WM_NCLBUTTONDOWN = &HA1  '--------------------------------------------Public Const GWL_EXSTYLE = (-20) Public Const WS_EX_LAYERED = &H80000Public Const LWA_COLORKEY = &H1Public Const LWA_ALPHA = &H2 Public Declare Function SetWindowLong Lib "user32" _       Alias "SetWindowLongA" (ByVal HWND As Long, _       ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare Function GetWindowLong Lib "user32" _       Alias "GetWindowLongA" (ByVal HWND As Long, _       ByVal nIndex As Long) As Long       '-------------------------------------------------- Public Declare Function SetLayeredWindowAttributes Lib "user32" _       (ByVal HWND As Long, ByVal crKey As Long, _       ByVal bAlpha As Integer, ByVal dwFlags As Long) As Long  Public Function SetWindow(HWND As Long, crKey As Long, _                bAlpha As Integer, dwFlags As Long) As LongDim ExStyle As LongDim I As IntegerDim result As Long    'thay doi ExStyle cua form    ExStyle = GetWindowLong(HWND, GWL_EXSTYLE)    ExStyle = ExStyle Or WS_EX_LAYERED    SetWindowLong HWND, GWL_EXSTYLE, ExStyle        result = SetLayeredWindowAttributes(HWND, crKey, bAlpha, dwFlags)    SetWindow = resultEnd Function 
Form:

Mã: Chọn tất cả

  Private Sub Form_Load()SetWindow Me.HWND, &HFF00FF, 50, LWA_COLORKEYEnd Sub Private Sub image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)ReleaseCaptureSendMessage Me.HWND, WM_NCLBUTTONDOWN, HTCAPTION, 0&End Sub  
Have Fun! :D
vd.JPG
Tập tin đính kèm
SkinForm.rar
(70.27 KiB) Đã tải về 1988 lần

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

Quay về