哪里有背景透明的VB按钮源代码(SSCOMMAND有BUG除外)?急。 大虾救救。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 窗口虽然可以透明,但却要2000以上才支持你说的这种透明,大多都是模拟的,即把背景重画到按钮上,看起来就透明了你可以参考这个代码,上面就有透明按钮http://www.vbaccelerator.com/home/VB/Code/Libraries/Subclassing/Tile_a_Bitmap_Into_a_TextBox/article.asp 正在研究,真的谢谢你,会给你加分,但这个比较麻烦,例子带了一个好像是TIMER(还没有继续研究)的控件,我现在程序已经发布出去了,不能再加控件了。 那个 ssubtmr6.dll 并不是什么控件,只是一个 Hook 的类库,该类库也有源码因为 要捕获 windows 消息一般都要用到钩子,所以该类库很普遍,你也可以直接到其网站上下载该类库的源码加到你的工程,这里所有都是开源的 cOwnerDrawButton 是控制重画 按钮的类 Set m_cButtons = New cOwnerDrawButton m_cButtons.Attach Me '加入窗体 m_cButtons.AddhWnd cmdOK.hwnd ‘加入按钮句柄在 cOwnerDrawButton 是控制重画 按钮的类 中是通过捕捉 WM_DRAWITEM 消息进行重画的pDrawButton 哦,原来是这样,不过我的按钮的背景不是窗体,而是一个img,我把用SSCOMMAND做的那个图放到上面来看一下。这里有地址:http://www.xinyuanft.com/ann.jpg,希望大虾参考一下。 和用窗体还是用Picture 做容器没有太大关系,将frmBitmapDialog窗体控件粘贴到 Picture1 中,设置Picture1.Autoredraw=truePrivate Sub Form_Paint() ' Draw a dark background: '这里填充需要用来做背景得容器,如果是Picture 就改为 Picture1.hdc,picture1.scalewidth..... m_cBack(UBound(m_cBack) - 1).TileArea Picture1.hDC, 0, 0, _ Picture1.ScaleWidth \ Screen.TwipsPerPixelX, _ Picture1.ScaleHeight \ Screen.TwipsPerPixelYEnd Sub这样, 就是在Picture1 中透明了 Set backNormal = LoadPicture(App.Path & "\back.bmp") Set backLite = LoadPicture(App.Path & "\backlite.bmp")读入图片 ReDim m_cBack(1 To textBoxes.Count + 2) As cTextBoxBackground定义 背景图数组 Set m_cBack(textBoxes.Count + 1) = New cTextBoxBackground m_cBack(textBoxes.Count + 1).SetBackdrop backNormal Set m_cBack(textBoxes.Count + 2) = New cTextBoxBackground m_cBack(textBoxes.Count + 2).SetBackdrop backLite Private Property Get IOwnerDrawButton_ButtonContainerhWnd() As Long IOwnerDrawButton_ButtonContainerhWnd = Picture1.hwndEnd Property http://www.vb99.com/product/gifbutton/register.asp倒有一個 ,不過要注冊 img不是一个容器,另外,那些按钮只是随便放在窗体上,而那个IMG只在窗体上的一部分,我再研究一下。 原来以为按钮背景加图片很简单,但实验之后再加上查资料,发现不是那么回事,麻烦程度超过给TEXTBOX加背景,正在研究中,希望下星期解决,提示,只有用户自画按钮(BUTTON类型的一种)才能改变字体颜色及背景,但MSDN又说只有PUSHLIKE,DEFAULTPUSHLIKE及另一种BUTTON始终使用系统定义的颜色及背景来PAINT,并没有提到其他类型的BUTTON,所以你可以试试在程序中改变VB的BUTTON类型,我的实验也才到这步,因为还有其他事情,所以还没有继续下去。感觉做这类事情用VB是比VC麻烦许多,但没办法,做VB到现在这种程度也难回头了。 都说了,并没有真正意义上的透明,所谓的透明是将背景重画在按钮上的所以一定要背景容器这是我 从作者源代码 制作的一个简单的窗体代码http://www.federal.net.cn/newtest.rar自己看看吧 我试了一下,目前还有这样的问题:我需要显示容器中的另一个图片(在这个按钮下面)做背景,如这张图:http://www.xinyuanft.com/ann.jpg 这张图中,我详细比较了一下使用后的效果。大家看看便知。 我昨天实验了一下,是自己创建Owner Draw BUTTON,背景、字体都可以实现,就是麻烦些,所有的重画包括按下和弹起都要自己写代码实现,现在只剩下文字居中没弄好,今天很忙,明天再看看。 请教一个时间的问题 请问怎样实现图形缩放? 菜鸟问题:不知道这句该引用何对象 请问一个有关多页面浏览器的问题. 文本文件问题,50分! 困惑﹕一個SSTAB上控件消失的問題﹖ 知道计算机的名字,如何得到它的IP地址? 交互式开发的问题? MSComm控件接收串口数据出现严重延迟该如何解决? 如何在VB的窗体中设置无限的高度与宽度?请高手指点!!好多谢~~ 串口通讯,问题,使用mscomm 如何遍历当前目录的所有文件
你说的这种透明,大多都是模拟的,即把背景重画到按钮上,看起来就透明了
你可以参考这个代码,上面就有透明按钮
http://www.vbaccelerator.com/home/VB/Code/Libraries/Subclassing/Tile_a_Bitmap_Into_a_TextBox/article.asp
因为 要捕获 windows 消息一般都要用到钩子,所以该类库很普遍,你也可以直接到其网站上下载该类库的源码加到你的工程,这里所有都是开源的
m_cButtons.Attach Me '加入窗体
m_cButtons.AddhWnd cmdOK.hwnd ‘加入按钮句柄在 cOwnerDrawButton 是控制重画 按钮的类 中
是通过捕捉 WM_DRAWITEM 消息进行重画的
pDrawButton
这里有地址:http://www.xinyuanft.com/ann.jpg,希望大虾参考一下。
将frmBitmapDialog窗体控件粘贴到 Picture1 中,设置Picture1.Autoredraw=truePrivate Sub Form_Paint()
' Draw a dark background: '这里填充需要用来做背景得容器,如果是Picture 就改为 Picture1.hdc,picture1.scalewidth.....
m_cBack(UBound(m_cBack) - 1).TileArea Picture1.hDC, 0, 0, _
Picture1.ScaleWidth \ Screen.TwipsPerPixelX, _
Picture1.ScaleHeight \ Screen.TwipsPerPixelYEnd Sub
这样, 就是在Picture1 中透明了
Set backLite = LoadPicture(App.Path & "\backlite.bmp")
读入图片
ReDim m_cBack(1 To textBoxes.Count + 2) As cTextBoxBackground
定义 背景图数组
Set m_cBack(textBoxes.Count + 1) = New cTextBoxBackground
m_cBack(textBoxes.Count + 1).SetBackdrop backNormal
Set m_cBack(textBoxes.Count + 2) = New cTextBoxBackground
m_cBack(textBoxes.Count + 2).SetBackdrop backLite
IOwnerDrawButton_ButtonContainerhWnd = Picture1.hwnd
End Property
感觉做这类事情用VB是比VC麻烦许多,但没办法,做VB到现在这种程度也难回头了。
所以一定要背景容器这是我 从作者源代码 制作的一个简单的窗体代码
http://www.federal.net.cn/newtest.rar
自己看看吧
我需要显示容器中的另一个图片(在这个按钮下面)做背景,如这张图:http://www.xinyuanft.com/ann.jpg 这张图中,我详细比较了一下使用后的效果。
大家看看便知。