CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  API

DELPHI透明控件代码,求VB的实现方法

楼主qifan(启凡)2005-09-01 08:46:37 在 VB / API 提问

下面这段代码,在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

相关问题

  • DELPHI透明控件代码,求VB的实现方法
  • VB代码转Delphi
  • 如何阅读DELPHI控件的代码?
  • 在VB中可使多个控件同名构成控件数组,共享同一事件过程代码,那Delphi中怎样实现呢?
  • vb代码转换Delphi代码
  • VB代码转换成Delphi代码
  • *** VB =》Delphi 的代码转换?? ***
  • Delphi控件中的画控件的代码在哪里能找到?
  • Delphi控件在VB中如何使用
  • VB如何用代码动态的创建控件数组?

关键词

  • 控件
  • 代码
  • 函数
  • vb
  • byval
  • 透明
  • procold
  • 窗体
  • longprivate
  • usercontrol

得分解答快速导航

  • 帖主:qifan
  • of123

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo