【问题标题】:C++ FindWindow() IssuesC++ FindWindow() 问题
【发布时间】:2014-04-29 14:52:35
【问题描述】:

我试图让一个函数找到一个窗口句柄。在以下方式之前我已经多次这样做了:

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需要什么以及你传递给它什么。

标签: c++ findwindow


【解决方案1】:

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

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

FindWindow(NULL, myString.c_str()); 

【讨论】:

  • 你的好家伙。我是个新手,非常感谢您写得很好的解释。
【解决方案2】:

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

【讨论】:

  • 为那个家伙打个招呼,说得好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-28
  • 2012-06-07
  • 2018-08-17
  • 2021-05-21
  • 2012-05-29
相关资源
最近更新 更多