关于异形窗体的求助?

sito_hongta 2005-04-05 11:22:45
请问各位用什么方法可以实现“回”字形的异形窗体,即在窗体中挖掉一个矩形,四边保留一定宽度。
诚请赐教!感激不尽。
...全文
116 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sito_hongta 2005-04-12
  • 打赏
  • 举报
回复
謝謝大家!真的很感激。
我采用了藍水晶的方法,因為感覺簡單點。書劍兄的寫法小弟也試過,不過沒通過,可能是小弟剛入門之故。結貼了。
真誠的謝謝各位!!!
j_x_y 2005-04-06
  • 打赏
  • 举报
回复
同意楼上,来晚了,呵呵
bob008 2005-04-06
  • 打赏
  • 举报
回复
RGN_DIFF
XunBaian 2005-04-05
  • 打赏
  • 举报
回复
或者窗体上加个Label,如下,Copy即可运行:
Option Explicit

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Const WS_EX_LAYERED = &H80000
Private Const GWL_EXSTYLE = (-20)
Private Const LWA_ALPHA = &H2
Private Const LWA_COLORKEY = &H1

Private Sub Form_Load()
Dim rtn As Long
Label1.BackColor = vbWhite
  Label1.Caption = ""

rtn = GetWindowLong(hwnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong hwnd, GWL_EXSTYLE, rtn
SetLayeredWindowAttributes hwnd, vbWhite, 0, LWA_COLORKEY
End Sub

Private Sub Form_DblClick()
Unload Me
End Sub

pcwak 2005-04-05
  • 打赏
  • 举报
回复
Option Explicit

'去掉透明色
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long

Private Const WS_EX_LAYERED = &H80000
Private Const GWL_EXSTYLE = (-20)
Private Const LWA_ALPHA = &H2
Private Const LWA_COLORKEY = &H1

'使窗体透明
Private Sub SetLucidity(frm As Form)
Dim rtn As Long
frm.BackColor = RGB(223, 0, 41)
rtn = GetWindowLong(frm.hwnd, GWL_EXSTYLE)
rtn = rtn Or WS_EX_LAYERED
SetWindowLong frm.hwnd, GWL_EXSTYLE, rtn
Dim i As Integer
SetWindowLong frm.hwnd, GWL_EXSTYLE, rtn
SetLayeredWindowAttributes frm.hwnd, RGB(223, 0, 41), 0, LWA_COLORKEY

End Sub

Private Sub Form_Load()
SetLucidity Me
End Sub
XunBaian 2005-04-05
  • 打赏
  • 举报
回复
这里有实例可供参考:
http://mndsoft.com/blog/default.asp?page=8

1,486

社区成员

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

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