Windows窗口
1. 窗口种类
重叠(Overlapped)窗口:通常用于建立应用程序主窗口。事实上,有时也叫做“主”窗口或者“框架”
窗口。
WS_OVERLAPPED = WS_TILED包含标题栏,无系统菜单(最小、大化,关闭,或者是对开始菜单栏的该程序右键弹出菜单)
WS_OVERLAPPEDWINDOW = WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX
= WS_TILEDWINDOW
弹出(Popup)窗口:通常以对话框和消息框的形式与用户对话。可以没有标题栏。
WS_POPUP 如果单独创建,是不能显示的,只是在开始菜单栏有个图标
WS_POPUPWINDOW = WS_POPUP|WS_BORDER|WS_POPUP|WS_SYSMENU
子(Child)窗口:通常用在视图(View)中,如在文本编辑器中的文本显示,也用在控件中,如在对
话框中的OK按钮。而对那些看起来像按钮或控件的子窗口,也称为“控件”窗口。不能有菜单栏,不能做弹出窗口。只能出现在另一个窗口中。另外,子窗口是唯一不能有菜单条的窗口。
WS_CHILD 如果单独创建,是不能运行的
WS_CHILDWINDOW = WS_CHILD
由重叠窗口、弹出窗口和子窗口组成的窗口应用程序
2. 窗口风格
WS_BORDER 窗口有一个细线框架
WS_CAPTION 窗口有标题栏
WS_SYSMENU 窗口有系统菜单,在标题栏上的最小、大化,关闭等选项
WS_MAXIMIZEBOX 窗口系统菜单最大化按键能用
WS_MINIMIZEBOX 窗口系统菜单最小化按键能用
WS_HSCROLL 窗口有水平滚动条
WS_VSCROLL 窗口有垂直滚动条
WS_MAXIMIZE 窗口初始为最大化
WS_MINIMIZE = WS_ICONIC窗口初始为最小化
WS_SIZEBOX = WS_THICKFRAME 窗口可以被改变大小
WS_TABSTOP 窗口能响应TAB按键
WS_DISABLED 窗口是不可用的,即不能接收用户消息
WS_VISIBLE 窗口初始为可见
WS_CLIPCHILDREN 当绘制窗口时,不绘制子窗口所在区域,用于父窗口
WS_CLIPSIBLINGS
WS_DLGFRAME
WS_GROUP
组合实例:
WS_POPUP | WS_BORDER启动图片
3. 系统自定义的窗口类
一些重要的窗口类
(Windows 3.1及以上版本)
#32768 弹出式菜单窗口(弹出式菜单是位于弹出窗口中,并完全填充弹出窗口的菜单)
#32769 桌面窗口
#32770 对话框
MDIClient MDI子窗口区域
一些重要的通用控件窗口类
(Windows 3.1及以上版本)
BUTTON 按钮控件窗口
STATIC 静态控件窗口
EDIT 编辑控件窗口
LISTBOX 列表框控件窗口
SCROLLBAR 滚滚动条控件窗口
COMBOBOX 滚组合框控件窗口
ComboLBox 滚列表框控件窗口(显示在组合框控件窗口之下的列表框)
(Windows 95/NT及以上版本)
RICHEDIT 滚多信息编辑控件窗口
SysListView32 滚列表视图控件窗口
ComboBoxEx32 滚扩展组合框控件窗口
SysAnimate32 滚动画控件窗口
msctls_trackbar32 滚幻灯片控件窗口
SysTreeView32 滚树型视图控件窗口
msctls_updown32 滚微调按钮控件窗口
msctls_progress32 滚进度指示控件窗口
SysHeader32 滚标题控件窗口(标题控件通常驻留在列表视图控件的顶部)
SysTabControl32 选项卡控件窗口
SysMonthCal32 月历控件窗口
SysDateTimePick32 日期/时间选项控件窗口
msctls_hotkey32 热键控件窗口
tooltips_class32 工具提示控件窗口
msctls_statusbar32 状态栏窗口
toolbarWindow32 工具栏窗口
ReBarWindow32 Rebar窗口
一些重要MFC窗口类
AfxWnd CWnd窗口
AfxFrameOrView MFC框架和视窗
AfxMDIFrame MDI框架窗口
AfxControlBar MFC控制条窗口
4. 与窗口相关的API函数
桌面窗口(窗口类#32769)
GetDesktopWindow()
SystemParametersInfo()
Shell_NotifyIcon()
SetWindowLong() 修改窗口风格
FindWindow() 搜索桌面上的窗口
WindowFromPoint() 找到当前窗口在桌面上的点坐标
GetSystemMetrics(SM_CXSCREEN) 获得屏幕尺寸
GetSystemMetrics(SM_CYSCREEN)