C ++ FindWindow()问题

时间:2014-04-29 14:52:36

标签: c++ findwindow

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

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()函数?

2 个答案:

答案 0 :(得分:3)

  

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

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

FindWindow(NULL, myString.c_str()); 

答案 1 :(得分:0)

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