TB_GETBUTTONTEXT的文档表示处理程序必须返回字符数,并且可以选择(如果lParam不为空)将字符串复制到提供的缓冲区中。需要注意的是长度不包括终止字符。我看到以下问题。假设处理程序存储预先计算的字符串(因此它的长度不会改变)。首先,调用者发送消息并将lParam设置为null-以查找字符数-处理程序返回字符数而不以null结尾。然后调用者分配内存并再次发送消息-这次将缓冲区地址作为lParam传递。处理程序是否应该复制终止空值?我的意思是,如果处理程序第一次返回N并且调用者为N字符分配了空间并且处理程序附加了一个终止空值,那么就会发生缓冲区溢出。但是,如果调用者确实希望字