21xrx.com
2025-03-27 04:28:35 Thursday
文章检索 我的文章 写文章
如何在C++中获取窗口句柄?
2023-07-05 06:31:35 深夜i     --     --
C++ 窗口句柄 获取

在使用C++编写窗口应用程序时,需要获取窗口句柄才能对窗口进行操作,比如修改窗口样式、发送消息等。本文将介绍如何在C++中获取窗口句柄。

一、使用FindWindow函数获取已经存在的窗口句柄

在使用FindWindow函数时,需要传入窗口类名和窗口标题,如果窗口存在,则返回该窗口的句柄。

具体调用方式如下:

HWND FindWindow(
  LPCTSTR lpClassName, // 窗口类名
  LPCTSTR lpWindowName // 窗口标题
);

假设我们要获取QQ登录窗口的句柄,代码如下:

HWND hwnd = FindWindow(L"TXGuiFoundation", L"QQ");
if (hwnd == NULL)
  // 窗口不存在
else
  // 获取到了窗口句柄

二、使用CreateWindow函数创建一个新的窗口,并获取其句柄

在使用CreateWindow函数时,需要传入窗口类名、窗口标题、窗口样式以及窗口位置等参数,函数成功执行后返回创建窗口的句柄。

具体调用方式如下:

HWND CreateWindow(
  LPCTSTR lpClassName,  // 窗口类名
  LPCTSTR lpWindowName, // 窗口标题
  DWORD dwStyle,     // 窗口样式
  int x, int y,     // 窗口位置
  int nWidth, int nHeight, // 窗口大小
  HWND hWndParent,    // 父窗口句柄
  HMENU hMenu,      // 菜单句柄
  HINSTANCE hInstance,  // 应用程序实例句柄
  LPVOID lpParam     // 附加参数
);

假设我们要创建一个简单的窗口,并获取其句柄,代码如下:

HWND hwnd = CreateWindow(
  L"STATIC",        // 窗口类名为STATIC,表示创建一个静态文本框
  L"My Window",       // 窗口标题
  WS_VISIBLE | WS_BORDER,  // 窗口样式,这里使用可见的边框窗口样式
  10, 10,          // 窗口位置
  300, 200,         // 窗口大小
  NULL,           // 父窗口句柄为NULL,表示创建一个顶层窗口
  NULL,           // 没有菜单,hMenu置为NULL
  GetModuleHandle(NULL),  // 应用程序实例句柄
  NULL           // 没有附加参数
);
if (hwnd == NULL)
  // 创建窗口失败
else
  // 获取到了新窗口的句柄

以上就是获取窗口句柄的两种常见方式,开发者可以根据实际需求选择合适的方式来获取窗口句柄,方便后续对窗口进行操作。

  
  

评论区