//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;
}
WIN32编辑框文本传参数据不一致
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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" 和 "账号或密码错误" 的位置颠倒,以符合函数的参数顺序。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报