Win32API全局窗口类的注册与创建

 

Win32API全局窗口类的注册

  • 应用程序全局窗口类的注册

    • typedef struct tagWNDCLASSEX {

      • UINT      cbSize; //结构体的大小,用sizeof得出
      • UINT      style; //窗口类的风格,默认设置左右画出
      • WNDPROC   lpfnWndProc; //回调函数,窗口处理函数,干活的人
      • int       cbClsExtra; //窗口类的附加数据Buff的大小
      • int       cbWndExtra; //窗口的附加数据Buff的大小
      • HINSTANCE hInstance; //当前模块的实例句柄
      • HICON     hIcon; //窗口图标句柄
      • HCURSOR   hCursor; //鼠标的句柄
      • HBRUSH    hbrBackground; //绘制窗口背景的画刷句柄
      • LPCTSTR   lpszMenuName; //窗口菜单的资源ID字符串
      • LPCTSTR   lpszClassName; //窗口类的名称
      • HICON     hIconSm; //窗口的小图标句柄
    • } WNDCLASSEX, *PWNDCLASSEX;
  • 全局窗口类注册,要在风格中增加CS_GLOBALCLASS,局部的窗口类则不添加此风格参数
    例如: WNDCLASSEX wcex = {0}; wcex.stle = ... | CS_GLOBALCLASS;
 

