精华内容
下载资源
问答
  • windows窗口种类,组成基本操作.docx
  • 年级2020级 专业电子商务 实验日期 2020 年 9 月 30 日 实验项目名称 Windows7基本操作 文件与文件管理 学 实验合作者 学生姓名 号 姓名 指导教师(签名) 评阅日期 实验报告评分 实验报告基本内容 一实验目的 1熟悉...
  • 98窗口组成及操作 教学内容 windows 98窗口组成及操作 教学目的1使学生掌握windows 95窗口操作的有关知识 2培养学生学习计算机的兴趣 3培养学生主动发现问题解决问题的能力 教学重点窗口组成及其基本操作 课的...
  • 课题名称 Windows 7 入门 教学目标 1基本知识 了解操作系统的基本概念及常用操作系统的特点 了解 Windows7 桌面的组成能够描述 Windows7 图形操作界面的功能和特点 2操作技能目标 具有启动和退出 Windows 操作系统的...
  • word整理版 学习参考资料 Windows XP窗口组成与操作教学设计 临川十六中 蔡学顺 教学目标 认知目标 1认识windows xp窗口了解windows xp窗口组成 2掌握windows xp窗口基本操作 3初识菜单命令滚动条 4进一步掌握鼠标...
  • windows窗口基本代码详细解析

    千次阅读 2012-10-30 15:55:05
    /*下列注释函数均在平台SDK文档中说明,并在不同的头文件中声明,其中绝大多数在WINUSER.H中声明。*/ #include ... // 窗口过程; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstan
    /*下列注释函数均在平台SDK文档中说明,并在不同的头文件中声明,其中绝大多数在WINUSER.H中声明。*/
    #include <windows.h>

    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; // 窗口过程;

    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                        PSTR szCmdLine, int iCmdShow)  //程序入口点;
    {
         static TCHAR szAppName[] = TEXT ("HelloWin") ;
         HWND         hwnd ;   //窗口句柄类HWND;
         MSG          msg ;   //P54  消息;
         WNDCLASS     wndclass ;  //P47  注册窗口类,生成对象;解释:窗口类定义了窗口的一般特征,因此可以使用同一窗口类创建许多不同的窗口。
         wndclass.style         = CS_HREDRAW | CS_VREDRAW ; 
    //1.。。见上:CS_HREDRAW 窗口的水平方向尺寸;CS_VREDRAW   窗口的垂直方向尺寸;这两个标示符确保了文本串既是在改变了窗口大小后仍位于窗口中央。
         wndclass.lpfnWndProc   = WndProc ;
    //2.。。见上:即此程序的第二个函数。其处理基于这个窗口类创建的所有窗口的全部信息。在c语言中像这样在语句中使用函数名时,实际引用提供的是指向函数的指针。
    //lpfn  “指向函数的长指针”
         wndclass.cbClsExtra    = 0 ;
         wndclass.cbWndExtra    = 0 ;
    //3和4.。。上面两个域用于在类结构和windows内部保存的窗口结构中预留一些额外空间;程序可以根据需要来使用预留的空间,此处没有使用,所以赋值为0;     cb   “count of bytes(字节数)”
         wndclass.hInstance     = hInstance ;
    //5.。。上面的一个域是程序的实例句柄(他也是WinMain的参数之一)

         wndclass.hIcon          = LoadIcon (NULL, IDI_APPLICATION) ;
    //6.。。见上:LoadIcon加载图标供程序使用.
    //第一个参数设为NULL是来获取预先定义(默认)的图标句柄;
    //若加载定制的图标(图标应该保存在磁盘.EXE程序文件中),这个参数应该设置为程序的实例句柄hInstance;
    //第二个参数标识图标,对预先定义的图标此参数是以IDI开始的标示符,标示符在WINUSER.H中定义;
    //LoadIcon函数返回该图标的句柄
         wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ; 
    //7.。。见上:LoadCursor加载鼠标指针供程序使用;(可以参考LoadIcon)
    //LoadCursor函数加载一个预先定义的鼠标光标(命名为IDC_ARROW),并返回光标的句柄。该句柄被赋给WNDCLASS结构的hCursor域。
    //当鼠标光标在基于这个类创建的窗口的客户区域上出现时,它变成一个小箭头。
         wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
    //8.。。GetStockObject获取一个图形对象,在这个例子中,是获取绘制窗口背景的刷子;
    //调用则返回一个刷子(此时为‘白色刷子的’)的句柄。
         wndclass.lpszMenuName  = NULL ;
    //9.。。上个域指定窗口类菜单。因此程序没有应用程序菜单,所以该字段被设置为NULL。
         wndclass.lpszClassName = szAppName ;
    //10.。。上句是给出一个类名。对于小程序类名可以和程序名相同,即存放在szAppName变量中的字符串“HelloWin”;
    //上述字符串是由ASCII字符组成还是由Unicode字符组成取决于是否定义了UNICODE标示符;


         if (!RegisterClass (&wndclass))   //RegisterClass  是为程序窗口注册窗口类;该函数只有一个参数,即指向WNDCLASS结构的指针。
         {
              MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                          szAppName, MB_ICONERROR) ;  //MessageBox  是显示消息框;
              return 0 ;
         }


    //如下:CreateWindow  是根据窗口类创建一个窗口;返回被创建的窗口的句柄,该句柄存放在变量hwnd中。
         hwnd = CreateWindow (szAppName, // window class name  是程序注册的窗口类名称;这就是如何把我们正在创建的窗口与一个窗口相联结类的方式。 
                              TEXT ("The Hello Program"), // window caption(标题,说明)
                              WS_OVERLAPPEDWINDOW,  // window style 窗口风格(转到定义看看):标题栏,菜单框,缩小放大关闭图标及四周表示窗口大小的边框。
                                                                       //“| WS_VSCROLL | WS_HSCROLL” 加上这个 就能使用 垂直滚动(WS_VSCROLL) 和 水平滚动(WS_HSCROLL)
                                                                       //   WS ‘窗户风格’;   垂直 ‘vertical’;   水平  ‘horizontal’;
                              CW_USEDEFAULT,              // initial x position   下面四个CW_USEDEFAULT都表示是使用windows默认尺寸;
                              CW_USEDEFAULT,              // initial y position
                              CW_USEDEFAULT,              // initial x size
                              CW_USEDEFAULT,              // initial y size
                              NULL,                       // parent window handle  当创建一个“最高级”窗口,如应用程序窗口时,则“父窗口句柄”的参数设置为NULL。
                              NULL,                       // window menu handle          因窗口没有菜单则“窗口菜单句柄”设置为NULL;
                              hInstance,                  // program instance handle  “程序实例句柄”设置为实例句柄,它是作为WinMain的参数传递给这个程序的;
                              NULL) ;                     // creation parameters  “创建参数” 指针设置为NULL,可以用这个指针访问以后想要引用的程序中的数据;
    //ShowWindow  在屏幕上显示窗口;两个参数:一、窗口句柄;二、是作为参数传给WinMain的iCmdShow,它确定最初如何在屏幕上显示窗口。
    //第二个参数:1.如果窗口按常规显示,那么从WinMain接收并传递给ShowWindow的就是SW_SHOWNORMAL;
    //2.最大化,则为SW_SHOWMAXIMIZED;3.若只显示在任务栏上,则为SW_SHOWMINNOACTIVE。
         ShowWindow (hwnd, iCmdShow) ;
    //如果第二个参数是SW_SHOWNORMAL,则窗口的客户区域被窗口类中定义的背景刷子所覆盖。函数调用UpdateWindow,导致客户区域被绘制。
         UpdateWindow (hwnd) ;  //指示窗口刷新自身;它通过给下面的窗口过程(即 WndProc函数)发送一个WM_PAINT消息来做到这一点。


    //调用完UpdateWindow后窗口就出现在显示器上。程序现在必须读入用户键盘和鼠标输入的数据。windows为当前运行的每个windows程序维护一个“消息队列”
    //在发生输入事件后,windows将事件转化为一个“消息”,并将消息放入程序消息队列中。
    //程序通过执行一段称为“消息循环”的代码从消息队列中取出消息。如下:
         while (GetMessage (&msg, NULL, 0, 0))  //GetMessage  从消息队列中获取消息; msg  是前面定义的‘消息’类型,其结构体具体可参见MSG的定义;
         {                                                  //NULL,0,0 是表示程序接收它自己创建的所有窗口的所有消息。详情见 P55.
              TranslateMessage (&msg) ;  //TranslateMessage 将msg结构传给Windows, 转换某些键盘信息;(第六章将深入讨论)
              DispatchMessage (&msg) ;   //DispatchMessage  将消息发送给窗口过程;
         }
         return msg.wParam ;
    }


    // 上面的都是准备工作,实际的动作发生在窗口过程中。窗口过程确定了在窗口的客户区域中显示些什么,以及窗口如何响应用户输入。
    //窗口过程可以任意命名(此程序是WndProc),一个windows程序可以包含多个窗口过程,一个窗口过程总是与调用RegisterClass注册的特定窗口类相关联。
    //程序一般不直接调用窗口过程。窗口过程由windows本身直接调用。通过调用SendMessage函数,程序能够直接调用它自己的窗口过程。
    LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)//四个参数与Message的前四个域是相同的,参见MSG的定义和P56。
    {
         HDC         hdc ;
         PAINTSTRUCT ps ;
         RECT        rect ;
       
         switch (message)
         {
         case WM_CREATE:   //充当的是  WndProc函数的第二个参数
              PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ; 
                //如上:PlaySound  播放一个声音文件;第二个参数只有当声音文件是一种资源时才被使用。
              return 0 ;  //窗口过程在处理消息时,必须返回0.
            
         case WM_PAINT:  
              // InvalidateRect(hwnd,NULL,TRUE); 
    //如果在处理WM_PAINT消息时在更的矩形外绘图,可以在调BeginPaint前调用它;它使整个客户区变为无效,并擦出背景;
    //但是,如果改成FALSE,则不擦出背景,原有的东西将保留在原处;详见P71整页;

              hdc = BeginPaint (hwnd, &ps) ;
    //对WM_PAINT的处理总是从BeginPaint(开始窗口绘制函数)的调用开始 ;第二个参数是指向类型为PAINTSTRUCT的结构指针        
              GetClientRect (hwnd, &rect) ; 
    //GetClientRect 获取窗口客户区的尺寸;第二个参数是指针,指向RECT类型的rectangle结构。
    //rectangle结构有4个LONG域,分别为left,top,right,buttom(底部)。
    //GetClientRect将这4个域设置为窗口客户区域的尺寸。left和top域通常设置为0,right和buttom域设置为客户区域的宽度和高度(像素点数);
              
              DrawText (hdc, TEXT ("Hello, Windows 7!"), -1, &rect,
                        DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
    //DrawText  显示文本串(即输出为文本);        
    //五个参数:1、是从BeginPaint返回的设备描述表句柄;2、是要输出的文本;3、是-1,指示文本串是以字节0终结的;
    /5、是一系列的位标识,均在WINUSER.H中定义;标志指示文本须显示在一行上,水平方向和垂直方向都位于第4个参数指定的矩形区域,因此输出文本显示在客户区域中央;
              EndPaint (hwnd, &ps) ;  //EndPaint  结束窗口绘制;第二个参数是指向类型为PAINTSTRUCT的结构指针(同上:BeginPaint函数)。
              return 0 ;
            
         case WM_DESTROY:
              PostQuitMessage (0) ;  //PostQuitMessage  在消息队列中插入一条“退出”消息;
              return 0 ;
         }
         return DefWindowProc (hwnd, message, wParam, lParam) ;  //DefWindowProc  执行默认的消息处理(即窗口过程不予处理的消息被传给它);
    }
    展开全文
  • Windows 窗口类型

    千次阅读 2016-06-07 11:32:41
    windows编程中,最基本的就是窗口了,调用函数CreateWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth,int nHeight,HWND hWndParent, HMENU hMenu,...
    windows编程中,最基本的就是窗口了,调用函数CreateWindow
    (
    LPCTSTR lpClassName, 
    LPCTSTR lpWindowName, 
    DWORD dwStyle, 
    int x, 
    int y, 
    int nWidth,
    int nHeight,
    HWND hWndParent, 
    HMENU hMenu,
    HANDLE hlnstance,
    LPVOID lpParam)
    

    ,指定参数dwStyle可以创建各式各样的窗口,为了方便,特从MSDN上翻译出dwStyle可取值得各种类型,以供以后编程查阅方便。

    WS_BORDER 带边框的窗口
    WS_CAPTION 带标题栏窗口,包含WS_BORDER 属性
    WS_CHILD 子窗口,带有此风格的窗口没有菜单栏,与WS_POPUP不能共用
    WS_CHILDWINDOW 与WS_CHILD一样
    WS_CLIPCHILDREN 创建父窗口时使用,当父窗口绘画时,子窗口区域无效
    WS_CLIPSIBLINGS 排除子窗口之间的相对区域,也就是,当一个指定的子窗口接收到WM_PAINT消息时,WS_CLIPSIBLINGS 风格 将所有层叠窗口排除在绘图之外,只重绘指定的子窗口。如果未指定WS_CLIPSIBLINGS风格,并且子窗口是层 叠的,则在重绘子窗口的客户区时,就会重绘邻近的子窗口
    WS_DISABLED 指定窗口不接受用户的任何输入信息。创建了具有该属性的窗口口,可以使用 EnableWindow函数来改变这个属
    WS_DLGFRAME 具有边框属性的对话框,没有标题栏
    WS_HSCROLL 具有水平滚动条
    WS_MAXIMIZE 最大化窗口
    WS_ICONIC 最小化窗口,与WS_MINIMIZE 一样
    WS_GROUP 指定一组控制的第一个控制。这个控制组由第一个控制和随后定义的控制组成,自第二个控制开始每个控制,具 有WS_GROUP风格,每个组的第一个控制带有WS_TABSTOP风格,从而使用户可以在组间移动。用户随后可以 使用光标在组内的控制间改变键盘焦点
    WS_MAXIMIZEBOX 具有最大化按钮的窗口,不能与WS_EX_CONTEXTHELP 共用,且WS_SYSMENU必须指定
    WS_MINIMIZE 与WS_ICONIC 一样
    WS_MINIMIZEBOX 具有最小化按钮的窗口,不能与WS_EX_CONTEXTHELP 共用,且WS_SYSMENU必须指定
    WS_OVERLAPPED 层叠窗口,该窗口具有标题栏和边框,与WS_TILED相同
    WS_OVERLAPPEDWINDOW 层叠窗口,与WS_TILEDWINDOW 相同,包含WS_OVERLAPPEDWINDOW=WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX
    WS_POPUP 弹出窗口,不能与WS_CHILD 一起使用
    WS_POPUPWINDOW 弹出窗口,WS_CAPTION 与WS_POPUPWINDOW结合一起使用来使菜单栏可见 WS_POPUPWINDOW=WS_POPUP | WS_BORDER | WS_SYSMENU
    WS_SIZEBOX 可调边框的窗口,与WS_THICKFRAME 相同
    WS_THICKFRAME 与WS_SIZEBOX相同
    WS_SYSMENU 创建一个在标题条上带有窗口菜单的窗口,必须同时设定WS_CAPTION风格
    WS_TABSTOP 创建一个控制,这个控制在用户按下Tab键时可以获得键盘焦点。按下Tab键后使键盘焦点转移到下一具有 WS_TABSTOP风格的控制
    WS_TILED 产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框,和WS_OVERLAPPED 一样
    WS_TILEDWINDOW WS_TILEDWINDOW=WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,层叠窗口,与WS_OVERLAPPEDWINDOW 相同
    WS_VISIBLE 可见窗口, 通过使用ShowWindow 或 SetWindowPos来关闭或开启这个风格
    WS_VSCROLL 带垂直滚动条的窗口

    展开全文
  • 一个常规的windows窗口一般都是一些一样的构造,你如果想要更改一些个性化的设置,你可以在这个一般的模板伤添砖加瓦,构造自己比较喜欢的类型,下边就分析一下一般的windows窗口的一般模板。 一. 首先看一下一般...

    一个常规的windows窗口一般都是一些一样的构造,你如果想要更改一些个性化的设置,你可以在这个一般的模板伤添砖加瓦,构造自己比较喜欢的类型,下边就分析一下一般的windows窗口的一般模板。


    一. 首先看一下一般的windows窗口都包含什么框架(NO picture you say a J8.....上图上图)如下(罗云斌win32汇编书中92页的一张图):


    该图简单的描述了一个基本的窗口的框架。


    下图是我们分析的第一个窗口的运行示例截图:


    这个窗口较为简单,但是包含了窗口的基本特性,下面开始分析这个简单的模板窗口。


    二 .  下面开始分析该窗口的简单实现过程:


    1. 首先写出需要使用的头文件也就是include文件的定义,他们都是一WINDOWS的必需品,里面包含了许多现成的API函数,以及一些连接库文件。具体代码如下:



    .386
    .model flat,stdcall
    option casemap:none
    ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    ; Include 文件定义
    ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    include windows.inc
    include gdi32.inc
    includelib gdi32.lib
    include user32.inc
    includelib user32.lib
    include kernel32.inc
    includelib kernel32.lib


    2.

        下面就是数据段的内容包含一些未初始化的全局变量和一些常量:

     数据段
    ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    .data?
    hInstance dd ?
    hWinMain dd ?
    
    
    .const
    szClassName db'MyClass',0
    szCaptionMain db'My first Window !',0
    szText db 'Win32 Assembly, Simple and powerful !',0
    


    3.  在屏幕上显示一个窗口的过程如下几步:

    下面就是代码段了:

    (1)得到应用程序的句柄(GetModuleHandle)。

    (2)注册窗口类(RegisterClassEx).在注册之前,要先填写RegisterClassex的参数WNDCLASSEX结构

    (3)建立窗口(CreateWindowEx)。

    (4)显示窗口(ShowWindow)。

    (5)刷新窗口客户区(UpdateWindow)。

    (6)进入无限的消息获取和处理的循环。首先获取消息(GetMessage),如果有消息到达,则将消息分派到回调函数处理(DispatchMessage),如果消息是WM_QUIT,则退出循环。

    在程序开始还有一个子函数_ProWinMain是用来处理消息的,他就是窗口的回调函数(Callback),它是由windows调用的而不是我们自己,我们调用了DispatchMessage,然后DisPatchMessage再回过来调用我们自己的子函数_ProcWinMain,子函数内有我们自己定义好的对应消息的相应操作,如果没有指定的操作,则使用windows默认的状态实现此功能调用函数(DefWindowProc)

    4.最后是在程序的入口处调用主函数_WinMain,程序结束(ExitProcess).


    5. 最后总结一下该程序用到的一些数据结构类型和API函数的信息:

    (1) 数据结构:PAINTSTRUCT(结构体)该结构体包含了某应用程序用来绘制它所拥有的窗口的客户区所需要的信息。

    PAINTSTRUCT定义
    
    typedef struct tagPAINTSTRUCT {
    
    HDC hdc;
    
           BOOL fErase;
    RECT rcPaint;
    
    BOOL fRestore;
    
    BOOL fIncUpdate;
    
    BYTE rgbReserved[32];
    
    } PAINTSTRUCT, *PPAINTSTRUCT;
    
    PAINTSTRUCT 结构体包含了用于绘制窗口客户区的信息。例如要更新的客户区的矩形区域的大小等等,MFC里的CPaintDC与之对应;
    
    BeginPaint可以得到客户区设备描述表的句柄,GetDC也可以得到,MFC里的CClientDC与之对应。
    
    hdc是用于绘制的句柄,
    
    fErase如果为非零值则擦除背景,否则不擦除背景,
    
    rcPaint 通过制定左上角和右下角的坐标确定一个要绘制的矩形范围,该矩形单位相对于客户区左上角,
    
    后面三个参数都是系统预留的,编程一般用不到。
    
    
    
    rect(结构体):
    
    rect结构定义了一个矩形框左上角以及右下角的坐标,RECT结构通常用于Windows编程。
    
    typedef struct _RECT {
    
    LONG left;
    
    LONG top;
    
    LONG right;
    
    LONG bottom;
    
    } RECT, *PRECT;
    
    折叠成员
    
    left : 指定矩形框左上角的x坐标
    
    top: 指定矩形框左上角的y坐标
    
    right: 指定矩形框右下角的x坐标
    
    bottom:指定矩形框右下角的y坐标
    
    备注:
    
    当rect传递给fillrect函数时,该矩形框将被填充满,但不包括右栏和底行的像素。
    
    该结构与rectl结构是同一结构。
    
    
    
    WNDCLASSEX(注册窗口类)
    
    WNDCLASSEX 结构用于注册窗口类
    
    注册实例:
    
    ATOM MyRegisterClass( HINSTANCE hInstance )
    
    {
    
    WNDCLASSEX wcex;
    
    wcex.cbSize = sizeof( WNDCLASSEX );
    
    wcex.style = CS_HREDRAW | CS_VREDRAW;
    
    wcex.lpfnWndProc = (WNDPROC) WndProc;
    
    wcex.cbClsExtra = 0;
    
    wcex.cbWndExtra = 0;
    
    wcex.hInstance = hInstance;
    
    wcex.hIcon = LoadIcon( NULL, IDI_APPLICATION );
    
    wcex.hCursor = LoadCursor( NULL, IDC_ARROW );
    
    wcex.hbrBackground = (HBRUSH) GetStockObject( WHITE_BRUSH );
    
    wcex.lpszMenuName = NULL;
    
    wcex.lpszClassName = "My Class";
    
    wcex.hIconSm = LoadIcon( NULL, IDI_WINLOGO );
    
    return RegisterClassEx( &wcex );
    
    }
    
    折叠参数
    
    cbSize:
    
    WNDCLASSEX 的大小。我们可以用sizeof(WNDCLASSEX)来获得准确的值。
    
    style:
    
    从这个窗口类派生的窗口具有的风格。您可以用“or”操作符来把几个风格或到一起。
    
    lpfnWndProc:
    
    窗口处理函数的指针。
    
    cbClsExtra:
    
    指定紧跟在窗口类结构后的附加字节数。
    
    cbWndExtra:
    
    指定紧跟在窗口事例后的附加字节数。如果一个应用程序在资源中用CLASS伪指令注册一个对话框类时,则必须把这个成员设成DLGWINDOWEXTRA。
    
    hInstance:
    
    本模块的事例句柄。
    
    hIcon:
    
    图标的句柄。
    
    hCursor:
    
    光标的句柄。
    
    hbrBackground:
    
    背景画刷的句柄。
    
    lpszMenuName:
    
    指向菜单的指针。
    
    lpszClassName:
    
    指向类名称的指针。
    
    hIconSm:
    
    和窗口类关联的小图标。如果该值为NULL。则把hIcon中的图标转换成大小合适的小图标。
    
    
    WNDCLASSEX 中最重要的成员莫过于lpfnWndProc了。n 表示该前缀 lpf成员是一个指向函数的长指针。在 Win32中由于内存模式是 FLAT 型,所以没有 near 或 far 的区别。每一个窗口类必须有一个窗口过程,当 Windows 把属于特定窗口的消息发送给该窗口时,该窗口的窗口类负责处理所有的消息,如键盘消息或鼠标消息。由于窗口过程差不多智能地处理了所有的窗口消息循环,所以您只要在其中加入消息处理过程即可。
    
    (2)API函数
    
    MessageBox()
    
    功能:
    
    显示一个模态对话框,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。消息框中返回一个整数值,该值指示用户单击了哪个按钮。
    
    原型:
    
    MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word)
    
    参数:
    
    
    hWnd:
    
    消息框的拥有窗此参数口。如果为NULL,则消息框没有拥有窗口。
    
    lpText:
    
    消息框的内容。如果使用了Unicode库,则把文本变成:
    
    lpCaption:
    
    消息框的标题。如果使用了Unicode库,则把文本变成:
    
    uType:
    
    指定一个决定对话框的内容和行为的位标志集。此参数可以为下列标志组中标志的组合。指定下列标志中的一个来显示消息框中的按钮以及图标。
    
    折叠uType参数
    
    按钮:
    
    按钮参数
    含义
    MB_OK
    默认值。有一个确认按钮在里面。
    MB_YESNO
    有是和否在里面。
    MB_ABORTRETRYIGNORE
    有Abort(放弃),Retry(重试)和Ignore(跳过)
    MB_YESNOCANCEL
    消息框含有三个按钮:Yes,No和Cancel
    MB_RETRYCANCEL
    有Retry(重试)和Cancel(取消)
    MB_OKCANCEL
    消息框含有两个按钮:OK和Cancel
    附:
    
    图标:
    
    参数	含义
    MB_ICONEXCLAMATION
    一个惊叹号出现在消息框
    MB_ICONWARNING
    一个惊叹号出现在消息框
    MB_ICONINFORMATION
    一个圆圈中小写字母i组成的图标出现在消息框
    MB_ICONASTERISK
    一个圆圈中小写字母i组成的图标出现在消息框
    MB_ICONQUESTION
    一个问题标记图标出现在消息框
    MB_ICONSTOP
    一个停止消息图标出现在消息框
    MB_ICONERROR
    一个停止消息图标出现在消息框
    MB_ICONHAND
    一个停止消息图标出现在消息框
    形态:
    
    参数
    含义
    MB_APPLMODAL
    在hwnd参数标识的窗口中继续工作以前,用户一定响应消息框。但是,用户可以移动到其他线程的窗口且在这些窗口中工作。根据应用程序中窗口的层次机构,用户则以移动到线程内的其他窗口。所有母消息框的子窗口自动地失效,但是弹出窗口不是这样。如果既没有指定MB_SYSTEMMODAL也没有指定MB_TASKMOOAL,则MB_APPLMODAL为缺省的。
    MB_SYSTEMMODAL
    除了消息框有WB_EX_TOPMOST类型,MB_APPLMODAL和MB_SYSTEMMODAL一样。用系统模态消息框来改变各种各样的用户,主要的损坏错误需要立即注意(例如,内存溢出)。如果不是那些与hwnd联系的窗口,此标志对用户对窗口的相互联系没有影响。
    MB_TASKMODAL
    如果参数hwnd为NULL的话,那么除了所有属于当前线程高层次的窗口失效外,MB_TASKMODALL和MB_APPLMODAL一样。当调用应用程序或库没有一个可以得到的窗口句柄时,使用此标志。但仍需要阻止输入到调用线程的其他窗口,而不是搁置其他线程。
    其他:
    
    标志
    含义
    MB_DEFAULT_DESKTOP_ONLY
    接收输入的当前桌面一定是一个缺省桌面。否则,函数调用失败。缺省桌面是一个在用户已经纪录且以后应用程序在此上面运行的桌面。
    MB_HELP
    把一个Help按钮增加到消息框。选择Help按钮或按F1产生一个Help事件。
    MB_RIGHT
    文本为右调整
    MB_RTLREADING
    用在Hebrew和Arabic系统中从右到左的顺序显示消息和大写文本。
    MB_SETFOREGROUND
    消息框变为前景窗口。在内部系统为消息个调用SetForegroundWindow函数。
    MB_TOPMOST
    消息框用WS_EX_TOPMOST窗口类型来创建MB_SERVICE_NOTIFICATION。
    折叠返回值
    
    ID
    选择了……
    IDOK(1)
    OK
    IDCANCEL(2)
    CANCEL
    IDABORT(3)
    ABORT
    IDRETRY(4)
    RETRY
    IDIGNORE(5)
    IGNORE
    IDYES(6)
    YES
    IDNO(7)
    NO
    
    
    BeginPain()
    
    功能:为指定窗口的绘图工作做准备,并将和绘图有关的信息填充到一个PAINTSTRUCT结构体中。
    
    函数原型:
    
    HDC BeginPaint(
    
    HWND hwnd, // 窗口的句柄
    
    LPPAINTSTRUCT lpPaint // 绘制信息
    
    );
    
    参数:
    
    hwnd:[输入]被重绘的窗口句柄
    
    lpPaint:[输出]指向一个用来接收绘画信息的PAINTSTRUCT结构
    
    返回值:
    
    如果函数成功,返回值是指定窗口的"显示设备描述表"句柄。
    
    如果函数失败,返回值是NULL,表明没有得到显示设备的内容。
    
    
    
    Getclientrect()
    
    功能:该函数获取窗口客户区的坐标。客户区坐标指定客户区的左上角和右下角。由于客户区坐标是相对窗口客户区的左上角而言的,因此左上角坐标为(0,0)。这里应该注意一下:坐标包含两种:屏幕坐标与客户区坐标。严格区分这两种坐标对于理解Windows编程是很重要的。
    
    函数原型:
    
    在Win32 SDK, 该API函数原型为
    
    BOOL GetClientRect(
    
    HWND hWnd, // 窗口句柄
    
    LPRECT lpRect // 客户区坐标
    
    );
    
    在MFC中,该函数的原型为void GetClientRect(LPRECT lpRect) const;
    
    参数:
    
    hWnd:是程序窗口的句柄。
    
    lpRect:是一个指针,指向一个RECT类型的rectangle结构。该结构有四个LONG字段,分别为left、top、right和bottom。GetClientRect将这四个字段设定为窗口显示区域的尺寸。left和top字段通常设定为0。right和bottom字段设定为显示区域的宽度和高度(像素点数)。 也可以是一个CRect对象指针。CRect对象有多个参数,与RECT用法相同。
    
    函数的作用总的来说就是把客户区的大小写进第二个参数所指的Rect结构当中。
    
    返回值:如果函数成功,返回一个非零值
    
                   如果函数失败,返回零。
    
    
    
    DrawText()
    
    功能:
    
    该函数的功能是在指定的矩形里写入格式化文本,根据指定的方法对文本格式化(扩展的制表符,字符对齐、折行等)
    
    要指定额外的格式化选项,请使用DrawTextEx函数
    
    原型:
    
    int DrawText(
    
    HDC hDC, // 设备描述表句柄
    
    LPCTSTR lpString, // 将要绘制的字符串
    
    int nCount, // 字符串的长度
    
    LPRECT lpRect, // 指向矩形结构RECT的指针
    
    UINT uFormat // 正文的绘制选项
    
    );
    
    参数:
    
    hdc:
    
    [输入]设备环境句柄。
    
    lpString:
    
    [输入]指向将被写入的字符串的指针,如果参数nCount是-1,则字符串必须是以\0结束的。 如果uFormat包含DT_MODIFYSTRING,则函数可为此字符串增加4个字符,存放字符串的缓冲区必须足够大,能容纳附加的字符。
    
    nCount:
    
    [输入]指向字符串中的字符数。如果nCount为-1,则lpString指向的字符串被认为是以\0结束的,DrawText会自动计算字符数。
    
    lpRect:
    
    [输入/输出]指向结构RECT的指针,其中包含文本将被置于其中的矩形的信息(按逻辑坐标)。
    
    uFormat:
    
    [输入]指定格式化文本的方法。它可以下列值的任意组合,各值描述如下:
    
    DT_CALCRECT:这个参数比较重要,可以使DrawText函数计算出输出文本的尺寸。如果输出文本有多行,DrawText函数使用lpRect定义的矩形的宽度,并扩展矩形的底部以容纳输出文本的最后一行。如果输出文本只有一行,则DrawText函数改变矩形的右边界,以容纳下正文行的最后一个字符。出现上述任何一种情况,DrawText函数将返回格式化文本的高度,而不是绘制文本。
    
    DT_CENTER:指定文本水平居中显示。
    
    DT_VCENTER:指定文本垂直居中显示。该标记只在单行文本输出时有效,所以它必须与DT_SINGLELINE结合使用。
    
    DT_SINGLELINE:单行显示文本,回车和换行符都不断行。
    
    返回值:
    
    如果函数调用成功,返回值是正文的高度(逻辑单位)。如果指定了DT_VCENTER或DT_BOTTOM,返回值是lpRect->top到绘制的正文的底部的偏移值。
    
    如果函数调用失败,返回值是0
    
    
    
    DestroyWindow():
    
    功能:销毁指定的窗口。这个函数通过发送WM_DESTROY 消息和 WM_NCDESTROY 消息使窗口无效并移除其键盘焦点。这个函数还销毁窗口的菜单,清空线程的消息队列,销毁与窗口过程相关的定时器,解除窗口对剪贴板的拥有权,打断剪贴板器的查看链。 
    
    原型:
    
    BOOL DestroyWindow(
    
    HWND hWnd // handle to window to destroy
    
    );
    
    hWnd :将被销毁的窗口的句柄。
    
    参数:
    
    hWnd :将被销毁的窗口的句柄。
    
    返回值:
    
    如果函数成功,返回值为非零:如果函数失败,返回值为零。
    
    
    
    PostQuitMessage()
    
     功能:
    
    该函数向系统表明有个线程有终止请求。通常用来响应WM_DESTROY消息。
    
    调用实例:
    
    invoke PostQuitMessage,null
    
    
    
    GetModuleHandle()
    
    功能:
    
    函数的作用是返回指定模块名的句柄,如果为NULL,则返回本模块的句柄。
    
    返回的句柄值存放在寄存器eax中。
    
    lpModuleName参数是一个指向含有模块名称字符串的指针;
    
    调用实例:
    
    invoke GetModuleHandle,offset szUserDll
    
    
    
    RtlZeroMemory()同 ZeroMemory()
    
    Rtl:Rtl:runtime library的缩写,就是“运行时函数库”的意思
    
    功能:
    
    ZeroMemory只是将指定的内存块清零。
    
    使用结构前清零,而不让结构的成员数值具有不确定性,是一个好的编程习惯。
    
    原型:
    
    void ZeroMemory( PVOID Destination,SIZE_T Length );
    
    参数:
    
    Destination :指向一块准备用0来填充的内存区域的开始地址。
    
    Length :准备用0来填充的内存区域的大小,按字节来计算
    
    返回值:无
    
    
    
    LoadCursor()
    
    功能:
    
    该函数从一个与应用事例相关的可执行文件(EXE文件)中载入指定的光标资源。该函数已被Loadlmage函数替代。
    
    原型:
    
    HCURSOR LoadCursor(HINSTANCE hlnstance,LPCTSTR lpCursorName);
    
    参数:
    
    折叠hlnstance
    
    标识一个模块事例,它的可执行文件包含要载入的光标。
    
    折叠LpCursorName
    
    指向以NULL结束的字符串的指针,该字符串存有等载入的光标资源名。该参数低位字节和高位字节0组成资源标识器也可以由低位字为资源标识符和高位字为零组成。也可以用MAKEINTRESOURCE宏命令创建该值。要使用Win32预定义的一个光标,应用程序必须把hlnstance参数设为NULL,并把IpCursorName设为如下值之一:
    
    IDC_APPSTARTING 标准的箭头和小沙漏
    
    IDC_ARROW 标准的箭头
    
    IDC_CROSS 十字光标
    
    IDC_HAND Windows 98/Me, Windows 2000/XP: Hand
    
    IDC_HELP 标准的箭头和问号
    
    IDC_IBEAM 工字光标
    
    IDC_ICON Obsolete for applications marked version 4.0 or later.
    
    IDC_NO 禁止圈
    
    IDC_SIZE Obsolete for applications marked version 4.0 or later. Use IDC_SIZEALL.
    
    IDC_SIZEALL 四向箭头指向东、西、南、北
    
    IDC_SIZENESW 双箭头指向东北和西南
    
    IDC_SIZENS 双箭头指向南北
    
    IDC_SIZENWSE 双箭头指向西北和东南
    
    IDC_SIZEWE 双箭头指向东西
    
    IDC_UPARROW 垂直箭头
    
    IDC_WAIT 沙漏,Windows7系统下会显示为选择的圆圈表示等待
    
    返回值:
    
    如果成功,返回值是新载入的光标的句柄:如果失败,返回值是NULL
    
    
    
    Sendmessage()
    
    功能:
    
    该函数将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回
    
    原型:
    
    LRESULT SendMessage(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam);
    
    参数:
    
    hWnd:其窗口程序将接收消息的窗口的句柄。如果此参数为HWND_BROADCAST,则消息将被发送到系统中所有顶层窗口,包括无效或不可见的非自身拥有的窗口、被覆盖的窗口和弹出式窗口,但消息不被发送到子窗口。
    
    Msg:指定被发送的消息。
    
    wParam:指定附加的消息特定信息。
    
    IParam:指定附加的消息特定信息。
    
    
    返回值;
    
    返回值指定消息处理的结果,依赖于所发送的消息
    
    PostMessage()
    
    功能:该函数将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。消息队列里的消息通过调用GetMessage和PeekMessage取得
    
    原型:
    
    BO0L PostMessage(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam)
    
    参数:
    
    
    hWnd:其窗口程序接收消息的窗口的句柄。可取有特定含义的两个值:
    
    HWND_BROADCAST:消息被寄送到系统的所有顶层窗口,包括无效或不可见的非自身拥有的窗口、  被覆盖的窗口和弹出式窗口。消息不被寄送到子窗口
    
    NULL:此函数的操作和调用参数dwThread设置为当前线程的标识符PostThreadMessage函数一样
    
    Msg:指定被寄送的消息。
    
    wParam:指定附加的消息特定的信息。
    
    IParam:指定附加的消息特定的信息。
    
    返回值:
    如果函数调用成功,返回非零值:如果函数调用失败,返回值是零。若想获得更多的错误信息,请调用GetLastError函数。
    
    
    
    
    RegisterClassEx()
    
    功能:
    
    该函数为随后在调用Createwindow函数和CreatewindowEx函数中使用的窗口注册一个窗口类
    
    原型:
    
    ATOM RegisterClassEx(CONST WNDCLASSEX *Ipwcx);
    
    参数:
    
    Ipwcx:指向一个WNDCLASSEX结构的指针。在传递给这个函数之前,必须在结构内填充适当的类的属性返回值:如果函数成功,返回这个窗口类型的标识号;如果函数失败,返回值为0。若想获得更多错误信息,请调用GetLastError函数
    
    
    
    CreatewindowEX()
    
    功能:
    
    该函数创建一个具有扩展风格的层叠式窗口、弹出式窗口或子窗口,其他与CreateWindow函数相同
    
    原型:
    
    CreateWindowEx函数创建一个层叠的,自动弹出的(pop-up)或是一个子窗口通过扩展格式。另外这个函数的作用与CreateWindow函数的作用相同。要获得更多的关于创建窗口的信息和关于CreateWindowEx函数参数的详细描述。参见CreateWindow
    
    HWNDCreateWindowEx(
    
    DWORDdwExStyle,//窗口的扩展风格
    
    LPCTSTRlpClassName,//指向注册类名的指针
    
    LPCTSTRlpWindowName,//指向窗口名称的指针
    
    DWORDdwStyle,//窗口风格
    
    intx,//窗口的水平位置
    
    inty,//窗口的垂直位置
    
    intnWidth,//窗口的宽度
    
    intnHeight,//窗口的高度
    
    HWNDhWndParent,//父窗口的句柄
    
    HMENUhMenu,//菜单的句柄或是子窗口的标识符
    
    HINSTANCEhInstance,//应用程序实例的句柄
    
    LPVOIDlpParam//指向窗口的创建数据
    
    );
    
    参数:
    
    指定窗口的扩展风格。该参数可以是下列值:
    
    WS_EX_NODRAG:防止窗口被移动
    
    WS_EX_ACCEPTFILES:指定以该风格创建的窗口接受一个拖拽文件。
    
    WS_EX_APPWINDOW:当窗口可见时,将一个顶层窗口放置到任务条上。
    
    WS_EX_CLIENTEDGE:指定窗口有一个带阴影的边界。
    
    WS_EX_CONTEXTHELP:在窗口的标题条包含一个问号标志。当用户点击了问号时,鼠标光标变为一个问号的指针、如果点击了一个子窗口,则子窗口接收到WM_HELP消息。子窗口应该将这个消息传递给父窗口过程,父窗口再通过HELP_WM_HELP命令调用WinHelp函数。这个Help应用程序显示一个包含子窗口帮助信息的弹出式窗口。 WS_EX_CONTEXTHELP不能与WS_MAXIMIZEBOX和WS_MINIMIZEBOX同时使用。
    
    WS_EX_CONTROLPARENT:允许用户使用Tab键在窗口的子窗口间搜索。
    
    WS_EX_DLGMODALFRAME:创建一个带双边的窗口;该窗口可以在dwStyle中指定WS_CAPTION风格来创建一个标题栏。
    
    WS_EX_LEFT:窗口具有左对齐属性,这是缺省设置的。
    
    WS_EX_LEFTSCROLLBAR:如果外壳语言是如Hebrew,Arabic,或其他支持reading order alignment的语言,则标题条(如果存在)则在客户区的左部分。若是其他语言,在该风格被忽略并且不作为错误处理。
    
    WS_EX_LTRREADING:窗口文本以LEFT到RIGHT(自左向右)属性的顺序显示。这是缺省设置的。
    
    WS_EX_MDICHILD:创建一个MDI子窗口。
    
    WS_EX_NOPATARENTNOTIFY:指明以这个风格创建的窗口在被创建和销毁时不向父窗口发送WM_PARENTNOTFY消息。
    
    WS_EX_OVERLAPPEDWINDOW:WS_EX_CLIENTEDGE和WS_EX_WINDOWEDGE的组合。
    
    WS_EX_PALETTEWINDOW:WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW和WS_WX_TOPMOST风格的组合WS_EX_RIGHT:窗口具有普通的右对齐属性,这依赖于窗口类。只有在外壳语言是如Hebrew,Arabic或其他支持读顺序对齐(reading order alignment)的语言时该风格才有效,否则,忽略该标志并且不作为错误处理。
    
    WS_EX_RIGHTSCROLLBAR:垂直滚动条在窗口的右边界。这是缺省设置的。
    
    WS_EX_RTLREADING:如果外壳语言是如Hebrew,Arabic,或其他支持读顺序对齐(reading order alignment)的语言,则窗口文本是一自左向右)RIGHT到LEFT顺序的读出顺序。若是其他语言,在该风格被忽略并且不作为错误处理。
    
    WS_EX_STATICEDGE:为不接受用户输入的项创建一个3一维边界风格
    
    WS_EX_TOOLWINDOW:创建工具窗口,即窗口是一个游动的工具条。工具窗口的标题条比一般窗口的标题条短,并且窗口标题以小字体显示。工具窗口不在任务栏里显示,当用户按下alt+Tab键时工具窗口不在对话框里显示。如果工具窗口有一个系统菜单,它的图标也不会显示在标题栏里,但是,可以通过点击鼠标右键或Alt+Space来显示菜单。
    
    WS_EX_TOPMOST:指明以该风格创建的窗口应放置在所有非最高层窗口的上面并且停留在其L,即使窗口未被激活。使用函数SetWindowPos来设置和移去这个风格。
    
    WS_EX_TRANSPARENT:指定以这个风格创建的窗口在窗口下的同属窗口已重画时,该窗口才可以重画。
    
    由于其下的同属窗口已被重画,该窗口是透明的。
    
    折叠IpClassName
    
    :指向一个空结束的字符串或整型数atom。如果该参数是一个整型量,它是由此前调用RegisterClass或RegisterClassEx函数返回的值。这个小于OxCOOO的16位数必须是IpClassName参数字的低16位,该参数的高位必须是O。
    
    如果lpClassName是一个字符串,它指定了窗口的类名。这个类名可以是任何用函数RegisterClassEx注册的类名,或是任何预定义的控制类名。请看说明部分的列表。
    
    系统默认的类名(可直接使用,无需使用RegisterClass注册) 	解释
    button	按钮
    edit	编辑框
    ComboBox	组合框
    ListBox	列表框
    MDIClient	多文档界面
    ScrollBar	滚动条
    Static	​静态组件
    折叠lpWindowName
    
    :指向一个指定窗口名的空结束的字符串指针。
    
    如果窗口风格指定了标题条,由lpWindowName指向的窗口标题将显示在标题条上。当使用CreateWindow
    
    函数来创建控制例如按钮,选择框和静态控制时,可使用lpWindowName来指定控制文本。
    
    折叠dwStyle
    
    :指定创建窗口的风格。该参数可以是下列窗口风格的组合再加上说明部分的控制风格。
    
    x:指定窗口的初始水平位置。对一个层叠或弹出式窗口,X参数是屏幕坐标系的窗口的左上角的初始X坐标。对于子窗口,x是子窗口左上角相对父窗口客户区左上角的初始X坐标。如果该参数被设为CW_USEDEFAULT则系统为窗口选择缺省的左上角坐标并忽略Y参数。CW_USEDEFAULT只对层叠窗口有效,如果为弹出式窗口或子窗口设定,则X和y参数被设为零。
    
    y:指定窗口的初始垂直位置。对一个层叠或弹出式窗日,y参数是屏幕坐标系的窗口的左上角的初始y坐标。对于子窗口,y是子窗口左上角相对父窗口客户区左上角的初始y坐标。对于列表框,y是列表框客户区左上角相对父窗口客户区左上角的初始y坐标。如果层叠窗口是使用WS_VISIBLE风格位创建的并且X参数被设为CW_USEDEFAULT,则系统将忽略y参数。
    
    风格意义:
    
    WS_BORDER:创建一个带边框的窗口。
    
    WS_CAPTION:创建一个有标题框的窗口(包括WS_BODER风格)。
    
    WS_CHILD:创建一个子窗口。这个风格不能与WS_POPUP风格合用。
    
    WS_CHILDWINDOW:与WS_CHILD相同。
    
    WS_CLIPCHILDREN:当在父窗口内绘图时,排除子窗口区域。在创建父窗口时使用这个风格。
    
    WS_CLIPSIBLINGS:排除子窗口之间的相对区域,也就是,当一个特定的窗口接收到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_MAXIMIZEBOX:创建一个具有最大化按钮的窗口。该风格不能与WS_EX_CONTEXTHELP风格同时出现,同时必须指定WS_SYSMENU风格。
    
    WS_OVERLAPPED:产生一个层叠的窗口。一个层叠的窗口有一个标题条和一个边框。与WS_TILED风格相同。
    
    WS_OVERLAPPEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXIMIZEBOX风格的层叠窗口,与WS_TILEDWINDOW风格相同。
    
    WS_POPUP:创建一个弹出式窗口。该风格不能与WS_CHILD风格同时使用。
    
    WS_POPUPWINDOW:创建一个具有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, WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXIMIZEBOX风格的层叠窗口。与WS_OVERLAPPEDWINDOW风格相同。
    
    WS_VISIBLE:创建一个初始状态为可见的窗口。
    
    WS_VSCROLL:创建一个有垂直滚动条的窗口。
    
    折叠nWidth
    
    :以设备单元指明窗口的宽度。对于层叠窗口,nWidth或是屏幕坐标的窗口宽度或是CW_USEDEFAULT。若nWidth是CW_USEDEFAULT,则系统为窗口选择一个缺省的高度和宽度:缺省宽度为从初始X坐标开始到屏幕的右边界,缺省高度为从初始X坐标开始到目标区域的顶部。CW_USEDEFAULT只对层叠窗口有效;如果为弹出式窗口和子窗口设定CW_USEDEFAULT标志则nWidth和nHeight被设为零。
    
    折叠nHeigth
    
    :以设备单元指明窗口的高度。对于层叠窗口,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
    
    
    
    Showwindow()
    
    功能:
    
    该函数设置指定窗口的显示状态
    
    原型:
    
    BOOL ShowWindow(HWND hWnd, int nCmdShow);
    
    参数:
    
    hWnd:指窗口句柄。
    
    nCmdShow:指定窗口如何显示。如果发送应用程序的程序提供了STARTUPINFO结构,则应用程序第一次调用ShowWindow时该参数被忽略。否则,在第一次调用ShowWindow函数时,该值应为在函数WinMain中nCmdShow参数。在随后的调用中,该参数可以为下列值之一:
    
    SW_FORCEMINIMIZE:在WindowNT5.0中最小化窗口,即使拥有窗口的线程被挂起也会最小化。在从其他线程最小化窗口时才使用这个参数。
    
    SW_HIDE:隐藏窗口并激活其他窗口。
    
    SW_MAXIMIZE:最大化指定的窗口。
    
    SW_MINIMIZE:最小化指定的窗口并且激活在Z序中的下一个顶层窗口。
    
    SW_RESTORE:激活并显示窗口。如果窗口最小化或最大化,则系统将窗口恢复到原来的尺寸和位置。在恢复最小化窗口时,应用程序应该指定这个标志。
    
    SW_SHOW:在窗口原来的位置以原来的尺寸激活和显示窗口。
    
    SW_SHOWDEFAULT:依据在STARTUPINFO结构中指定的SW_FLAG标志设定显示状态,STARTUPINFO 结构是由启动应用程序的程序传递给CreateProcess函数的。
    
    SW_SHOWMAXIMIZED:激活窗口并将其最大化。
    
    SW_SHOWMINIMIZED:激活窗口并将其最小化。
    
    SW_SHOWMINNOACTIVE:窗口最小化,激活窗口仍然维持激活状态。
    
    SW_SHOWNA:以窗口原来的状态显示窗口。激活窗口仍然维持激活状态。
    
    SW_SHOWNOACTIVATE:以窗口最近一次的大小和状态显示窗口。激活窗口仍然维持激活状态。
    
    SW_SHOWNORMAL:激活并显示一个窗口。如果窗口被最小化或最大化,系统将其恢复到原来的尺寸和大小。应用程序在第一次显示窗口的时候应该指定此标志
    
    返回值:
    
    如果窗口之前可见,则返回值为非零。如果窗口之前被隐藏,则返回值为零
    
    
    UpdateWindow()
    
    功能:
    
    如果窗口更新的区域不为空,UpdateWindow函数通过发送一个WM_PAINT消息来更新指定窗口的客户区。函数绕过应用程序的消息队列,直接发送WM_PAINT消息给指定窗口的窗口过程,如果更新区域为空,则不发送消息。
    
    原型:
    
    BOOL UpdateWindow(
    
    HWND hWnd // 窗口的句柄
    
    );
    
    参数:
    hWnd
    
    [输入] 要更新的窗口的句柄.
    
    返回值:
    如果函数调用成功,返回值为非零值。
    
    如果函数调用不成功,返回值为零。
    
    
    Getmessage()
    
    功能:
    
    函数GetMessage 是 从调用线程的消息队列里取得一个消息并将其放于指定的结构。此函数可取得与指定窗口联系的消息和由PostThreadMesssge寄送的线程消息。此函数接收一定范围的消息值。GetMessage不接收属于其他线程或应用程序的消息。获取消息成功后,线程将从消息队列中删除该消息。函数会一直等待直到有消息到来才有返回值
    
    原型:
    
    BOOL GetMessage(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax)
    
    参数:
    
    
    lpMsg:指向MSG结构的指针,该结构从线程的消息队列里接收消息信息。
    
    hWnd:取得其消息的窗口的句柄。当其值取NULL时,GetMessage为任何属于调用线程的窗口检索消息,线程消息通过PostThreadMessage寄送给调用线程。
    
    wMsgFilterMin:指定被检索的最小消息值的整数。
    
    wMsgFilterMax:指定被检索的最大消息值的整数。
    
    返回值:
    如果函数取得WM_QUIT之外的其他消息,返回非零值。如果函数取得WM_QUIT消息,返回值是零。如果出现了错误,返回值是-1。例如,当hWnd是无效的窗口句柄或lpMsg是无效的指针时。若想获得更多的错误信息,请调用GetLastError函数。
    
    
    
    TranslateMessage()
    
    功能:
    
    该函数将虚拟键消息转换为字符消息。字符消息被寄送到调用线程的消息队列里,当下一次线程调用函数GetMessage或PeekMessage时被读出。
    
    原型:
    
    BOOL TranslateMessage(CONST MSG★lpMsg)
    
    参数:
    
    IpMsg:指向含有消息的MSG结构的指针,该结构里含有用函数GetMessage或PeekMessage从调用线程的消息队列里取得的消息信息。
    
    返回值:
    
    如果消息被转换(即,字符消息被寄送到调用线程的消息队列里),返回非零值。如果消息是WM_kEYDOWN,WM_KEYUP WM_SYSKEYDOWN或WM_SYSKEYUP,返回非零值,不考虑转换。如果消息没被转换(即,字符消息没被寄送到调用线程的消息队列里),返回值是零。
    
    
    
    DispatchMessage()
    
    功能:
    
    该函数分发一个消息给窗口程序。通常消息从GetMessage函数获得。消息被分发到回调函数(过程函数),作用是消息传递给操作系统,然后操作系统去调用我们的回调函数,也就是说我们在窗体的过程函数中处理消息
    
    原型:
    
    LONG DispatchMessage(CONST MSG*lpmsg)
    
    参数:
    
    lpmsg:指向含有消息的MSG结构的指针。
    
    
    返回值:
    
    返回值是窗口程序返回的值。尽管返回值的含义依赖于被调度的消息,但返回值通常被忽略。
    
    备注:MSG结构必须包含有效的消息值。如果参数lpmsg指向一个WM_TIMER消息,并且WM_TIMER消息的参数IParam不为NULL,则调用IParam指向的函数,而不是调用窗口程序。
    
    
    
    ExitProcess()
    
    功能:
    
    终止一个进程
    
    调用实例:
    
    invoke ExitProcess,NULL
    
    
    
    
    
    
    
    
    
    




    展开全文
  • 教学内容 第 4 课 Windows XP 窗口操作 教学目标 1了解计算机桌面上各个组成部分的功能和 Windows XP 窗口组成学习窗 口操作的基本方法掌握桌面上图标的排序 2使学生养成爱护计算机正确使用计算机的良好习惯 教学...
  • * 菜 单 教学目标 教学重点 教学难点 基本术语 键盘及操作 鼠标及操作 窗口组成 作 业 Windows XP基本 概念和基本操作 教师毕红棋 制于2010年10月 教学目标 了解Windows XP 的基本术语 1 掌握鼠标和键盘的操作 3 ...
  •  相信在Windows 下面编程的很多兄弟们都不是很清楚Windows窗口的层次关系是怎么样的,这个东西很久... 在Windows 的图形界面下,最基本显示信息的元素就是窗口,每一个Windows 窗口都管理着自己与其他窗口
    
    相信在Windows 下面编程的很多兄弟们都不是很清楚Windows 中窗口的层次关系是怎么样的,这个东西很久已经研究过一下,后来又忘记了,今天又一次遇到了这个问题,所以便整理一下。下面就说说Windows 中桌面(Desktop)以及顶层窗口,以及子窗口之间的关系。

        在Windows 的图形界面下,最基本显示信息的元素就是窗口,每一个Windows 窗口都管理着自己与其他窗口之间的关系和自身的一些信息,如:是否可见,窗口的所有者,窗口的父/子关系等等信息,当窗口创建、销毁、显示的时候,就会用到这些信息。

           在每一个窗口实例中,有四个元素被窗口管理器用来建立窗口管理链表。

          

    • Child  指向窗口子窗口的句柄
    • Parent:指向窗口父窗口的句柄
    • Owner:指向窗口所有者的句柄
    • Next   指向下一个同属窗口的句柄

        众所周知当Windows初始化的时候,它创建桌面这个窗口,桌面覆盖着整个窗口,窗口管理器用这个窗口作为窗口链表中第一个元素。因此桌面在窗口的层次关系中在最上层。

       在窗口层次关系中, 桌面窗口下一层窗口叫做顶层窗口,顶层窗口就是那些 不是子窗口的窗口,顶层窗口 不能够有WS_CHILD属性。窗口管理器是如何把桌面窗口和顶层窗口联系起来的呢?窗口管理器把 顶层窗口都组织到一个链表中,而这个链 表的头存储的就是 桌面窗口的 子窗口句柄,每一个子窗口 通过Next就可以找到链表中下一个窗口了。这个链表被称为子窗口链表,在同一个 子窗口链表中的窗口是互为同属窗口,所 有顶层窗口都是同属窗口窗口在子窗口链表中的次序也表明了窗口距离距离桌面窗口的距离[依次减小,第一个最上面,第二个在第一个下面,最后一个离桌面最近,也就是Z次序依次减小,第一个Z次序最大最能被看见]。顶层窗口所形成的子窗口链表构成了一个轴,窗口管理器就是根据Z序列来觉得窗口的哪一部分是显示的,哪一部分是被遮盖的。

       所有顶层窗口的父窗口都是指向桌面窗口的这样一来顶层窗口是桌面窗口的子窗口,所有顶层窗口构成的链表是桌面窗口的子窗口链表。当顶层窗口创建的时候,窗口管理器顶层窗口放在Z轴的顶上,这样使得整个窗口可见,窗口管理器把窗口插入到桌面窗口子窗口链表的前面。WS_EX_TOPMOST这个属性控制着窗口管理器创建顶层窗口,窗口管理器把没有WS_EX_TOPMOST属性的窗口放在具有WS_EX_TOPMOST属性的窗口的后面,这样就使得具有WS_EX_TOPMOST属性的窗口一直显示在前面

    桌面窗口是在窗口层次中的第一层顶层窗口在窗口层次中的第二层子窗口也就是那些创建的时候指定了WS_CHILD 属性的窗口占据了窗口层次的其他层。窗口和子窗口之间的联系,就像桌面窗口和顶层窗口之间的关系一样。

    子窗口显示在其父窗口的客户区域,所有同一个窗口的子窗口同样建立一个Z轴【次序越大在越最上方】,这个和顶层窗口是类似的,顶层窗口也是显示在其父窗口――桌面窗口的客户区域。

       

    16 位和32 位窗口系统的区别

        窗口之间的父子关系、归属所有关系、以及根据 Z轴来显示的这些规则在16位和32位窗口系统中都是相同的。这样可以是在两种窗口系统中高度的兼容。两种窗口系统的区别在于安全和多线程。

       Windows NT 在原有的窗口层次关系中多增加了一层,每一个运行着Windows NT的系统中都有一个Windows工作站对象,这个对象是安全对象的第一层,是所有用户安全对象的继承之源,每一个Windows工作站对象可以拥有一些桌面对象,每一个桌面都拥有上面描述的那样的窗口关系。Windows Nt用了两个桌面窗口对象,一个是用来处理登陆界面、屏蔽、锁住工作站等,一个是我们登陆之后进来操作的窗口了。J通常用户是不能够创建和删除桌面的,不过那是通常,实际上在Windows下面也可以实现类似 Linux 中的多个桌面的效果,每一个桌面都是一个独立的世界。

     两种窗口系统还有两位一个区别,在16 位窗口系统中不支持多线程,所以应用程序开发者在创建窗口的时候不必考虑线程的问题了。而在32位窗口系统中由于又支持了窗口的父子关系,归属与拥有关系,同一个窗口下面的所有线程都拥有相同的一个输入队列,应用程序开发者应该明白输入队列是共享的,在同一个时刻只能有一个线程处理消息,其他的线程都在等待输入队列一直到GetMessage或者PeekMessage返回,而且必须注意的是父窗口和子窗口或者是归属与拥有窗口共用同一个线程。

       在32 窗口系统中定义两种新的窗口类型,前台窗口和背景窗口,这两种窗口没有列到窗口的层次关系中,前台窗口就是用户当前操作的窗口,其他的所有窗口都是背景窗口。 32位窗口系统中支持两个函数来处理前台窗口SetForegroundWindowGetForegroundWindow

     

    操作窗口列表

       下面是窗口列表操作的一些函数:

    Ø      EnumChildWindows

    使用这个函数得到一个窗口的所有子窗口,包括子窗口的子窗口。不过在列举的过程中这个函数不能够列出正在创建的或者销毁的窗口。

    Ø      EnumThreadWindows

    使用这个函数可以列出所有属于这个线程的窗口。在这个函数调用之后创建的窗口是不能够被列举出来的。

    Ø      EnumWindows

    使用这个函数列举出所有顶层窗口,不能够列举出子窗口,要列出所有的顶层窗口,使用这个函数比GetWindow安全。使用GetWindow来列出所有的窗口,可能会导致程序无限循环,因为在调用GetWindow的过程中,可能一些窗口已经销毁了。EnumWindows不能够列举出调用这个函数之后创建的顶层窗口。

    Ø      FindWindow

    可以使用这个函数通过类名或者使用窗口的标题来找到顶层窗口,这个函数不能够用来找子窗口,这个函数不区分参数的大小写。这个函数在Z轴中寻找窗口,找到了之后,就会返回。

    Ø      GetDesktopWindow

    得到桌面窗口句柄

    Ø      GetNextWindow

    使用这个函数得到这个窗口的同属窗口,在16 位窗口系统中GetNextWindow GetWindow是两个不同的函数,在32位系统中这个函数是通过GetWindow来实现的。

    Ø      GetParent

    如果一个窗口存在父窗口,那么可以通过这个函数得到窗口的父窗口,如果窗口是顶层窗口,则返回其所有者窗口句柄。

    Ø      GetThreadDesktop

    这个函数用来得到指定线程的所属的桌面窗口句柄,在win95 win98下面由于不支持多桌面,每次调用该函数都返回同一个值。

    Ø      GetTopWindow

    可以用这个函数来得到给定窗口的第一个子窗口的句柄,如果传递给函数的参数是NULL的话,那么这个函数将会返回最上面的顶层窗口。

    Ø      GetWindow

    应用程序可以调用这个函数来在窗口列表中导航,这个函数有两个参数,一个是窗口的句柄,另外是要得到的窗口句柄和这个窗口之间的关系。

    ·        GW_HWNDNEXT:这个函数返回给定窗口的下一个同属窗口

    ·        GW_HWNDPREV:返回给定窗口的前一个同属窗口  

    ·        GW_HWNDFIRST:返回给定窗口的第一个同属窗口

    ·        GW_HWNDLAST:返回给定窗口的最后一个同属窗口

    ·         GW_OWNER:返回给定窗口的所有者窗口句柄

    ·        GW_CHILD:返回给定窗口的第一个子窗口句柄  

    Ø     IsChild

    这个函数有两个参数,两个窗口句柄,判断两个窗口是否存在父子关系  

    窗口的属性

        当应用程序调用CreateWindow创建窗口的时候,我们必须为窗口指定属性,下面简要的介绍一下窗口的属性。

    WS_OVERLAPPED

       交迭属性是顶层窗口的一种属性,使用这种属性创建的窗口,会被链接到桌面窗口的子窗口链表中,应用程序通常使用这种属性的窗口作为应用程序的主窗口,具有交迭属性的窗口通常具有有标题栏,即使是WS_CAPTION 这个属性没有指定。具有交迭属性的窗口通常都是有边框的,具有交迭属性的窗口可以拥有自己的顶层窗口,也可以所属其他的顶层窗口,所有的这类窗口都具有WS_CLIPSIBLINGS 属性,即使是没有给窗口指定这个属性。

    WS_POPUP

       弹出属性也是应用到顶层窗口的一种属性,使用这种属性创建的窗口会被链接到桌面窗口的子窗口链表中,应用程序通常为对话框窗口设置这个属性,弹出属性和交迭属性的主要区别在于具有弹出属性的窗口不是一定要有标题栏的,而具有交迭属性的窗口则是一定要具有标题栏,具有弹出属性的窗口可以没有边框。和具有交迭属性的窗口一样,具有弹出属性的窗口可以有自己的顶层所属窗口,也可以所属其他的顶层窗口。所有具有弹出属性的窗口必须具有WS_CLIPSIBINGS 属性,即使是用户没有指定这个属性。具有弹出属性的窗口在创建的时候,它的大小和位置不能够使用CW_USEDEFAULT 值。

    WS_CHILD

       子窗口必须具有这个属性,子窗口只能够出现在父窗口的客户区域,这是子窗口和具有交迭属性的窗口以及弹出属性的窗口的主要区别,创建子窗口的时候,位置和大小不能够使用CW_USEDEFAULT 这个值,否则是不能够创建窗口的。

    WS_CAPTION

        当窗口被设置这个属性的时候,窗口的最上头会有标题栏,应用程序可以通过SetWindowText 这个函数来改变标题栏的标题,通常具有标题栏的窗口还具有最大、最小、关闭按钮,和系统菜单。如果一个窗口没有标题栏,那么Windows 是不会创建这些东西的,即使是用户指定了这些属性,系统菜单是依赖标题栏窗口的存在而存在的,如果没有标题栏那么是一定不会有系统菜单的存在的。具有标题栏的窗口通常具有单线的边界具有可以改变窗口大小的属性,通常具有标题栏的窗口是不能具有对话框的边界属性的,除非为窗口设置WS_EX_DLGMODALFRAME 属性。 

    WS_MINIMIZEBOX

       当为窗口设置这个属性的时候,窗口的标题栏上会有一个最小化的按钮,其实对于Windows 来实现这个属性的时候,只是在标题栏上面放置了一个最小化的位图,当用户点击这个最小化位图的时候,窗口最小化,如果最大化位图最在,那么最小化位图被放置在最大化位图的左边。没有这个属性的窗口是不能够最小化的。

    WS_MAXIMIZEBOX

       当为窗口设置这个属性的时候,窗口的标题栏的右上会被放置一个最大化的位图,如果窗口设置了这个属性,用户可以点击最大化的位图或者是通过系统菜单来实现窗口的最大化,没有这个属性的窗口是不能够被最大化的。

    WS_SYSMENU

       如果为窗口指定这个属性,那么就会在窗口的左上角上放置系统菜单位图,系统菜单为用户提供了操作窗口的接口,通常系统菜单会有下面这些系统命令:

    • 恢复最小化的窗口
    • 使用键盘移动窗口
    • 使用键盘改变窗口的大小
    • 最小化窗口
    • 最大化窗口
    • 关闭窗口
    • 切换到其他的任务
    如果一个窗口有系统菜单,用户可以通过点击系统菜单图标来调用系统菜单,或者通过Alt+ 空格的快捷键调出系统菜单,或者通过点击任务栏上窗口的图标来调出系统菜单,如果一个窗口没有系统菜单,那么用户不能够通过键盘来实现系统命令,除非应用程序自身提供了这样的接口。系统菜单对于最大化的窗口也是很有用处的,最大化的窗口覆盖了整个屏幕,这样的窗口不能够被移动,除非恢复到不是最大化的状态,如果这个最大化的窗口有了系统菜单,则就不必一定恢复到非最大化的状态才能够移动。

    WS_HSCROLL

    如果窗口被指定了这个属性,那么窗口会有一个水平的滚动条,窗口是不会自动的滚动滚动条的,如果应用程序要支持滚动条,那么必须自己处理WM_HSCROLL 消息,这个属性通常是在窗口创建的时候,被指定的。 

    WS_VSCROLL

    如果窗口被指定了这个属性,那么窗口会有一个竖直的滚动条,窗口不会自动的滚动滚动条,应用程序必须自己处理WM_VSCROOL 消息来处理滚动条滚动的消息,这个属性通常是在窗口被创建的时候指定的。

    WS_BORDER

    如果窗口被指定了这个属性,那么窗口会有一个单线的边在窗口的周围,如果没有指定这个属性,但是窗口具有标题栏,那么窗口会自动的拥有这个属性,如果窗口没有这个属性,拥有这个属性的窗口不能够通过键盘或者是鼠标改变窗口的大小。

    WS_DLGFRAME

    如果窗口被指定了这个属性,那么窗口具有对话框的边框,这个属性通常是用在对话框窗口的,只能够用在窗口没有标题栏的情况下,如果一个不是对话框的窗口使用了这个窗口,那么窗口必须被指定WS_EX_DLGMODALFRAME 属性。使用这个属性创建的窗口,不能够通过键盘和鼠标改变窗口的大小。

    WS_THICKFRAME

    当窗口被指定了这个属性,那么窗口会有一个可以改变大小的边框,这种属性通常用在程序的主窗口,具有这种属性的窗口的大小可以通过键盘或者鼠标来改变。

    WS_CLIPCHILDREN

    这个属性用在具有子窗口的窗口,使用这个属性,可以使Windows 把子窗口所占的区域拷贝到父窗口,而不是甴父窗口直接的画子窗口所属的区域,如果窗口没有指定这个属性,那么那么父窗口会覆盖子窗口的区域。在一些图片显示或者OpenGL 显示的窗口中,指定这个属性是很重要的。

    WS_CLIPSIBLINGS

    当窗口赋予这个属性,窗口在自绘的时候,不会绘制到同属的子窗口,所有具有交迭属性和弹出属性的窗口都具有这个属性,所有的顶层窗口都具有这个属性,这样一来顶层窗口在自绘的时候,不会绘制在到其他的顶层窗口。 

    WS_VISIBLE

    当窗口被设置这个属性的时候,窗口是可见的,默认的情况下,应用程序必须自己调用ShowWindow 来显示窗口。

    WS_DISABLED

    当窗口被设置这个属性的时候,创建的窗口不能够接受用户的输入,除非应用程序自身提供方法来输入。这个属性通常用在Windows 控件上面。

    WS_CHILDWINDOWS

    这个属性同WS_CHILD。

    WS_OVERLAPPEDWINDOW

    S

    这个属性同WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,这个属性通常用在应用程序的主窗口。

    WS_POPUPWINDOWS

    这个属性同WS_POPUP | WS_BORDER | WS_SYSMENU,尽管这个属性中包含了WS_SYSMENU 属性,如果窗口没有 WS_CAPTION 属性,那么窗口也不会有系统菜单。

    WS_EX_DLGMODALFRAME

    当窗口设置了这个属性的时候,窗口具有对话框的边框,这个属性通常用在对话框窗口,不过任何窗口都可以使用这个属性来获得对话框的边框。

    WS_EX_NOPARENTNOTIFY

    这个属性是用在子窗口上的,当子窗口设置了这个属性,Windows 不发送WM_NOTIFY 消息给子窗口的父窗口,默认情况下,Windows 会在子窗口创建或者销毁的时候发送WM_NOTIFY 消息给子窗口的父窗口。

    WS_EX_TOPMOST

    这个属性仅用在顶层窗口,对于子窗口设置这个属性是被忽略的,如果窗口设置了这个属性,那么窗口会一直在其他窗口的上面。

    WS_EX_ACCEPTFILES

    窗口设置了这个属性,那么窗口可以接受拖放的对象。

    WS_EX_TRANSPARENT

    这个属性能够使窗口透明,设置了这个属性的窗口的背景使可以被看到的,透明窗口对于鼠标和键盘的消息事件并不是透明的

    展开全文
  • 1认识Windows窗口了解窗口的组成 ? 2掌握窗口的基本操作 ? 3初识菜单命令 ? 4进一步掌握鼠标器的基本操作方法 ? 教学重点与难点1重点窗口的基础知识和基本操作 ? 2难点菜单命令 ? 教学准备1 计算机网络及辅助教学...
  • Windows 窗口发送消息参数详解

    万次阅读 2020-06-24 15:32:25
    窗口发送消息参数详解 // 窗口.发送消息 函数功能: 将指定的消息发送到一个窗口,同win32 api 里面的SendMessage等同的效果 中文函数原型: 发送消息(hwnd,msg,wparam,iparam) 英文函数原型: sendmessage(hwnd,...
  • 文章内容来自Windows内核原理与实现 现代操作系统的基本结构 操作系统本身属于软件的范畴,但是它需要紧密地跟硬件打交道,它为上层应用软件或应用系统提供了一层抽象,专门负责硬件资源的管理和分配。应用软件不...
  • 从0开始学习《Windows程序设计》:窗口窗口!!!

    千次阅读 多人点赞 2019-03-10 20:48:15
    一、消息框 在之前的学习中,我们通过MessageBox创建了一个消息框程序! 消息框是什么,消息框就是我们用来跟用户交流的界面...MyWindows.c -- 基本窗口模型 《Windows 程序设计(SDK)》视频教程 ----------------...
  • 认识Windows教案

    2014-06-19 18:41:01
    1、Windows的桌面主要由桌面背景、桌面图标、任务栏、开始按钮四部分构成。  2、鼠标主要有单击、右击、双击、移动、拖动五种基本操作。  教学难点  1、单击和双击的区别。  2、移动和拖动的区别。  教学...
  • windows窗口组成

    千次阅读 2013-09-26 09:18:11
    windows窗口组成     对于刚刚学习MFC的同学,随着学习的进行,肯定会碰到这样的问题:windows窗口到底是由哪些部分组成的呢?请看下面: (1)标题栏title bar。窗口上方的蓝条区域,标题栏左边有控制菜单图表...
  • C#Windows程序有一个主程序,此主程序会加载创建的窗体Form1,而Form1窗体 的控件设计例如样式、位置和本身的创建都会在Form1.design.cs文件中,而Form1的 显示效果会在Form1[设计窗体]文件中,而Form1的所有控件所...
  • Windows 窗口层次关系

    千次阅读 2014-05-14 11:08:32
    相信在Windows 下面编程的很多兄弟们都不是很清楚Windows窗口的层次关系是怎么样的,这个东西很久... 在Windows 的图形界面下,最基本显示信息的元素就是窗口,每一个Windows 窗口都管理着自己与其他窗口之间的关系
  • Windows基本架构

    千次阅读 2020-06-25 23:31:57
    Windows基本架构:主要分为R0-R3四个层级,其中R0(内核态)包括内存、进程、线程、I/O等管理,核心体,设备驱动程序,硬件抽象层(HAL);R3(用户态)包括NTDLL.DLL主要由服务进程、Win32应用程序以及win32子系统...
  • Windows 7基本操作32. 窗口组成33. 对话框操作34. 整理Windows 7 的桌面35. Windows 7 的文件和文件夹管理36. 资源管理器37. 文件或文件夹的选定38. 设置文件或文件夹的属性39. 新建文件或文件夹40. 复制文件...
  • 上机实验 2 Windows 操作系统的基本操作 一实验目的 1掌握窗口和对话框的组成及基本要素 2进一步掌握桌面和任务栏的各种操作 3掌握控制面板的基本功能 二实验内容 1 窗口和对话框的基本组成及操作方法 1.1 窗口 观察...
  • [MFC]_在vs2019中使用MFC快速构建简单windows窗口程序 转自:葛木小舍先生,一只默默奋斗的小菜鸟,为了庆祝展翅翱翔的那天博客 https://www.cnblogs.com/gemuxiaoshe/p/12054099.html 微软基础类库(英语: ...
  • 第4章 文件和文件夹的基本操作;第4章 汉字输入方法概述;4.1 文件和文件夹的概念;4.1.1 文件;1. 文件的类型;2. 文件名;4.1.2 文件夹;...4.2.2 文件资源管理器窗口组成;1. 标题栏;2. 功能区;3. 导航栏;4. 导航
  • 【计算机基础】02Windows7操作系统

    万次阅读 2020-05-05 16:41:48
    第2章 中文Windows 7操作系统 2.1 操作系统概述 2.1.1 操作系统的基本概念 计算机的大脑。告诉计算机做什么及如何做。 1. 操作系统的作用: 1)操作系统是计算机系统应用平台的组成部分 系统软件或应用软件...
  • Windows应用程序组成及编程步骤

    千次阅读 2017-05-07 02:13:01
    Windows源程序组成结构 入口函数 | WinMain 所有程序的入口,类似Main函数 完成定义和初始化,产生消息循环 窗口函数 | WndProc 完成消息循环的响应 WinMain函数 注册窗口类,建立窗口及执行必要的初始化 进入消息...
  • 2对话框的组成掌握它的使用方法 对话框是一种特殊的Windows窗口由标题栏选项卡与标签列表框命令按钮单选按钮复选框 它没有最小化和最大化没有菜单栏对话框可以移动但不能改变大小 ;1.打开系统对话框查看系统基本信息...
  • windows窗口建立

    2012-07-17 10:16:38
    结构WNDCLASS包含一个窗口类的全部信息,也是Windows编程中使用的基本数据结构之一,应用程序通过定义一个窗口类确定窗口的属性,定义如下: typedef struct _WNDCLASS {  UINT style;  WNDPROC ...
  • 掌握WINDOWS XP的窗口组成,了解 Windows XP的桌面 教学重点 Windows XP的窗口组成 教学难点 Windows XP的窗口组成 计算机操作系统 1.操作系统的概念Operating System 1管理和控制计算机软硬件系统 2为用户提供...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 77,579
精华内容 31,031
关键字:

windows7窗口基本组成