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)
//这个很重要,必须强制调整一次窗口,前面的设置才会生效