繁体   English   中英

C ++ FindWindow()问题

[英]C++ FindWindow() Issues

我正在尝试使函数找到一个窗口句柄。 我在以下方式之前做了很多次:

HWND windowHandle
windowHandle = FindWindow(NULL, "NameOfWindowIAmLookingFor");

但是,我接着尝试执行以下操作:

string myString = "NameOfWindowIAmLookingFor";
HWND windowHandle
windowHandle = FindWindow(NULL, myString);

并出现以下错误:

error: cannot convert 'std::string {aka std::basic_string<char>)' to 'LPCSTR {aka const char*} ' for argument '2' to 'HWND__* FindWindowA(LPCSTR, LPCSTR)';

我有另一个函数,给myString一个值,所以我想将该值作为变量传递给FindWindow()函数,但是这个错误即将出现,我不明白发生了什么。

问题::为什么我会收到此错误,如何将字符串变量放入FindWindow()函数?

为什么我会收到此错误,如何将字符串变量放入FindWindow()函数?

编译器错误消息非常清楚。 FindWindow()函数需要一个const char*作为第二个参数,而std::string则不是。
要获取指向由std::string实例管理的原始char数组数据的( const )指针,请使用c_str()方法:

FindWindow(NULL, myString.c_str()); 

问题是你试图将std::string类型的对象传递给需要LPCSTR的函数(这是const char*的别名),但std::string不会隐式转换为const char* ,因此你收到错误信息。 要使函数起作用,您需要传递一个C风格的字符串( const char* ),您可以通过传递myString.c_str()而不是myString

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM