gpt4 book ai didi

c++ - Win32 C++ 中的 GetWindowText() 不工作

转载 作者:行者123 更新时间:2023-11-28 03:42:31 24 4
gpt4 key购买 nike

在做一个项目时,我从窗口中的 edittext 控件中检索文本,而 GetWindowText() 函数无法读入缓冲区并返回 0,但是调用 SetWindowText() 到同一控件工作正常,无论是在初始化窗口时还是在发生其他事件时(单击复选框等)。不确定是什么原因导致读取数据失败,下面贴出相关代码:

#define IDC_SOPRANO_H 1788
INT_PTR CALLBACK Rules(HWND, UINT, WPARAM, LPARAM);
LPSTR SOP_HIGH_NOTE = "A#4";
INT_PTR CALLBACK Rules(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
HWND SOP_HIGH_NOTE_HWND = GetDlgItem(hDlg, IDC_SOPRANO_H);
switch (message)
{
case WM_INITDIALOG:
SetWindowText(SOP_HIGH_NOTE_HWND, SOP_HIGH_NOTE);
return (INT_PTR)TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
GetWindowText(SOP_HIGH_NOTE_HWND, SOP_HIGH_NOTE, 4);
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
}

最佳答案

SOP_HIGH_NOTE 是一个指针,而不是分配的缓冲区。您声明它最初指向一个字符串文字,它存在于进程的只读数据中。将该指针传递给 GetWindowText() 将尝试写入该只读内存块。

试试这个:

TCHAR SOP_HIGH_NOTE[] = TEXT("A#4");

这在内存中声明了一个实际的读/写缓冲区,并用字符串文字的内容预先填充它,而不是指向文字本身的内存地址。

关于c++ - Win32 C++ 中的 GetWindowText() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8664094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com