C++ 从文本框读取输入

C++ 从文本框读取输入,c++,winapi,C++,Winapi,我无法从第二个文本框读取数据,该文本框是IDC\u主输出。我只能显示第一个文本框的内容,即IDC\u MAIN\u输入。我试过各种方法来解决这个问题,但还是解决不了。到目前为止,我的代码如下: switch (msg) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_MAIN_BUTTON: char *bufIn,

我无法从第二个文本框读取数据,该文本框是IDC\u主输出。我只能显示第一个文本框的内容,即
IDC\u MAIN\u输入
。我试过各种方法来解决这个问题,但还是解决不了。到目前为止,我的代码如下:

switch (msg)
    {
    case WM_COMMAND:
            switch (LOWORD(wParam))
            {
            case IDC_MAIN_BUTTON:
                char *bufIn, *bufOut;
                int lenIn = GetWindowTextLength(GetDlgItem(hwnd, IDC_MAIN_INPUT));
                int lenOut = GetWindowTextLength(GetDlgItem(hwnd, IDC_MAIN_OUTPUT));
                bufIn = (char*)GlobalAlloc(GPTR, lenIn + 1);
                GetDlgItemText(hwnd, IDC_MAIN_INPUT, bufIn, lenIn + 1);
                bufOut = (char*)GlobalAlloc(GPTR, lenOut + 1);
                GetDlgItemText(hwnd, IDC_MAIN_OUTPUT, bufOut, lenOut + 1);
                MessageBox(NULL, bufIn, "String", NULL);
                MessageBox(NULL, bufOut, "String", NULL);
                //MessageBox(NULL, input, "Title Here", MB_OK);
                mc.application(bufIn, bufOut);
            }
        break;
    case WM_CREATE:
        CreateObjects(hwnd);
        break;
    case WM_CLOSE:
        DestroyWindow(hwnd);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hwnd, msg, wParam, lParam);
    }
    return 0;
}

检查
GetDlgItem(hwnd,IDC\u MAIN\u输出)
的返回值是否不为空。如果为空,则IDC_MAIN_输出控件不存在。我已经在.h文件中声明了IDC_MAIN_输出,但仍然无法从IDC_MAIN_输出中获取数据。中断前}的相关性是什么?它是交换机内的一个交换机。请阅读新更新codes@user3479771:是否声明IDC_MAIN_输出不是问题(如果没有声明,程序将无法编译)。问题是:您的窗口中是否存在控件IDC\u MAIN\u输出?是否如我在前面的评论中所建议的那样,并检查
GetDlgItem(hwnd,IDC\u MAIN\u输出)
是否返回空值。