PB powerbuilder 去除response类型窗口的3D边框

本文介绍在PB程序开发中,如何通过MFC的SetWindowLongA函数去除response类型窗口的3D边框,提供了详细的步骤和代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PB程序开发中,response类型窗口的边框默认是无法取消的。

使用MFC的SetWindowLongA函数去除response类型窗口的3D边框

函数声明: 

Function ULong SetWindowLongA(Long hwnd, Long nIndex, Long dwNewLong) Library 'user32.dll'
Function ULong GetWindowLongA(Long hwnd, Long nIndex) Library 'user32.dll'

主体脚本内容: 

constant int GWL_STYLE     = -16
CONSTANT long GWL_EXSTYLE  = -20
CONSTANT ulong WS_BORDER   = 8388608 //&H800000

long ll_Ret, ll_handle

OleObject wsh
wsh = CREATE OleObject
wsh.ConnectToNewObject( "MSScriptControl.ScriptControl" )
wsh.language = "vbscript"
//参数的获取会用到位运算,这里使用嵌入OLE VB脚本方式,当然也可以自定义函数

ll_handle = Handle (this)
ll_Ret    = GetWindowLongA(ll_handle, GWL_STYLE)
//获取窗口当前的样式
ll_Ret    = wsh.Eval(string(ll_ret) + " and not " + string(WS_BORDER))
//去除边框
SetWindowLongA (ll_handle, GWL_STYLE, ll_Ret)
//重新设置样式
SetWindowLongA (ll_handle, GWL_EXSTYLE, 0)
//重新设置扩展样式,即3D边框
SetWindowPos(Handle(This),-1,0,0,0,0,35)
//这个很重要,必须强制调整一次窗口,前面的设置才会生效

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值