网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月01日漏签0天
vb吧 关注:156,099贴子:1,166,220
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 9回复贴,共1页
<<返回vb吧
>0< 加载中...

分享:修改msgbox窗口的大小

  • 只看楼主
  • 收藏

  • 回复
  • a90620038
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
msgbox是VB的内部函数
本身不支持随意修改大小
但是可以通过 SetWindowPos 函数修改大小,在此分享
————————————————————
注意!调试的时候不能实现,必需生成EXE才可以实现!
注意!调试的时候不能实现,必需生成EXE才可以实现!
注意!调试的时候不能实现,必需生成EXE才可以实现!
(重要的事情说3遍)


  • a90620038
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
备用层


2025-08-01 02:50:15
广告
不感兴趣
开通SVIP免广告
  • a90620038
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
正文:
添加一个按钮,(用于弹出msgbox),一个定时器,用于修改大小
以下是代码:
——————————————————————————
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Const GW_CHILD = 5
Private Const GW_HWNDNEXT = 2
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long
Function Findwindow2(ByVal str2 As String) As Long
'VB findwindow 之标题模糊搜索
On Error Resume Next
Dim lngDeskTopHandle As Long
Dim lngHand As Long
Dim strName As String * 255
Dim A As Long
lngDeskTopHandle = GetDesktopWindow()
lngHand = GetWindow(lngDeskTopHandle, GW_CHILD)
Do While lngHand <> 0
GetWindowText lngHand, strName, Len(strName)
lngHand = GetWindow(lngHand, GW_HWNDNEXT)
If Left$(strName, 1) <> vbNullChar Then
If InStr(strName, str2) Then
Findwindow2 = FindWindow(vbNullString, CStr(strName))
End If
End If
Loop
End Function
Private Sub Command1_Click()
Timer1.Enabled = True
MsgBox "测试", 0, "标题xx"
Timer1.Enabled = False
'特别注意,这里必需给msgbox设置一个独一无二的标题
End Sub
Private Sub Form_Load()
Timer1.Enabled = False
Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
On Error Resume Next
If IsWindow(Findwindow2("标题xx")) <> "" Then
SetWindowPos Findwindow2("标题xx"), -1, 400, 100, Me.Width \ 15, Me.Height \ 15, &H400
End If
End Sub


  • a90620038
  • 递归爆栈
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
但是有一条,那个确认按钮的位置,我就不知道怎么改了,留给大神。。。。


  • 涐吢铱舊囿儚
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用HOOK,一切“问题”都不是问题,即使在调试运行时,也能实现改变大小。
应该说,消息窗口中那些“按钮”的位置也能随便改变。


  • 涐吢铱舊囿儚
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
3楼中说“必需给msgbox设置一个独一无二的标题”
如果用HOOK方式的话,根本就不存在这种限制。


  • 涐吢铱舊囿儚
  • 数据库
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
竟然有人挖坟…………

这么久了,也没别人来凑一下热闹?
可能大家对楼主这个“主题”没什么兴趣吧。
既然有人一铲子挖起来了,我还是小露一手吧,
免得不明所以的人,觉得我在上面说空话。
下面的代码,很多参数是“写死”的,仅供参考,有兴趣的可以试一下。
看得懂、并且需要用这个的时候,自己再改改吧。
我的实现方法,没楼主的那么多的限制…………
不用编译,在IDE中运行就有效果;
消息标题完全可以“重复一大堆”,根本不必“独一无二”;
代码也没多少,不象楼主的“那么大一坨”…………
不过有一点: 要想试效果的盆友,自己添加一下几个“缺少”的API 。
注:我不是刻意删除掉API声明的,因为我自己确实不需要写就能运行!

运行效果的图片我就不截了,觉得没必要。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 9回复贴,共1页
<<返回vb吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示