GetWindowtext不返回任何内容 我试图学习如何使用VisualStudio为C++制作GUI。我试图创建一个按钮,当你按下它时,会出现一个包含编辑窗口内容的文本框,但当我运行程序时,GetWindowText函数返回一个空白字符串。我曾尝试调整缓冲区的大小,以确定这是否是问题所在,但我无法通过这种方式解决它。我曾尝试使用number代替GetWindowTextLength()函数,但我无法让它以这种方式工作 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: {` HMENU hMenubar = CreateMenu(); HMENU hFile = CreateMenu(); HMENU hOptions = CreateMenu(); AppendMenu(hMenubar, MF_POPUP, (UINT_PTR)hFile, L"File"); AppendMenu(hMenubar, MF_POPUP, NULL, L"Edit"); AppendMenu(hMenubar, MF_POPUP, (UINT_PTR)hOptions, L"Options"); AppendMenu(hFile, MF_STRING, NULL, L"Exit"); AppendMenu(hOptions, MF_STRING, NULL, L"option 1"); AppendMenu(hOptions, MF_STRING, NULL, L"option 2"); SetMenu(hWnd, hMenubar); CreateWindow(TEXT("button"), TEXT("Hello"), WS_VISIBLE | WS_CHILD, 10, 10, 80, 25, hWnd, (HMENU) ID_BUTTON1, NULL, NULL); static HWND hWndTextbox = CreateWindow(TEXT("edit"), TEXT("sim"), WS_VISIBLE | WS_CHILD|WS_BORDER | ES_AUTOHSCROLL, 90, 120, 300, 20, hWnd, (HMENU) ID_TEXT3, NULL, NULL); CreateWindow(TEXT("button"), TEXT("shiny"), WS_VISIBLE | WS_CHILD, 50, 50, 80, 50, hWnd, (HMENU) ID_BUTTON2, NULL, NULL); } break; case WM_COMMAND: { if (LOWORD(wParam) == ID_BUTTON1) { MessageBox(hWnd, TEXT("Button has been clicked"), TEXT("title for popup"), MB_ICONINFORMATION); } if (LOWORD(wParam) == ID_BUTTON2) { // create some default vars // Allocate buffer including terminating null int length = GetWindowTextLength(hWndTextbox) + 1; std::wstring uinput(GetWindowTextLength(hWndTextbox) + 1, 0); // Address of first character is used to obtain pointer to non-const data // (as opposed to wstring::c_str()). int size = GetWindowText(hWndTextbox, &uinput[0], length+1); // Resize buffer to the actual text length uinput.resize(size); // MessageBox only needs pointer to const string, so we can use wstring::c_str() here. MessageBox(hWnd, uinput.c_str(), TEXT("Message box"), MB_OK); } break; int wmId = LOWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } } break; case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); // TODO: Add any drawing code that uses hdc here... EndPaint(hWnd, &ps); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }`

GetWindowtext不返回任何内容 我试图学习如何使用VisualStudio为C++制作GUI。我试图创建一个按钮,当你按下它时,会出现一个包含编辑窗口内容的文本框,但当我运行程序时,GetWindowText函数返回一个空白字符串。我曾尝试调整缓冲区的大小,以确定这是否是问题所在,但我无法通过这种方式解决它。我曾尝试使用number代替GetWindowTextLength()函数,但我无法让它以这种方式工作 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_CREATE: {` HMENU hMenubar = CreateMenu(); HMENU hFile = CreateMenu(); HMENU hOptions = CreateMenu(); AppendMenu(hMenubar, MF_POPUP, (UINT_PTR)hFile, L"File"); AppendMenu(hMenubar, MF_POPUP, NULL, L"Edit"); AppendMenu(hMenubar, MF_POPUP, (UINT_PTR)hOptions, L"Options"); AppendMenu(hFile, MF_STRING, NULL, L"Exit"); AppendMenu(hOptions, MF_STRING, NULL, L"option 1"); AppendMenu(hOptions, MF_STRING, NULL, L"option 2"); SetMenu(hWnd, hMenubar); CreateWindow(TEXT("button"), TEXT("Hello"), WS_VISIBLE | WS_CHILD, 10, 10, 80, 25, hWnd, (HMENU) ID_BUTTON1, NULL, NULL); static HWND hWndTextbox = CreateWindow(TEXT("edit"), TEXT("sim"), WS_VISIBLE | WS_CHILD|WS_BORDER | ES_AUTOHSCROLL, 90, 120, 300, 20, hWnd, (HMENU) ID_TEXT3, NULL, NULL); CreateWindow(TEXT("button"), TEXT("shiny"), WS_VISIBLE | WS_CHILD, 50, 50, 80, 50, hWnd, (HMENU) ID_BUTTON2, NULL, NULL); } break; case WM_COMMAND: { if (LOWORD(wParam) == ID_BUTTON1) { MessageBox(hWnd, TEXT("Button has been clicked"), TEXT("title for popup"), MB_ICONINFORMATION); } if (LOWORD(wParam) == ID_BUTTON2) { // create some default vars // Allocate buffer including terminating null int length = GetWindowTextLength(hWndTextbox) + 1; std::wstring uinput(GetWindowTextLength(hWndTextbox) + 1, 0); // Address of first character is used to obtain pointer to non-const data // (as opposed to wstring::c_str()). int size = GetWindowText(hWndTextbox, &uinput[0], length+1); // Resize buffer to the actual text length uinput.resize(size); // MessageBox only needs pointer to const string, so we can use wstring::c_str() here. MessageBox(hWnd, uinput.c_str(), TEXT("Message box"), MB_OK); } break; int wmId = LOWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } } break; case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hWnd, &ps); // TODO: Add any drawing code that uses hdc here... EndPaint(hWnd, &ps); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; }`,c++,winapi,visual-studio-2017,C++,Winapi,Visual Studio 2017,代码的其余部分是由visual studio自动生成的,因此我只包含了进行更改的部分您不必检查返回值是否有错误。总是一个错误。一些调试将帮助您。您会发现名为hWndTextbox的多个变量是问题的根源。请尝试调试。谢谢您帮助我解决了错误。

代码的其余部分是由visual studio自动生成的,因此我只包含了进行更改的部分

您不必检查返回值是否有错误。总是一个错误。一些调试将帮助您。您会发现名为hWndTextbox的多个变量是问题的根源。请尝试调试。谢谢您帮助我解决了错误。