DELPHI透明控件代码,求VB的实现方法
下面这段代码,在DELPHI编写的控件中可以使控件背景透明,如果要在VB实现该如何编写呢?
请高手给出实现的思路或代码,谢谢!
PROCEDURE CMEraseBkgnd(var Message:TWMEraseBkgnd);Message WM_ERASEBKGND;
PROCEDURE TLwSeal.CMEraseBkgnd(var Message:TWMEraseBkgnd);
BEGIN
brush.style:=bsClear ;
Inherited;
END;
问题点数:100、回复次数:5Top
1 楼of123()回复于 2005-09-01 09:08:32 得分 100
所谓“透明”,实际上是将窗体背景图像在前置的控件中显示出来。
在 VB 中,可以调用 API 函数,复制窗体的局部图像。
rivate 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
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Const SRCCOPY = &HCC0020
Private Const SRCPAINT = &HEE0086
Private Const SRCAND = &H8800C6
Top
2 楼qifan(启凡)回复于 2005-09-01 09:38:40 得分 0
能不能再详细点,我是初学者,谢谢!Top
3 楼cumtbwxj(巴乔和国际米兰是我的最爱!)回复于 2005-09-01 17:03:00 得分 0
就是在Module中把API加进去
在窗体的Load()中调用Top
4 楼qifan(启凡)回复于 2005-09-01 17:30:40 得分 0
我是想在插件WORD的控件中实现控件的透明,现在通过CallWindowProc方法和回调函数可以截获WM_ERASEBKGND事件,接下来该怎么做?我的代码是这样的:
UserControl内:
Private Sub UserControl_Initialize()
procOld = SetWindowLong(UserControl.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Private Sub UserControl_Terminate()
Call SetWindowLong(UserControl.hwnd, GWL_WNDPROC, procOld)
End Sub
模块内:
'回调函数,用来截取消息
Public Function WindowProc(ByVal hwnd As Long, ByVal iMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
'确定接收到的是什么消息
Select Case iMsg
Case WM_PAINT
Case WM_ERASEBKGND
Case WM_DESTROY
SetBackTran wParam '这个是我自已写的方法,我想用来设置背景为透明,但是没效果?
End Select
WindowProc = CallWindowProc(procOld, hwnd, iMsg, wParam, lParam)
End Function
Public Sub SetBackTran(ByVal wParam As Long)
Dim hdc As Long
hdc = GetDC(wParam)
iBKMode = SetBkMode(hdc, TRANSPARENT)
End Sub
大家再帮忙看看, of123() 如果是用你的方法该怎么做呢?Top
5 楼qifan(启凡)回复于 2005-09-02 16:18:41 得分 0
自己顶一下.Top




