C++ 无法转换';TCHAR*';至';常量字符*';

C++ 无法转换';TCHAR*';至';常量字符*';,c++,C++,我不知道为什么在运行代码时会出现这两个错误。 错误:类型为“BOOL(Movement::)(HWND_uuuuux,LPARAM)”的参数与“BOOL()(HWND_uuux,LPARAM)”不匹配 错误:类型为“BOOL(Movement::)(HWND_uuuuux,LPARAM)”的参数与“BOOL()(HWND_uuux,LPARAM)”不匹配 cpp文件如下所示: #include "movement.h" #include <windows.h> #include &l

我不知道为什么在运行代码时会出现这两个错误。 错误:类型为“BOOL(Movement::)(HWND_uuuuux,LPARAM)”的参数与“BOOL()(HWND_uuux,LPARAM)”不匹配 错误:类型为“BOOL(Movement::)(HWND_uuuuux,LPARAM)”的参数与“BOOL()(HWND_uuux,LPARAM)”不匹配

cpp文件如下所示:

#include "movement.h"
#include <windows.h>
#include <tchar.h>
#include <iostream>

using namespace std;

#pragma comment(lib, "user32.lib")

Movement::Movement()
{
    xLoc = 10;
    yLoc = 50;
    while(true){
            windowHandle = NULL;
            EnumWindows(MyEnumProc, 0);

            MoveWindow(windowHandle, getXLoc(), getYLoc(), 1220, 930, false);
            Sleep(5);
        }
}
BOOL CALLBACK Movement::MyEnumProc(HWND hWnd, LPARAM lParam)
{
    TCHAR title[500];
    ZeroMemory(title, sizeof(title));

    //string strTitle;

    GetWindowText(hWnd, title, sizeof(title)/sizeof(title[0]));

    //_tprintf(_T("Found window: %s\n"), title);

    //strTitle += title; // Convert to std::string
    if(_tcsstr(title, _T("Firefox")))
    {
        windowHandle = hWnd;
        return FALSE;
    }
    return TRUE;
}
int Movement::getXLoc(){
    if(xLoc<70&&yLoc<=30){
        xLoc += 1;
        Sleep(10);
    }else if(yLoc>30){
        xLoc -= 1;
        Sleep(10);
    }
    return xLoc;
}
int Movement::getYLoc(){
    if(yLoc>10&&xLoc<30){
        yLoc -= 1;
        Sleep(10);
    }else if(xLoc>=30&&yLoc<70){
        yLoc += 1;
        Sleep(10);
    }
    return yLoc;
}
#包括“movement.h”
#包括
#包括
#包括
使用名称空间std;
#pragma注释(lib,“user32.lib”)
移动::移动()
{
xLoc=10;
yLoc=50;
while(true){
windowHandle=NULL;
枚举窗口(MyEnumProc,0);
MoveWindow(windowHandle,getXLoc(),getYLoc(),1220930,false);
睡眠(5);
}
}
BOOL回调移动::MyEnumProc(HWND-HWND,LPARAM-LPARAM)
{
TCHAR名称[500];
零内存(title,sizeof(title));
//弦杆;
GetWindowText(hWnd,title,sizeof(title)/sizeof(title[0]);
//_tprintf(_T(“找到的窗口:%s\n”),标题);
//strTitle+=title;//转换为std::string
如果(_tcsstr(标题为“Firefox”))
{
windowHandle=hWnd;
返回FALSE;
}
返回TRUE;
}
int Movement::getXLoc(){

如果(xLoc10&&xLoc=30&&yLoc这里的问题是
EnumWindows
需要一个
WNDENUMPROC
参数,该参数是

BOOL (*)(HWND, LPARAM);
在代码示例中,
MyEnumProc
具有以下类型

BOOL (Movement::*)(HWND, LPARAM);

之所以存在差异,是因为它是
Movement
上的一个实例方法。要解决此问题,需要将
MyEnumProc
设置为静态方法这里的问题是
EnumWindows
需要一个
WNDENUMPROC
参数,该参数是

BOOL (*)(HWND, LPARAM);
在代码示例中,
MyEnumProc
具有以下类型

BOOL (Movement::*)(HWND, LPARAM);

差异的存在是因为它是
移动
上的一个实例方法。要解决这个问题,您需要将
MyEnumProc
设置为一个静态方法

我看不出问题标题与问题正文如何匹配。错误与TCHAR无关,它与将类的函数作为回调传递有关。还记得报告您得到的位置错误,因为您不能使用注释发布行号,如://我看不出问题标题与问题正文如何匹配。错误与TCHAR无关,它与将类的函数作为回调传递有关。另外,请记住报告错误的位置,因为您不能使用注释发布行号,如://