#include <windows.h>
#include "resource.h"
unsigned char Table[8] = {0xC,0xA,0x13,0x9,0xC,0xB,0xA,0x8};
BOOL GenRegCode( TCHAR *rCode,TCHAR *name,int len)
{
int i,j;
unsigned long code = 0;
for(i = 3,j=0;i<len;i++,j++)
{
if(j>7) j=0;
code += (BYTE)name[i]*Table[j];
}
::wsprintf(name,TEXT("%ld"),code);
if(lstrcmp(rCode,name) == 0)
return true;
else
return false;
}
INT_PTR CALLBACK DialogProc( HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch( uMsg )
{
case WM_INITDIALOG:
::SetWindowTextA(hwndDlg,"");
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_BTN_START:
{
char szName[256],szKey[256];
int nName = 0 ,nKey = 0;
nName = ::GetDlgItemTextA(hwndDlg,IDC_EDIT_NAME,szName,256);
nKey = ::GetDlgItemTextA(hwndDlg,IDC_EDIT_KEY,szKey,256);
if(szName[0] == 0 || nName < 5)
{
::MessageBoxA(0,"用户名长度不能小于5","",0);
break;
}
GenRegCode(szKey,szName,nName);
}
break;
}
break;
case WM_CLOSE:
::EndDialog(hwndDlg,0);
break;
}
return 0;
}
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
::DialogBoxParamA(hInstance,(LPSTR)IDD_MAIN,NULL,DialogProc,NULL);
return 0;
}
为什么编译失败,找不到原因。。
1>.\main.cpp(50) : error C2664: “GenRegCode”: 不能将参数 1 从“char [256]”转换为“TCHAR *”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
开始是用GetDlgItemTextA取得name和key,然后传给GenRegCode,为什么这个函数的形参定义确是TCHAR而不是char*,谁知道怎么解决,帮帮我。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)