描述
创建一个新窗口.
FreeBASIC 语法
FUNCTION Create ( _ BYVAL hParent AS HWND = NULL, _ BYREF wszTitle AS WSTRING = "", _ BYVAL lpfnWndProc AS WNDPROC = NULL, _ BYVAL x AS LONG = CW_USEDEFAULT, _ BYVAL y AS LONG = CW_USEDEFAULT, _ BYVAL nWidth AS LONG = CW_USEDEFAULT, _ BYVAL nHeight AS LONG = CW_USEDEFAULT, _ BYVAL dwStyle AS UINT = WS_OVERLAPPEDWINDOW OR WS_CLIPCHILDREN OR WS_CLIPSIBLINGS, _ BYVAL dwExStyle AS UINT = WS_EX_CONTROLPARENT OR WS_EX_WINDOWEDGE _ ) AS HWND |
参数
hParent |
[in]句柄被创建的控件的父窗口或主窗口. |
wszTitle |
[in]窗口标题. |
lpfnWndProc |
窗口的回调过程[in]地址. |
x |
[in] X窗口的左上角相对于父窗口客户区的左上角. |
y |
[in]初始坐标的窗口的左上角相对于父窗口客户区的左上角. |
nWidth |
[in]窗口的宽度. |
nHeight |
[in]窗口的高度. |
dwStyle |
[in]的窗口被创建的风格.传递- 1使用默认样式. |
dwExStyle |
[in]产生的控件扩展窗口样式.传递- 1使用默认样式. |
返回值
如果函数成功,返回值是新窗口的句柄.
如果函数失败,返回值是NULL.获得扩展的错误信息,调用GetLastError.
Window Styles
以下是窗口样式.在创建窗口后,这些样式不能被修改,除非是.
Constant |
描述 |
WS_BORDER &H00800000 |
窗口有一条细线边界. |
WS_CAPTION &H00C00000 |
窗口有一个标题栏(包括WS_BORDER风格). |
WS_CHILD &H40000000 |
窗口是子窗口.具有此样式的窗口不能有菜单栏.这种方式不能用的WS_POPUP风格. |
WS_CHILDWINDOW &H40000000 |
同WS_CHILD风格. |
WS_CLIPCHILDREN &H02000000 |
在父窗口中发生绘图时,排除子窗口占用的区域.创建父窗口时使用此样式. |
WS_CLIPSIBLINGS &H04000000 |
剪辑的子窗口彼此相对;即,当一个特定的子窗口接收消息的WM_PAINT,WS_CLIPSIBLINGS式夹的所有其他重叠子窗口的子窗口区域进行更新.如果没有指定WS_CLIPSIBLINGS和子窗口重叠,这是可能的,当绘制子窗口的客户区内,画出一个相邻的子窗口的客户区内. |
WS_DISABLED &H08000000 |
最初禁用窗口.禁用的窗口无法接收来自用户的输入.要改变这种在窗口被创建,使用EnableWindow功能. |
WS_DLGFRAME &H00400000 |
该窗口具有与对话框一起使用的样式的边框.具有此样式的窗口不能有标题栏. |
WS_GROUP &H00020000 |
窗口是一组控件的第一个控件.该小组由第一控件所有控件定义后,到下一个控件与WS_GROUP风格.在每一组的第一个控件通常有WS_TABSTOP风格,用户可以从组到组.用户随后可以通过使用方向键将组中的一个控件更改为该组中的下一个控件.
You can turn this style on and off to change dialog box navigation. To change this style after a window has been created, use the SetWindowLong function. |
WS_HSCROLL &H00100000 |
窗口具有水平滚动条. |
WS_ICONIC &H20000000 |
窗口最初被最小化.同WS_MINIMIZE风格. |
WS_MAXIMIZE &H01000000 |
窗口最初最大化. |
WS_MAXIMIZEBOX &H00010000 |
窗口具有最大化按钮.不能结合WS_EX_CONTEXTHELP风格.的WS_SYSMENU风格也必须指定. |
WS_MINIMIZE &H20000000 |
窗口最初被最小化.同WS_ICONIC风格. |
WS_MINIMIZEBOX &H00020000 |
窗口有一个最小化按钮.不能结合WS_EX_CONTEXTHELP风格.的WS_SYSMENU风格也必须指定. |
WS_OVERLAPPED &H00000000 |
窗口是重叠的窗口.重叠的窗口有标题栏和边框.同WS_TILED风格. |
WS_OVERLAPPEDWINDOW (WS_OVERLAPPED OR WS_CAPTION OR WS_SYSMENU OR WS_THICKFRAME OR WS_MINIMIZEBOX OR WS_MAXIMIZEBOX)
|
窗口是重叠的窗口.同WS_TILEDWINDOW风格. |
WS_POPUP &H80000000 |
窗口是一个弹出窗口.这种方式不能用的WS_CHILD风格. |
WS_POPUPWINDOW (WS_POPUP OR WS_BORDER OR WS_SYSMENU) |
窗口是弹出窗口.的WS_CAPTION和WS_POPUPWINDOW风格必须结合使窗口菜单中可见. |
WS_SIZEBOX &H00040000 |
窗口具有大?呖?同WS_THICKFRAME风格. |
WS_SYSMENU &H00080000 |
窗口在标题栏上有一个窗口菜单.的WS_CAPTION风格也必须指定. |
WS_TABSTOP &H00010000 |
这个窗口是一个控件可以接收键盘焦点,当用户按下TAB关键.按TAB关键的变化与WS_TABSTOP方式下控件键盘焦点.
You can turn this style on and off to change dialog box navigation. To change this style after a window has been created, use the SetWindowLong function. For user-created windows and modeless dialogs to work with tab stops, alter the message loop to call the IsDialogMessage function. |
WS_THICKFRAME &H00040000 |
窗口具有大?呖?同WS_SIZEBOX风格. |
WS_TILED &H00000000 |
窗口是重叠的窗口.重叠的窗口有标题栏和边框.同WS_OVERLAPPED风格. |
WS_TILEDWINDOW (WS_OVERLAPPED OR WS_CAPTION OR WS_SYSMENU OR WS_THICKFRAME OR WS_MINIMIZEBOX OR WS_MAXIMIZEBOX)
|
窗口是重叠的窗口.同WS_OVERLAPPEDWINDOW风格. |
WS_VISIBLE &H10000000 |
窗口最初可见.
This style can be turned on and off by using the ShowWindow or SetWindowPos function. |
WS_VSCROLL &H00200000 |
窗口具有垂直滚动条. |
Extended Window Styles
Constant/value |
描述 |
WS_EX_ACCEPTFILES &H00000010 |
窗口接受拖放文件. |
WS_EX_APPWINDOW &H00040000 |
当窗口可见时,将顶层窗口强制到任务栏上. |
WS_EX_CLIENTEDGE &H00000200 |
窗口有一个凹边的边框. |
WS_EX_COMPOSITED &H02000000 |
使用双缓冲方式绘制底部到顶部绘画顺序的所有窗口的后代.有关更多信息,请参见备注.这是不能在窗口有一个或CS_OWNDC或CS_CLASSDC.类风格
Windows 2000: This flag is not supported. |
WS_EX_CONTEXTHELP &H00000400 |
窗口的标题栏包含问号.当用户单击问号时,光标将指针改为问号.如果用户点击一个子窗口,孩子会收到一WM_HELP消息.子窗口必须将消息传递给父窗口的程序,应使用HELP_WM_HELP命令调用的WinHelp功能.帮助应用程序显示一个弹出窗口,该窗口通常包含子窗口的帮助.
WS_EX_CONTEXTHELP cannot be used with the WS_MAXIMIZEBOX or WS_MINIMIZEBOX styles. |
WS_EX_CONTROLPARENT &H00010000 |
窗口本身包含要在对话框中导航的子窗口.如果这种风格被指定,对话管理器入该窗口的子窗口进行导航操作,如处理TAB键,箭头键,或键盘助记符. |
WS_EX_DLGMODALFRAME &H00000001 |
窗口有一个双边界;窗口可以,可选的,是通过在dwStyle参数指定WS_CAPTION风格标题栏创建. |
WS_EX_LAYERED &H00080000 |
窗口是分层窗口.注意,这不能用于子窗口.而且,这是不能在窗口有一个或CS_OWNDC或CS_CLASSDC.类风格 |
WS_EX_LAYOUTRTL &H00400000 |
如果shell语言是希伯来语、阿拉伯语或另一种支持读顺序对齐的语言,则窗口的水平原点位于右边缘.向左增加水平值. |
WS_EX_LEFT &H00000000 |
该窗口具有通用的左对齐属性.这是默认. |
WS_EX_LEFTSCROLLBAR &H00004000 |
如果shell语言是希伯来语、阿拉伯语或另一种支持阅读顺序对齐的语言,则垂直滚动条(如果存在)位于客户端区域的左边.对于其他语言,风格被忽略. |
WS_EX_LTRREADING &H00000000 |
使用左到右读顺序属性显示窗口文本.这是默认. |
WS_EX_MDICHILD &H00000040 |
窗户是一MDI子窗口. |
WS_EX_NOACTIVATE &H08000000 |
使用此样式创建的顶层窗口在用户单击它时不会成为前台窗口.当用户最小化或关闭前台窗口时,系统不会将此窗口引入前台.
To activate the window, use the SetActiveWindow or SetForegroundWindow function.
The window does not appear on the taskbar by default. To force the window to appear on the taskbar, use the WS_EX_APPWINDOW style. |
WS_EX_NOINHERITLAYOUT &H00100000 |
窗口无法将其窗口布局传递给其子窗口. |
WS_EX_NOPARENTNOTIFY &H00000004 |
这种方式创建子窗口不发送消息给它的父窗口WM_PARENTNOTIFY当它被创建或销毁. |
WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE OR WS_EX_CLIENTEDGE) |
窗口是重叠的窗口. |
WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE OR WS_EX_TOOLWINDOW OR WS_EX_TOPMOST) |
TBD |
WS_EX_RIGHT &H00001000 |
该窗口具有通用的'右对齐'属性.这取决于窗口类.只有当shell语言为希伯来语、阿拉伯语或其他支持读顺序对齐的语言时,此样式才会起作用;否则,样式将被忽略.
Using the WS_EX_RIGHT style for static or edit controls has the same effect as using the SS_RIGHT or ES_RIGHT style, respectively. Using this style with button controls has the same effect as using BS_RIGHT and BS_RIGHTBUTTON styles. |
WS_EX_RIGHTSCROLLBAR &H00000000 |
垂直滚动条(如果存在)位于客户端区域的右侧.这是默认. |
WS_EX_RTLREADING &H00002000 |
如果shell语言是希伯来语、阿拉伯语或其他支持读顺序对齐的语言,则使用右到左读顺序属性显示窗口文本.对于其他语言,风格被忽略. |
WS_EX_STATICEDGE &H00020000 |
该窗口具有用于不接受用户输入的项目的三维边框样式. |
WS_EX_TOOLWINDOW &H00000080 |
该窗口将用作浮动工具栏.工具窗口具有比普通标题栏短的标题栏,窗口标题使用较小的字体绘制.工具窗口不显示在任务栏或在对话框出现时,用户按下ALT+TAB.如果一个工具窗口系统菜单,图标不显示在标题栏.然而,你可以通过右键单击或输入ALT+SPACE.显示系统菜单 |
WS_EX_TOPMOST &H00000008 |
窗口应该放在所有非顶层窗口之上,并且应该保持在它们上面,即使窗口被停用.要添加或删除该样式,使用SetWindowPos功能. |
WS_EX_TRANSPARENT &H00000020 |
该窗口不应该被画,直到窗口下面的兄弟姐妹(由同一个线程创建)已经画.窗口显示透明,因为相关的同级窗口的位已被绘制.
To achieve transparency without these restrictions, use the SetWindowRgn function. |
WS_EX_WINDOWEDGE &H00000100 |
该窗口具有一个带凸起边缘的边框. |
用法示例
DIM hwndMain AS HWND = pWindow.Create
DIM hwndMain AS HWND = pWindow.Create(NULL, "CWindow Test", @WndProc)
DIM hwndMain AS HWND = pWindow.Create(NULL, "CWindow Test", @WndProc), 0, 0, 525, 395)
DIM hwndMain AS HWND = pWindow.Create(NULL, "CWindow Test", @WndProc, 0, 0, 525, 395, _
WS_OVERLAPPEDWINDOW OR WS_CLIPCHILDREN OR WS_CLIPSIBLINGS, WS_EX_CONTROLPARENT OR WS_EX_WINDOWEDGE)
引用文件
CWindow.inc