首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ FindWindow()问题

C++ FindWindow()问题
EN

Stack Overflow用户
提问于 2014-04-29 14:52:35
回答 2查看 1.5K关注 0票数 1

我正在努力使一个函数找到一个窗口句柄。在此之前,我曾多次这样做:

代码语言:javascript
复制
HWND windowHandle
windowHandle = FindWindow(NULL, "NameOfWindowIAmLookingFor");

然而,我随后试图做到以下几点:

代码语言:javascript
复制
string myString = "NameOfWindowIAmLookingFor";
HWND windowHandle
windowHandle = FindWindow(NULL, myString);

然后出现以下错误:

代码语言:javascript
复制
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()函数中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-29 15:00:44

为什么要得到这个错误,如何将字符串变量放入FindWindow()函数中?

编译器错误消息非常清楚。FindWindow()函数需要一个const char*作为第二个参数,而std::string不是。

要获取(const)指向由std::string实例管理的原始字符数组数据的指针,请使用c_str()方法:

代码语言:javascript
复制
FindWindow(NULL, myString.c_str()); 
票数 3
EN

Stack Overflow用户

发布于 2014-04-29 15:02:22

问题是,您试图将一个std::string类型的对象传递到一个需要LPCSTR (const char*的别名)的函数中,但是std::string并不隐式转换为const char*,因此得到了错误消息。要使函数正常工作,需要传递一个C样式字符串(const char*),通过传递myString.c_str()而不是myString来实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23368151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档