表单BorderStyle=1与2有何区别?
用了多年的VFP,但一直未搞明白 Form.BorderStyle=1(单线边框)与2(固定对话框边框)有何实质区别。两者都不能通过拖拽边框来更改窗口大小,外观上也都不出明显区别。请问各位版主怎么看?
2020-11-24 09:06
2020-11-24 10:17
程序代码:从窗口样式看看:
* test.prg
DECLARE LONG GetWindowLong IN user32 LONG, LONG
of = CREATEOBJECT("form1")
of.show(1)
RETURN
DEFINE CLASS form1 as Form
BorderStyle=2 && 或 =1
PROCEDURE Activate
* GWL_STYLE -16 获得窗口样式
* GWL_EXSTYLE -20 获取扩展窗口样式
_CLIPTEXT = TRANSFORM(GetWindowLong(thisform.hWnd, -20),"@0")
? _CLIPTEXT
ENDPROC
ENDDEFINE
BorderStyle属性 窗口样式 扩展窗口样式
--------------- ---------- ------------
BorderStyle=1 0x56CB0000 0x00000104
BorderStyle=2 0x56CB0000 0x00000105
从这方面看,扩展窗口样式有差别,扩展窗口样式参数:
WS_EX_DLGMODALFRAME 0x01 对话框的边框
WS_EX_NOPARENTNOTIFY 0x04 创建/销毁时不通知父窗口
WS_EX_WINDOWEDGE 0x100 带凸起边缘的边框
差别在 WS_EX_DLGMODALFRAME 样式:
WS_EX_DLGMODALFRAME
当窗口设置了这个属性的时候,窗口具有对话框的边框,这个属性通常用在对话框窗口,
不过任何窗口都可以使用这个属性来获得对话框的边框。
与 WS_EX_DLGMODALFRAME 相关的样式:
1、WS_CAPTION
窗口具有标题栏,通常具有标题栏的窗口是不能具有对话框的边界属性的,除非为窗口
设置WS_EX_DLGMODALFRAME 属性。
2、WS_DLGFRAME
窗口具有对话框的边框,这个属性通常是用在对话框窗口的,只能够用在窗口没有
标题栏的情况下,如果一个不是对话框的窗口使用了这个窗口,那么窗口必须被指定
WS_EX_DLGMODALFRAME 属性。使用这个属性创建的窗口,不能够通过键盘和鼠标改变
窗口的大小。[此贴子已经被作者于2020-11-24 11:17编辑过]
2020-11-24 11:16
2020-11-24 21:40