有是高分问题:Bitblt,还有点问题。
问题:你在picturebox里装上一幅图片,只要一点击窗体标题栏的位置,就看到问题了
怎么去掉那条线?
另外做skin应该用什么方法较好?
谁知道Winamp是怎么做到的?
'////////////Module////////////
Option Explicit
Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function WindowFromDC Lib "user32" (ByVal hdc As Long) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Dim PrevProc As Long
Private Const STRETCH_ANDSCANS = 1
Private Const STRETCH_DELETESCANS = 3
Private Const STRETCH_HALFTONE = 4
Private Const STRETCH_ORSCANS = 2
Private Const WM_ACTIVATE = &H6
Private Const WM_SETFOCUS = &H7
Private Const WM_KILLFOCUS = &H8
Private Const WM_SETREDRAW = &HB
Private Const WM_PAINT = &HF
Private Const WM_ERASEBKGND = &H14
Private Const WM_SHOWWINDOW = &H18
Private Const WM_CHILDACTIVATE = &H22
Private Const GWL_WNDPROC = (-4)
Public frm_hDC As Long
Public img_hDC As Long
Public Sub Paint1()
BitBlt frm_hDC, 0, 0, frmMain.Width, frmMain.Height, img_hDC, 24, 0, vbSrcCopy
End Sub
Function funWinPro(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
funWinPro = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)
Select Case (uMsg)
Case WM_ACTIVATE
Paint1
Case WM_PAINT
Paint1
Case WM_ERASEBKGND
Paint1
Case Else
End Select
End Function
Public Sub funTest()
PrevProc = SetWindowLong(WindowFromDC(frm_hDC), GWL_WNDPROC, AddressOf funWinPro)
End Sub
Public Sub UnHook()
SetWindowLong WindowFromDC(frm_hDC), GWL_WNDPROC, PrevProc
End Sub
'//////////////////frmMain.frm////////////////////
'窗体上有一个图片框
Option Explicit
Private Sub Form_Load()
frm_hDC = GetWindowDC(Me.hwnd)
img_hDC = Picture1.hdc
Me.ScaleMode = 3
funTest
End Sub