注册 登录
编程论坛 VFP论坛

表单BorderStyle=1与2有何区别?

liuxingang28 发布于 2020-11-24 09:06, 1383 次点击
用了多年的VFP,但一直未搞明白 Form.BorderStyle=1(单线边框)与2(固定对话框边框)有何实质区别。两者都不能通过拖拽边框来更改窗口大小,外观上也都不出明显区别。请问各位版主怎么看?
3 回复
#2
wengjl2020-11-24 10:17
在XP上有明显的视觉差异,在WIN7上视觉差异不明显。
#3
吹水佬2020-11-24 11:16
程序代码:
从窗口样式看看:
*  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编辑过]

#4
radiofan2020-11-24 21:40
以下是引用吹水佬在2020-11-24 11:16:26的发言:

从窗口样式看看:
*  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 属性。使用这个属性创建的窗口,不能够通过键盘和鼠标改变
    窗口的大小。

1