窗体问题

blueonly 2006-01-31 01:33:15
我想做一个背景透明的窗体,切放在桌面时它要位于图标下面.

请给出思路,谢谢.
...全文
163 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
province_ 2006-02-03
  • 打赏
  • 举报
回复
910先生的意见是对的,如果你能进行远程注入的话(单纯靠VB不可以,除非你仅仅在WIN98下做,原因就是DLL)可以在桌面子窗体的WM_ERASEBKGND消息里画你自己的图,这样就实现了图标在你上面的目的。
VB6的不足是:不能做自由线程,不能做DLL,没有指针(尤其是没有函数指针)。
zyl910 2006-02-02
  • 打赏
  • 举报
回复
路径API(PathToRegion)只对图形绘制有效
位图、图标的绘制路径API无法检测
zyl910 2006-02-02
  • 打赏
  • 举报
回复
Modest(塞北雪貂)的意思是:在自己的窗体上画出桌面图标,使其看起来像桌面

这种方法虽然技术难度不高,但绘图代码的代码量蛮多的
northwolves 2006-02-02
  • 打赏
  • 举报
回复
仅供参考:


Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function PathToRegion Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function StretchBlt& Lib "gdi32" (ByVal hdc&, ByVal x&, ByVal y&, ByVal nWidth&, ByVal nHeight&, ByVal hSrcDC&, ByVal XSrc&, ByVal YSrc&, ByVal nSrcWidth&, ByVal nSrcHeight&, ByVal dwRop&)
Private Const SRCCOPY = &HCC0020

Private Sub Form_Load()
Dim hRgn As Long
Me.WindowState = 2
Me.FontName = "arial"
Me.FontSize = 110
Me.BackColor = vbRed
BeginPath Me.hdc
TextOut Me.hdc, 500, 500, "Right?", 6

EndPath Me.hdc
hRgn = PathToRegion(Me.hdc)
SetWindowRgn Me.hWnd, hRgn, True
DeleteObject hRgn
StretchBlt Me.hdc, Me.ScaleWidth, 0, -Me.ScaleWidth, Me.ScaleHeight / 2, Me.hdc, 0, 0, Me.ScaleWidth, Me.ScaleHeight / 2, SRCCOPY
End Sub
northwolves 2006-02-02
  • 打赏
  • 举报
回复
如果窗体背景透明,放在桌面时位于图标上面下面分别不是太大吧.
weiyulin 2006-02-02
  • 打赏
  • 举报
回复
Modest(塞北雪貂)

//不用透明,直接把桌面和图标画在窗体上。

怎么做

用新定新父的方法吗
迈克揉索芙特 2006-02-01
  • 打赏
  • 举报
回复
不用透明,直接把桌面和图标画在窗体上。
zyl910 2006-01-31
  • 打赏
  • 举报
回复
//切放在桌面时它要位于图标下面

见过这样的代码
使用自绘(Custom Draw)桌面ListView办到的
也就是说自己绘制桌面背景
自然可以模拟各种效果


单不说绘图代码得写的多复杂
得靠进程注入技术来实现跨进程子类
可是利用Hook来实现进程注入的那个dll就是VB无法写的(Microsoft让VB只能生成ActiveX dll)
rainstormmaster 2006-01-31
  • 打赏
  • 举报
回复
窗体透明倒是不难实现

//切放在桌面时它要位于图标下面

桌面上的图标其实就是SysListView32的listitem,不太明白你这句话的意思
项目名称:[精仿]360手机助手-14.2.6更新(CSkin Demo) 界面库版本号:14.2.6 最新版本 下载内容: 精仿360手机助手源码一份, 可引用至工具箱最新版CSkin.dll一份 实现功能: 1.发光标题。 2.直角边框和阴影。 3.360手机助手主界面模仿。 4.多系统支持,不需要win8系统,即可实现win8风格的360手机助手。 5.自定义控件的美化使用。 界面库更新文档: CC2014-2.6 1.修复拖动好友出现的负值BUG和拖动后有机率会消失的问题。 2.好友列表DoubleClickSubItem事件添加回调参数MouseEventArgs,用于判断鼠标操作的一些参数,如:左键双击还是右键双击判断。 3.对SkinDataGridView属性进行部分重构,颜色美化属性增加。 4.窗体加入绘制模式边框颜色属性BorderColor和InnerBorderColor 5.解决SkinTabControl left和right绘制模式下tab标签悬浮样式不变化问题。 6.所有控件采用最高质量模式绘制文字,防止字体模糊以及锯齿。 CC2013-12.8 1.优化SkinTabControl的效率,不再呢么闪烁,360DEMO直接替换DLL,改部分属性小错误,就可以看到明显闪烁减少效果。 2.为SkinStrip分类的控件添加 是否统一变换字体颜色的属性。 3.为SkinAnimatorImg动画图片框控件添加Stretch属性,是否拉伸模式绘制动画。 4.修复SkinComboBox无法DataSource绑定项的BUG。 5.增加音乐播放器,萝莉人物窗体,等DEMO。 6.修复部分细节bug。 提示:窗体继承SkinMain,再设置下SkinBack,有你想不到的惊喜哦,此窗体是用于绘制异形窗体专用,你给他什么图片,窗体就会按照图片来绘制。有一个缺点就是,有透明像素的背景区域,控件不给于显示。 CC2013-10.30 1.由于SkinForm名字太多人使用,界面库命名正式改为CSkin.dll,官网www.cskin.net。 2.SkinTabControl标签中添加菜单箭头,可点击展开菜单。 3.SkinTabControl添加标签关闭按钮。 4.修复部分中文乱码问题。 5.优化好友列表右键菜单。 6.将窗体自定义系统按钮改为集合模式,可添加无数个自定义系统按钮。自定义系统按钮事件中可以 e.参数 来判断。 7.增加360安全卫士-DEMO案例。 8.增加SkinAnimatorImg控件,用于支持位图动画的播放。如360的动态logo。 9.各种细节BUG优化。 CC2013-10.11 1.添加SkinTabControlEx,加入更加自定义的美化属性和动画效果。 2.添加SkinAnimator,通用动画控件。 3.添加Html编辑器控件 4.修复SkinButton图标和文本相对位置的BUG CC2013-9.26 1.优化好友列表CPU占用 2.好友列表加入好友登录平台属性:安卓 苹果 WEBQQ PC 3.优化标题绘制模式,新添标题绘制模式属性。 4.新添标题偏移度属性。 5.加入圆形进度条控件:ProgressIndicator。 CC2013-9.5.2 1.优化截图控件,截图工具栏加入新功能。 2.解决个人信息卡和天气窗体显示后不会消失的问题。 3.各种细节BUG优化。 CC2013-9.5.1 1.解决贴边左右隐藏的BUG。 2.解决窗体点击事件不能触发的问题。 3.优化SkinButton继承父容器背景色的代码。 4.解决SkinButton异常错误。 CC2013-9.3 1.好友列表右键菜单没反应问题。 2.新增美化控件SkinDatagridview。 3.密码软件盘回删不了文字问题

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