首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Win32 LB_GETTEXT返回垃圾

在Win32中,LB_GETTEXT函数用于从列表控件(如CListCtrl)中获取指定的文本。如果成功,则该函数返回被删除或替换的文本的指针。如果失败,则该函数返回NULL。

下面是一个示例代码,用于获取列表控件中的文本并打印输出:

代码语言:txt
复制
// 假设列表控件名为list
char *text = list->GetItemText(list->GetFirstSelectedItemPosition());
if (text)
{
    printf("Selected text: %s\n", text);
    free(text);
}
else
{
    printf("No text selected.\n");
}

如果获取到的文本是一个字符串,可以直接打印输出。如果获取到的文本是一个指针,需要使用free()函数释放该指针占用的内存。

需要注意的是,LB_GETTEXT函数是异步的,需要等待列表控件刷新才能获取最新的文本。因此,如果需要获取最新的文本,应该使用PostMessage()函数向列表控件发送一条消息,以触发其刷新。例如:

代码语言:txt
复制
// 假设列表控件名为list
char *text = list->GetItemText(list->GetFirstSelectedItemPosition());
if (text)
{
    // 发送一条消息以触发列表控件刷新
    SendMessage(list, WM_MY_MESSAGE, 0, 0);
}

在消息处理函数中,可以再次调用LB_GETTEXT函数以获取最新的文本。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

window32api_win32api与硬件设备

作者:浪子花梦,一个有趣的程序员 ~ . Win32API 相关文章如下: Win32利用CreateEvent 实现简单的 —— 线程同步 Win32消息处理机制与窗口制作 Win32远程线程注入 .dll 文件 Win32删除目录下的所有文件 —— 递归遍历 (一)Win32服务程序编写 —— 使用SC命令创建与删除 (二)Win32服务程序编写 —— 使用命令行参数创建与删除 Win32使用快照、psapi.dll、wtsapi32.dll、ntdll.dll 四种方式实现 —— 枚举进程 (一)Win32进程通信 —— 自定义消息实现 (二)Win32进程通信 —— 内存映射文件 (三)Win32进程通信 —— 数据复制消息 (四)Win32进程通信 —— 剪贴板的使用 (五)Win32进程通信 —— 匿名管道 (六)Win32进程通信 —— 邮槽的使用

01

C# —— GetProcAddress函数检索指定的动态链接库(DLL)中的输出库函数地址。

GetProcAddress函数检索指定的动态链接库(DLL)中的输出库函数地址。 函数原型: FARPROC GetProcAddress( HMODULE hModule, // DLL模块句柄 LPCSTR lpProcName // 函数名 ); 参数: hModule [in] 包含此函数的DLL模块的句柄。LoadLibrary或者GetModuleHandle函数可以返回此句柄。 lpProcName [in] 包含函数名的以NULL结尾的字符串,或者指定函数的序数值。如果此参数是一个序数值,它必须在一个字的底字节,高字节必须为0。 返回值: 如果函数调用成功,返回值是DLL中的输出函数地址。 如果函数调用失败,返回值是NULL。得到进一步的错误信息,调用函数GetLastError。 注释: GetProcAddress函数被用来检索在DLL中的输出函数地址。 lpProcName指针指向的函数名,拼写和大小写必须和DLL源代码中的模块定义文件(.DEF)中输出段(EXPORTS)中指定的相同。Win32 API函数的输出名可能不同于你在代码中调用的这些函数名,这个不同被宏隐含在相关的SDK头文件中。如果想得到更多信息,请参考Win32函数原型(Win32 Function Prototypes)。 lpProcName参数能够识别DLL中的函数,通过指定一个与函数相联系的序数值(在.DEF中的EXPORTS段)。GetProcAddress函数验证那个指定的序数值是否在输出的序数1和最高序数值之间(在.DEF中)。函数用这个序数值作为索引从函数表中读函数地址,假如.DEF 文件不连续地定义函数的序数值,如从1到N(N是输出的函数序数值),错误将会发生,GetProcAddress将会返回一个错误的、非空的地址,虽然指定的序数没有对应的函数。 为了防止函数不存在,函数应该通过名字指定而不是序数值。 要求: Windows NT/2000: 要求Windows NT 3.1 或以后版本。 Windows 95/98: 要求Windows 95 或以后版本。 头文件: 在Winbase.h中声明,include Windows.h。 库文件: Use Kernel32.lib。 参看: 动态链接库纵览(Dynamic-Link Libraries Overview), 动态链接库函数(Dynamic-Link Library Functions),FreeLibrary, GetModuleHandle, LoadLibrary 示例代码: 调用KERNEL32.DLL中的RegisterServiceProcess(仅在Windows98中适用) HMODULE hModule=GetModuleHandle("kernel32.dll"); if (hModule) { typedef DWORD (CALLBACK *LPFNREGISTER)(DWORD,DWORD); LPFNREGISTER lpfnRegister; lpfnRegister=(LPFNREGISTER)GetProcAddress(hModule,"RegisterServiceProcess"); if (lpfnRegister) { (*lpfnRegister)(NULL,1L); } }

03
领券