有是高分问题: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
怎么去掉那条线?
另外做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
...全文
相关推荐
Android-BLE低功耗蓝牙开发Demo
相关介绍参考本人博客:http://blog.csdn.net/github_34224676/article/details/65937410
android ble 蓝牙低功耗 demo
经过搜寻资料,自己整合改写的demo,包括搜索,连接,发送数据,接收数据。
android 蓝牙BLE低功耗开发demo
之前做的关于蓝牙BLE低功耗开发的一个demo,可以读取和写入数据,欢迎大家交流
Android BLE 蓝牙低功耗Demo
Android BLE 蓝牙低功耗Demo
低功耗蓝牙BLE开发Demo源码,安卓
近期为公司开发低功耗蓝牙模块的功能,由于是跨行进入就找了一些BLE开发的demo源码参考,有我自己写的也有找的大牛的demo,也有安卓官方蓝牙源码,都是android studio工程,主要部分蓝牙搜索,蓝牙通知的读写,有的能用有的不能用但有参考价值。我主要实现的功能是获取BLE的通知信息,大概流程就是先通过广播获取到你要的设备,然后连接设备后调用BluetoothGattCallback回调函数,onConnectionStateChange判断状态启动服务,然后onServicesDiscovered中根据特定uuid设置值BLE执行的操作,onCharacteristicChanged中获取到通知数据。这个流程我在压缩包中的BLueToothNotify的程序里实现的,写的最简便有注释,当然也有也写不合适的地方,我新手如门安卓做的这个不对的地方还望谅解。


VB基础类
