21xrx.com
2024-11-05 19:26:10 Tuesday
登录
文章检索 我的文章 写文章
如何在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

  // 获取到了新窗口的句柄

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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复