注册 登录
编程论坛 C++教室

::FindWindow出错,新手

fyz520 发布于 2010-11-30 09:13, 1208 次点击
我的是vs2008
我新建了一个mfc应用程序,基于对话框的,
在一个button里写下如下代码:(是网上抄写的,想测试下,)
void Ctest4Dlg::OnBnClickedOk()
{
    HWND hWndId,hWndB1;
hWndId = ::FindWindow(NULL,_T("计算器"));本来这句也有错,但是我加了_T就没有了
if (hWndId!=0)
{
 hWndB1=::FindWindowEx(hWndId,0,"Button","7");
 if (hWndB1!=0 )
 {
  ::PostMessage(hWndB1,WM_LBUTTONDOWN,0,0);
  ::PostMessage(hWndB1,WM_LBUTTONUP,0,0);   
 }
 hWndB1=::FindWindowEx(hWndId,0,"Button","1");
 if (hWndB1!=0 )
 {
  ::PostMessage(hWndB1,WM_LBUTTONDOWN,0,0);
  ::PostMessage(hWndB1,WM_LBUTTONUP,0,0);   
 }
 hWndB1=::FindWindowEx(hWndId,0,"Button","9");
 if (hWndB1!=0 )
 {
  ::PostMessage(hWndB1,WM_LBUTTONDOWN,0,0);
  ::PostMessage(hWndB1,WM_LBUTTONUP,0,0);   
 }
}

    // TODO: 在此添加控件通知处理程序代码
    OnOK();
}


错误提示:
错误    1    error C2664: “FindWindowExW”: 不能将参数 3 从“const char [7]”转换为“LPCWSTR”    d:\My Documents\Visual Studio 2008\Projects\test4\test4\test4Dlg.cpp    163    test4
错误    2    error C2664: “FindWindowExW”: 不能将参数 3 从“const char [7]”转换为“LPCWSTR”    d:\My Documents\Visual Studio 2008\Projects\test4\test4\test4Dlg.cpp    169    test4
错误    3    error C2664: “FindWindowExW”: 不能将参数 3 从“const char [7]”转换为“LPCWSTR”    d:\My Documents\Visual Studio 2008\Projects\test4\test4\test4Dlg.cpp    175    test4

4 回复
#2
fyz5202010-11-30 09:41
::FindWindowEx(hWndId,0,_T("Button"),_T("7"));

原来是要加_T,不知道为什么要加这个_T哦,是因为vs2008吗?
#3
flyingcat2010-11-30 15:49
项目->属性->配置属性->常规->字符集
选择  使用多字节字符集->确定
然后你
hWndId = ::FindWindow(NULL,_T("计算器"));
这句的_T就可以不要了

VS2008是默认Unicode字符集的
#4
laoyang1032010-11-30 15:57
_T是宽字符的意思  可以不加上 也可以加  看你什么编译器了
#5
fyz5202010-11-30 16:33
原来是这样哦,谢谢了
1