`

API:CreateWindow详解

    博客分类:
  • VC
阅读更多

API:CreateWindow详解


函数功能:该函数创建一个重叠式窗口、弹出式窗口或子窗口。它指定窗口类,窗口标题,窗口风格,以及窗口的初始位置及大小(可选的)。该函数也指定该窗口的父窗口或所属窗口(如果存在的话),及窗口的菜单。若要使用除CreateWindow函数支持的风格外的扩展风格,则使用CreateWindowEx函数代替CreateWindow函数。

  函数原型:HWND CreateWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName,DWORD dwStyle,int x,int y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HANDLE hlnstance,LPVOID lpParam);

  参数:

  lpClassName:指向一个空结束的字符串或整型数atom。如果该参数是一个整型量,它是由此前调用theGlobalAddAtom函数产生的全局量。这个小于0xC000的16位数必须是lpClassName参数字的低16位,该参数的高位必须是0。

  如果lpClassName是一个字符串,它指定了窗口的类名。这个类名可以是任何用函数RegisterClassEx注册的类名,或是任何预定义的控制类名。请看说明部分的列表。

  LPWindowName:指向一个指定窗口名的空结束的字符串指针。

  如果窗口风格指定了标题条,由lpWindowName指向的窗口标题将显示在标题条上。当使用Createwindow函数来创建控制例如按钮,选择框和静态控制时,可使用lpWindowName来指定控制文本。

  dwStyle:指定创建窗口的风格。该参数可以是下列窗口风格的组合再加上说明部分的控制风格。风格意义:

  WS_BORDER:创建一个单边框的窗口。

  WS_CAPTION:创建一个有标题框的窗口(包括WS_BODER风格)。

  WS_CHILD:创建一个子窗口。这个风格不能与WS_POPUP风格合用。

  WS_CHLDWINDOW:与WS_CHILD相同。

  WS_CLIPCHILDREN:当在父窗口内绘图时,排除子窗口区域。在创建父窗口时使用这个风格。

  WS_CLlPBLINGS;排除子窗口之间的相对区域,也就是,当一个特定的窗口接收到WM_PAINT消息时,WS_CLIPSIBLINGS 风格将所有层叠窗口排除在绘图之外,只重绘指定的子窗口。如果未指定WS_CLIPSIBLINGS风格,并且子窗口是层叠的,则在重绘子窗口的客户区时,就会重绘邻近的子窗口。

  WS_DISABLED:创建一个初始状态为禁止的子窗口。一个禁止状态的窗日不能接受来自用户的输入信息。

  WS_DLGFRAME:创建一个带对话框边框风格的窗口。这种风格的窗口不能带标题条。

  WS_GROUP:指定一组控制的第一个控制。这个控制组由第一个控制和随后定义的控制组成,自第二个控制开始每个控制,具有WS_GROUP风格,每个组的第一个控制带有WS_TABSTOP风格,从而使用户可以在组间移动。用户随后可以使用光标在组内的控制间改变键盘焦点。

  WS_HSCROLL:创建一个有水平滚动条的窗口。

  WS_ICONIC:创建一个初始状态为最小化状态的窗口。与WS_MINIMIZE风格相同。

  WS_MAXIMIZE:创建一个具有最大化按钮的窗口。该风格不能与WS_EX_CONTEXTHELP风格同时出现,同时必须指定WS_SYSMENU风格。

  WS_OVERLAPPED:产生一个层叠的窗口。一个层叠的窗口有一个标题条和一个边框。与WS_TILED风格相同。

  WS_OVERLAPPEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXMIZEBOX风格的层叠窗口,与WS_TILEDWINDOW风格相同。

  WS_POPUP;创建一个弹出式窗口。该风格不能与WS_CHLD风格同时使用。

  WS_POPUWINDOW:创建一个具有WS_BORDER,WS_POPUP,WS_SYSMENU风格的窗口,WS_CAPTION和WS_POPUPWINDOW必须同时设定才能使窗口某单可见。

  WS_SIZEBOX:创建一个可调边框的窗口,与WS_THICKFRAME风格相同。

  WS_SYSMENU:创建一个在标题条上带有窗口菜单的窗口,必须同时设定WS_CAPTION风格。

  WS_TABSTOP:创建一个控制,这个控制在用户按下Tab键时可以获得键盘焦点。按下Tab键后使键盘焦点转移到下一具有WS_TABSTOP风格的控制。

  WS_THICKFRAME:创建一个具有可调边框的窗口,与WS_SIZEBOX风格相同。

  WS_TILED:产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框。与WS_OVERLAPPED风格相同。

  WS_TILEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU MS_THICKFRAME.

  WS_MINIMIZEBOX,WS_MAXMIZEBOX风格的层叠窗口。与WS_OVERLAPPEDWINDOW风格相同。

  WS_VISIBLE:创建一个初始状态为可见的窗口。WS_VSCROLL:创建一个有垂直滚动条的窗口。

  X:指定窗口的初始水平位置。对一个层叠或弹出式窗口,X参数是屏幕坐标系的窗口的左上角的初始X坐标。对于子富口,x是子窗口左上角相对父窗口客户区左上角的初始X坐标。如果该参数被设为CW_UCEDEFAULT则系统为窗口选择缺省的左上角坐标并忽略Y参数。CW_USEDEFAULT只对层叠窗口有效,如果为弹出式窗口或子窗口设定,则X和y参数被设为零。

  Y:指定窗口的初始垂直位置。对一个层叠或弹出式窗日,y参数是屏幕坐标系的窗口的左上角的初始y坐标。对于子窗口,y是子窗口左上角相对父窗口客户区左上角的初始y坐标。对于列表框,y是列表框客户区左上角相对父窗口客户区左上角的初始y坐标。如果层叠窗口是使用WS_VISIBLE风格位创建的并且X参数被设为CW_USEDEFAULT,则系统将忽略y参数。

  nWidth:以设备单元指明窗口的宽度。对于层叠窗口,nWidth或是屏幕坐标的窗口宽度或是CW_USEDEFAULT。若nWidth是CW_USEDEFAULT,则系统为窗口选择一个缺省的高度和宽度:缺省宽度为从初始X坐标开始到屏幕的右边界,缺省高度为从初始X坐标开始到目标区域的顶部。CW_USEDFEAULT只参层叠窗口有效;如果为弹出式窗口和子窗口设定CW_USEDEFAULT标志则nWidth和nHeight被设为零。

  nHelght:以设备单元指明窗口的高度。对于层叠窗口,nHeight是屏幕坐标的窗口宽度。若nWidth被设为CW_USEDEFAULT,则系统忽略nHeight参数。

  hWndParent:指向被创建窗口的父窗口或所有者窗口的旬柄。若要创建一个子窗口或一个被属窗口,需提供一个有效的窗口句柄。这个参数对弹出式窗日是可选的。Windows NT 5.0;创建一个消息窗口,可以提供HWND_MESSAGE或提供一个己存在的消息窗口的句柄。

  hMenu:菜单句柄,或依据窗口风格指明一个子窗口标识。对于层叠或弹出式窗口,hMenu指定窗口使用的菜单:如果使用了菜单类,则hMenu可以为NULL。对于子窗口,hMenu指定了该子窗口标识(一个整型量),一个对话框使用这个整型值将事件通知父类。应用程序确定子窗口标识,这个值对于相同父窗口的所有子窗口必须是唯一的。

  hlnstance:与窗口相关联的模块事例的句柄。

  lpParam:指向一个值的指针,该值传递给窗口 WM_CREATE消息。该值通过在IParam参数中的CREATESTRUCT结构传递。如果应用程序调用CreateWindow创建一个MDI客户窗口,则lpParam必须指向一个CLIENTCREATESTRUCT结构。

  返回值:如果函数成功,返回值为新窗口的句柄:如果函数失败,返回值为NULL。若想获得更多错误信息,请调用GetLastError函数。

  备注:在返回前,CreateWindow给窗口过程发送一个WM_CREATE消息。对于层叠,弹出式和子窗口,CreateWindow给窗口发送WM_CREATE,WM_GETMINMAXINFO和WM_NCCREATE消息。消息WM_CREATE的IParam参数包含一个指向CREATESTRUCT结构的指针。如果指定了WS_VISIBLE风格,CreateWindow向窗口发送所有需要激活和显示窗口的消息。

  获取有关任务条是否为创建的窗口显示一个按钮的控制信息,参看Taskbar按钮的Visbility。

  以下预定义的控制类可以在lpClassName参数中指定。注意在dwStyle参数中可以使用的相应的控制风格。

  BUTTON按钮按钮是一个小矩形子窗口,用户可以点击来打开或关闭。按钮控制可以单独使用或包含在组中使用,可以为控制写标签或不写标签。当用户点击按钮控制时按钮的外观有明显的改变。请参看Button。查看dwStyle参数中指定的按钮风格表请参考Button Style。

  COMBOBOX组合框由一个列表框和一个类似于编辑控制的选择域组成。在使用这个风格控制时,应用程序或者使列表框一直显示或者是作成一个下拉列表。如果列表框可见,则在编辑域中输入字符将使列表框中与字符一致的第一个域高亮。反之,在列表框中选择的项将显示在编辑域中。请参看Combo Boxes。

  查看dwStyle参数中指定的组合框风格表请参考Combo Boxes Style。

  EDIT编辑框一个小的矩形子窗口用户可以使用键盘向其中输入文本。用户可以通过点击或按Tab键来选中编辑框控制并且使控制获得焦点。当编辑框中显示一个闪烁的插入记号时,用户可以输入文本。使用鼠标移动光标,选择被替换的字符或设置插入字符的位置或使用回退键删除字符。请参看Edit。controls。

  查看dwStyle参数中指定的编辑框风格的表格请参考Edit Control Style。

  LISTBOX列表框字符串的列表。当应用程序必须显示名称的列表,例如文件名列表等,使用户可以从中选择时就可指定列表框。用户可以通过单击来选择名称。选择时,被选择名高亮,同时传递给父窗口一个通知消息。请参看LiSt Box Style。查看dwStyle参数中指定的列表风格表请参考List BOX Control Style。

  MDICLIENT MDI客户设计出MDI客户窗口。窗口接收控制MDI应用程序子窗口的消息。建议使用两种控制风格位:WS_CLIPCHILDREN和WS_CHILD。指定了WS_HSCROLL和WS_VSCROLL风格的MDI客户窗口允许用户将MDI子窗口滑动进入视窗。请参看MDI。

  RiChEdit设计一个Rich Editl.0版的控制。该控制使用户可以以字符和段落格式测览和编辑文本,并且可以包含嵌入的COM对象。请参看Rich Edit Controls。查看dwStyle参数中指定的RichEdit风格表请参考LiSt Box Control Style。

  RICHEDIT CLASS设计一个Rich Edik2.0版的控制。该控制使用户可以以字符和段落格式测览和编辑文本,并且可以包含嵌入的COM对象。请参看RichEditControls。查看dwStyle参数中指定的RichEdit风格表请参考RichEditControIStyle。

  SCROLLBAR 滚动条设计的一个包含着一个滚动盒和两端有方向箭头的矩形。只要用户点击了控制,滚动条就给父窗口发送一个通知消息。如有必要,父窗口负责更新滚动条的位置。请参看ScrollBars。查看dwStyle参数中指定的滚动条风格表请参考Scroll Bars Style。

  STATIC一个简单的静态文本域,文本盒或矩形用于给控制加标签,组合控制或将控制与其他控制分开。

  静态控制不提供输入和也不提供输出。请参看Static Control Styles。查看dwStyle参数中指定的静态文本风格表请参考Scroll Bars Style。

  Windows95:系统可以支持最大16,364个窗口句柄。

  备注:如果在链接应用程序时指明是Windows 4.x版本,除非应用程序的窗口有窗口某单,否则窗口控制没有标题控制。对Windows3.x版本没有这种要求。

  Windows CE:CreateWindow是以“宏”方式完成的。它被定义为CreateWindowEX,并且dwExStyle参数被置为长整数0。不支持菜单条控制,除非被声明为子窗口标志否则hMenu参数必须为NULL。不支持MDICLIENT窗口类。dwStyle参数可以是对话框(Dialogue Box),窗口(Windows),控制(Controls)文件中的窗口风格和控制风格的组合。

  下列dwStyle标志在窗口中不支持:

  WS_CHILDWINDOW WS_ICONC;WS_MAXMIZE WS_MAXIMIZEBOX;WS_MINIMIZE WS_MINIMIZEBOX;

  WS_OVERLAPPEDWINDOW WS_POPUPWINDOW;WS_SIZEBOXWS_THICKFRAME WS_TILED WS_TILEDWINDOW

  下列dwStyle标志在控制和对话框中不支持:

  不支持的按钮风格和静态控制风格:

  BS_LEFTTEXT SS_BLACKFRAME;BS_MULTILINE SS_GRAYFRAME BS_TEXT SS_METAPICT;BS_USERBUTTON SS_SIMPLE

  不支持组合框SS_WHITERECT风格。

  CBS_OWNERDRAWFIXED SS_BLACKRECT;CBS_OWNWEDRAWVARIABLE SS_GRAYRECT; CBS_SIMPLE8R旧HTrIMAGE

  不支持列表框控制SS_WHITEFRAME风格。

  LBS_NODATA

  不支持的对话框风格:

  LBS_OWNERDRAWFIXED DS_ABSALIGN; LBS_OWNERDRAWVARIABLE DS_CENTERMOUSE; LBS_STANDARD DS_CONTEXTHELP

  不支持滚动条的 DS_FIXEDSYS风格

  SBS_BOTTOMALIGN DS_NOFAILCREATE;SBS_RIGHTALIGN DS_NOIDLEMSG;

  SBS_SlZEBOXBOTT0MRIHTALIGN DS_SYSMODAL;SBS_SIZEGRIP

  可使用BS_OWNERDRAW风格来代替BS_USERBUTTON风格。

  可使用SS_LEFT或SS_LEFTNOWORDWRAP风格来代替静态控制的SS_SIMPLE风格。

  不支持MDICLIENT窗口类。

  所有窗口都隐含WS_CLIPSIBLINGS和 WS_CLIPCHILDREN风格。

  Windows CE1.0版除对话框外不支持被属窗口。如果hwndParent参数不为NULL,则窗口隐含给出WS_CHILD风格。Windows CE1.0不支持菜单条。

  速查: Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:1.0以上版本;头文件:winuser.h;库文件:user32.lib; Unicode:在Windows NT上实现为Unicode和ANSI两种版本。

分享到:
评论

相关推荐

    windows API 开发详解光盘

    这个光盘资料,由范文庆、周彬彬和安靖编著,出自人民邮电出版社的《Windows API 开发详解》一书,包含了大量的函数、接口以及编程实例,旨在帮助读者深入理解和掌握Windows平台上的应用程序开发。 首先,我们要...

    CreateWindow函数详解.doc )

    `CreateWindow`函数是Windows编程中的核心API之一,用于创建各种类型的窗口,如交叠窗口、弹出窗口或子窗口等。通过该函数,开发者能够指定窗口的各种属性,包括但不限于窗口类、标题、风格、位置和尺寸等。此外,该...

    易语言模块常用API.rar

    《易语言模块常用API详解》 易语言,作为一款国内自主研发的编程语言,以其独特的“易”学特性,深受广大编程爱好者的喜爱。在易语言的编程过程中,API(Application Programming Interface)扮演着至关重要的角色...

    WIndows API 实例详解

    在《Windows API 实例详解》这个资源中,很可能是通过一个名为"Window 2000_XP API 函数实例精解.exe"的执行文件,向读者展示了大量Windows API的使用示例,特别关注于Windows 2000和XP这两个操作系统版本。...

    WindowsAPI开发详解源码

    1. **窗口管理**:Windows API中的`CreateWindow`函数用于创建窗口,`ShowWindow`用来显示或隐藏窗口,而`SetWindowPos`则可以调整窗口的位置和大小。此外,消息机制是窗口交互的核心,`GetMessage`、`...

    Windows API开发详解 函数、接口、编程实例

    这个压缩包"Windows API开发详解 函数、接口、编程实例"显然是一份详细的学习资料,旨在帮助开发者深入理解和运用Windows API进行软件开发。 API全称为Application Programming Interface,即应用程序编程接口。在...

    Win32_API_函数大全使用详解

    4. **窗口和消息处理**:Win32 API中的窗口创建、消息循环、消息处理函数,如CreateWindow、DispatchMessage和WndProc等,这些都是构建Windows应用程序的基础。 5. **GDI(Graphics Device Interface)**:用于图形...

    Windows API 编程_pdf_windowsAPI编程_

    **Windows API 编程详解** Windows API(Application Programming Interface)是微软为开发者提供的一套用于构建Windows应用程序的接口。它包含了大量的函数、常量、结构体、消息等元素,允许程序员控制操作系统,...

    Windows API 开发详解——函数、接口、编程实例

    它们是操作系统服务的入口点,如`CreateWindow`用于创建窗口,`SendMessage`用于向窗口发送消息,`GetWindowText`用于获取窗口的文本等。理解这些函数的工作原理和使用方式至关重要。每个函数都有特定的参数和返回值...

    易语言API创建窗口详解源码.7z

    本压缩包“易语言API创建窗口详解源码.7z”包含了一个关于如何使用易语言调用API函数创建窗口的详细示例。通过这个源码,我们可以学习到以下关键知识点: 1. **API调用**:易语言提供了调用系统API的机制,这通常...

    MFC类库详解+WIN32API

    MFC类库详解部分: 1. **CObject基础类**:MFC的基础类,提供了对象的序列化、调试和动态类型识别等功能。 2. **CWinApp类**:每个MFC应用程序都派生自CWinApp,它负责应用程序的初始化、运行和退出过程。 3. **...

    mfc类库详解 和 win32api.rar

    Win32 API详解: Win32 API是Windows操作系统提供的函数库,涵盖了窗口管理、图形绘制、内存管理、进程和线程控制等多个方面。学习Win32 API有助于理解Windows的底层工作原理,为编写高性能或特定需求的程序提供可能...

    c、c++标准类库+mfc类库详解+Win32API大全+vb_win32api.rar

    1. 窗口管理:CreateWindow、ShowWindow等函数用于创建和控制窗口。 2. 消息处理:GetMessage、TranslateMessage和DispatchMessage构成消息循环,处理来自系统的各种消息。 3. GDI(Graphics Device Interface):...

    MFC类库详解、API参考手册等

    1. **MFC类库详解**: MFC类库包括了很多核心的C++类,如CWinApp、CWnd、CFrameWnd、CDocument、CView等。CWinApp是每个MFC应用程序的基础,它处理应用程序的初始化和退出。CWnd是所有窗口类的基类,包括对话框、...

    Windows API开发详解--函数、接口、编程实例

    Windows API是微软操作系统的核心组成部分,它为开发者提供了一组丰富的函数和接口,使得程序员能够创建在Windows平台上运行的应用程序。Windows API提供了系统级的服务,包括窗口管理、图形绘制、文件操作、网络...

    Windows API大全API一日一练消息详解 合集

    它包含了大量的函数调用,如CreateWindow用于创建窗口,SendMessage用于在窗口之间传递消息,WriteFile用于写入文件等。这些API函数让开发者能够构建功能丰富的应用程序。 “API一日一练”可能是一个系列,旨在每天...

    API+for+Windows+2000_XP详解

    Win32 API包含了数千个函数,如CreateWindow用于创建窗口,CloseHandle用于关闭句柄,SendMessage用于在窗口间发送消息等。了解并熟练掌握这些函数,对于编写高效、稳定的Windows应用程序至关重要。 在Windows 2000...

    Win32_API函数使用详解.doc

    ### Win32_API函数使用详解 #### 一、窗口函数(Window) ##### 1. **AdjustWindowRect函数** - **功能概述**: - `AdjustWindowRect`函数根据所需的客户矩形大小,计算出需要的窗口矩形大小。计算出的窗口矩形...

    Windows API 函数详解

    API函数通常以`CreateWindow`、`GetMessage`、`DispatchMessage`等命名,它们是Windows系统的核心。例如,`CreateWindow`函数用于创建一个新的窗口,其原型为: ```cpp HWND CreateWindow( LPCSTR lpClassName, ...

Global site tag (gtag.js) - Google Analytics