首页
社区
课程
招聘
[求助]TraceMe.exe 源代码编写
2009-8-13 18:55 5772

[求助]TraceMe.exe 源代码编写

2009-8-13 18:55
5772
#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*,谁知道怎么解决,帮帮我。

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞0
打赏
分享
最新回复 (4)
雪    币: 194
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mienboy 2009-8-13 18:59
2
0
编译环境是VC2005
雪    币: 1450
活跃值: (35)
能力值: (RANK:680 )
在线值:
发帖
回帖
粉丝
jackozoo 14 2009-8-13 19:09
3
0
VC2005默认使用UNICODE
TCHAR就成了wchar, 而你的szName却是char*类型的, 显然不能作为wchar*传入.
设置一下项目属性不使用UNICODE即可
雪    币: 194
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mienboy 2009-8-13 19:33
4
0
。。。谢谢大大,解放了
雪    币: 194
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mienboy 2009-8-13 19:34
5
0
原来TCHAR是一个宏,根据编译环境的设置而选使用字符集。
游客
登录 | 注册 方可回帖
返回