Win32API CreateWindow

  • HWND CreateWindowEx( DWORD dwExStyle, //窗口的扩展风格 LPCTSTR lpClassName, //已经注册的窗口类名称 LPCTSTR lpWindowName, //窗口标题栏名字 DWORD dwStyle, //窗口的基本风格 int x, //窗口左上角水平坐标位置 int y, //窗口左上角垂直坐标位置 int nWidth, //窗口的宽度 int nHeight, //窗口的高度 HWND hWndParent, //窗口的父窗口句柄 HMENU hMenu, //窗口菜单句柄 HINSTANCE hInstance, //应用程序实例句柄 LPVOID lpParam //窗口创建时附加参数 );
  • 子窗口的创建

    • 创建时要设置父窗口句柄
    • 创建风格要增加WS_CHILD|WS_VISIBLE
 

Win32API 创建窗口类的查找过程

  • 1 根据传入的ClassName,在“局部”窗口类中查找,

    • 找到执行2,
    • 未找到执行3。
  • 2 比较“局部”窗口类与创建时传入的“HINSTANCE变量”

    • 相等则表示:创建和注册的窗口类在同一模块(同一进程创建),创建窗口并返回。
    • 不等则表示:创建和注册的窗口类不在同一模块(不同的进程创建),继续执行3。
  • 3 在“全局”窗口类查找

    • 找到执行4.
    • 未找到执行5.
  • 4 使用找到的窗口类的信息,创建窗口返回。
  • 5 在“系统”窗口类中查找

    • 找到则创建窗口返回。
    • 未找到则创建窗口失败。
时间: 2024-11-04 21:50:50

Win32API全局窗口类的注册与创建的相关文章

WINDOWS程序设计(003)----窗口类的注册

应该结合(002)中的程序例子好好地理解,有十分大的帮助. 链接:WINDOWS程序设计(002)--HELLOWIN程序(源代码及详细解析) WINDOWS程序原理 1.WNDCLASS类型结构的定义 在WinMain中,我们通常用如下形式定义一个WNDCLASS类型的结构.(定义方式参考后面的附表) 然后对该结构的10个字段进行初始化,并调用RegisterClass函数. 在WNDCLASS结构中,两个最重要的字段是第二个字段和最后一个字段. 第二个字段(lpfnWndProc)是用于基于

Windows核心编程05-窗口类的注册

窗口类 窗口类包含了窗口的各种参数信息的数据结构.每个窗口都具有窗口类,基于窗口类创建窗口.每个窗口类都具有一个名称,使用前必须注册到系统. 窗口类的分类 -系统窗口类 系统已经定义好的窗口类,所有应用程序都可以直接使用 -应用程序全局窗口类 由用户自己定义,当前应用程序的所有模块都可以使用 容易产生冗余 -应用程序局部窗口类 由用户自己定义,当前应用程序中本模块可以使用 建议使用这个,局部窗口类可以代替全局窗口类 系统窗口类的注册 不需要注册,直接使用窗口类即可.系统已经定义好相应名称,例如

4.win32注册窗口类和创建窗口

1.注册窗口类函数 (1)RegisterClass/RegisterClassEx ATOM RegisterClass(CONST WNDCLASS *lpWndClass); ATOM RegisterClassEx(CONST WNDCLASSEX *lpwcx); 注册成功后,返回一个非0数字标识,失败返回0. (2)窗口类的风格 CS_GLOBALCLASS - 应用程序全局窗口类 CS_BYTEALIGNCLIENT - 窗口客户区的水平位置8整倍数据对齐 CS_BYTEALIGN

VC++编程之第三课笔记——MFC窗口创建过程以及窗口类的封装

第三课 MFC窗口创建过程以及窗口类的封装 MFC的每一个类都是以C开头的,表明这是一个Class. 工程包含(单文档) 创建工程名为aaa的工程(单文档)时,在类视图中可看见五个类: CAboutDlg CMainFrame CAaaApp CAaaDoc CAaaView 其中: 类CAboutDlg继承自CDialog类,对话框的类 类CMainFrame继承自CFrameWnd类,创建整个程序的框架窗口 类CAaaApp继承自CWinApp类,创建唯一的应用程序对象 类CAaaDoc继承

走进windows编程的世界-----窗口的注册及创建

1   窗口注册和创建 1.1WIN32 窗口程序创建步骤 1.WinMain入口函数的定义 2.WindowProc函数的定义 3.注册窗口类 RegisterClass.RegisterClassEX 4.创建窗口 CreateWindow.CreateWindowEx HWND CreateWindow( LPCTSTRlpClassName,//指向已注册的窗口类的名称的指针 LPCTSTRlpWindowName,//指向窗口名称的指针 DWORDdwStyle,//窗口的风格 int

MFC注册窗口类以及FindWindow按窗口类名查询(避免用#32770获取窗口句柄)

呵呵,最近在研究SendMessage函数,其中需要用到m_hWnd,之后延伸着又尝试获得窗口的句柄,于是遇到了FindWindow函数,原型如下: HWND FindWindow ( LPCSTR lpClassName,    //输入窗口的类名,其实需要是注册过的类名才行,否则是要报错或者查找失败的. LPCSTR lpWindowName, //输入窗口的名称,就是窗口上面蓝色的那行玩意儿写的字. ); 对于这个函数,如果按照窗口的名称查找,相信大家都非常简单,因为名称在rc文件里,是已

【win32】day03-窗口注册和创建

Win32窗口程序创建步骤   1.1 WinMain入口函数的定义 1.2 WindowProc函数的定义 1.3 注册窗口类 RegisterClass/RegisterClassEx 1.4 创建窗口 CreateWindow/CreateWindowEx 1.5 窗口的显示和刷新 ShowWindow/UpdateWindow 1.6 消息处理 GetMessage/DispatchMessage 1.7 窗口退出 WM_DESTROY/PostQuitMessage 窗口的注册 2.1

3.win32窗口类

1.窗口类 窗口类包含了窗口的各种参数信息的数据结构.每个窗口都具有窗口类,基于窗口类创建窗口.每个窗口类都具有一个名称,使用之前必须注册到系统. 2.窗口类的分类 1)系统窗口类 系统已经定义好的窗口类,所有应用程序都可以直接使用. 2)应用程序全局窗口类 由用户自己定义,当前应用程序所有模块都可以使用. 3)应用程序局部窗口类 由用户自己定义,当前应用程序中本模块可以使用. 3. 系统窗口类 注册窗口类的步骤必须要做,但是系统窗口类不需要(程序员)注册,直接使用窗口类即可.系统已经定义好的相

Window 窗口类

窗口类 WNDCLASS 总结 总结为下面的几个问题: 1. 什么是窗口类 2. 窗口类的三种类型 3. 窗口类各字段含义 4. 窗口类的注册和注销 5. 如何使用窗口类,子类化.超类化是什么 下面分别描述: 1. 什么是窗口类? 窗口类定义了一系列属性,系统使用这些属性作为模板来创建出一个或多个 window (窗口). 每个窗口类都关联了一个窗口过程函数(window procedure), 由窗口类创建出的所有窗口(window), 都共享同一个窗口过程函数. 在进程中创建窗口之前必须先注