簡體   English   中英

無法將“ TCHAR *”轉換為“ const char *”

[英]Cannot convert 'TCHAR*' to 'const char*'

我不知道為什么在運行代碼時出現這兩個錯誤。 錯誤:類型的參數'BOOL(運動::)(HWND__,LPARAM)'不匹配'BOOL()(HWND __ *,LPARAM)'的錯誤:類型的參數'BOOL(運動::)(HWND__,LPARAM)'與“ BOOL( )(HWND __ *,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;
}

這是頭文件:

#ifndef MOVEMENT_H
#define MOVEMENT_H

#include <windows.h>
#include <iostream>

using namespace std;

class Movement
{
public:
    Movement();
protected:
    HWND windowHandle;
    BOOL CALLBACK MyEnumProc(HWND hWnd, LPARAM lParam);
    int xLoc;
    int yLoc;
    int getXLoc();
    int getYLoc();
};

#endif // MOVEMENT_H

這里的問題是EnumWindows期望使用WNDENUMPROC參數,該參數是

BOOL (*)(HWND, LPARAM);

在您的代碼示例MyEnumProc具有類型

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

之所以存在差異,是因為它是Movement的實例方法。 要解決此問題,您需要使MyEnumProc成為靜態方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM