god2019 2023-02-20 22:24 采纳率: 80%
浏览 13
已结题

WIN32编辑框文本传参数据不一致

//WIN32编辑框文本传参到另一个cpp里处理数据,但参数传输错误,代码如下
TCHAR name[] = {0};
TCHAR password[] = {0};

case WM_COMMAND:
        switch (LOWORD(wParam)) {
        case ID_LOADBUTTON:
            GetWindowText(LoadText,name,MAX_SIZE);//编辑框输入后这里name得到数据正确,例如传入admin
            GetWindowText(PassText, password, MAX_SIZE);
            if (CheckLoad(name, password)) {//name传到这个方法后name变成a123不知道为什么会不一致,后面附CheckLoad方法
                //测试
                char *createSystem = "创建学生系统窗口";
                WriteConsole(g_hOutput, createSystem, strlen(createSystem), NULL, NULL);

            }
            else {
                MessageBox(hWnd, "infor", "账号或密码错误", MB_OK);
            }
            
            
            break;
        }
        break;
...
bool CheckLoad(TCHAR *name, TCHAR *password) {
    if (*name == L'admin' &&*password == 123) {
        return true;
    }
    return false;
}
  • 写回答

3条回答 默认 最新

  • 菜鸟才能学的更多 2023-02-20 22:46
    关注

    在 CheckLoad 方法中比较字符串内容的方式是错误的,应该使用字符串比较函数进行比较。此外,字符串 "admin" 和数字 123 都应该用字符串形式传入,而不是直接使用数字和字符常量。

    TCHAR name[MAX_SIZE] = {0};
    TCHAR password[MAX_SIZE] = {0};
    
    case WM_COMMAND:
        switch (LOWORD(wParam)) {
        case ID_LOADBUTTON:
            GetWindowText(LoadText, name, MAX_SIZE);
            GetWindowText(PassText, password, MAX_SIZE);
            if (CheckLoad(name, password)) {
                char *createSystem = "创建学生系统窗口";
                WriteConsole(g_hOutput, createSystem, strlen(createSystem), NULL, NULL);
            }
            else {
                MessageBox(hWnd, "账号或密码错误", "infor", MB_OK);
            }
            break;
        }
        break;
    
    bool CheckLoad(TCHAR *name, TCHAR *password) {
        if (_tcscmp(name, L"admin") == 0 && _tcscmp(password, L"123") == 0) {
            return true;
        }
        return false;
    }
    

    注意,我还做了以下更改:

    在定义 name 和 password 数组时,为了确保数组中有足够的空间存储编辑框中的文本,使用了 MAX_SIZE 常量。
    在 CheckLoad 方法中,使用了 _tcscmp() 函数进行字符串比较。
    在 MessageBox 函数中,将 "infor" 和 "账号或密码错误" 的位置颠倒,以符合函数的参数顺序。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月1日
  • 已采纳回答 2月21日
  • 创建了问题 2月20日

悬赏问题

  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”