2.02 窗口创建

CreateWindow / CreateWindowEx

  1. // https://blog.csdn.net/dengkangou9055/article/details/102069060
  2. CreateWindowEx(
  3. DWORD dwExStyle, // 窗口扩展风格
  4. LPCSTR lpClassName, // 已经注册的窗口类名称
  5. LPCSTR lpWindowName, // 窗口标题栏名称
  6. DWORD dwStyle, // 窗口基本风格
  7. int X, // 左上角坐标 + 宽高
  8. int Y,
  9. int nWidth,
  10. int nHeight,
  11. HWND hWndParent, // 父窗口句柄
  12. HMENU hMenu, // 窗口菜单句柄
  13. HINSTANCE hInstance, // 应用程序实例句柄
  14. LPVOID lpParam); // 窗口创建时附加参数
  15. // 创建成功时 返回窗口句柄

窗口类查询(hInstance 和 lpszClassName)过程

系统根据传入的窗口类名称,在应用程序局部窗口类中查找,如果找到执行2,未找到执行3。

比较局部窗口类与创建窗口时传入的HINSTANCE变量。如果发现相等,创建和主册的窗口类在同一模块,创建窗口返回。如果不相等,继续执行3。

在应用程序全局窗口类,如果找到,执行4,如果未找到执行5。

使用找到的窗口类的信息,创建窗口返回。

在系统窗口类中查找,如果找到创建窗口返回,否则创建窗口失败。

即: 先在局部窗口类找, 然后去全局窗口类找 窗口类名称以及HINSTANCE变量

创建窗口过程

  1. 找到窗口类
  2. 申请内存,将窗口数据信息存入内存 返回这块内存的句柄, 失败则返回NULL

子窗口

需要设置父窗口句柄

风格增加 WS_CHILD | WS_VISIBLE