[英]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.