我正在尝试在列表视图中添加show my structure。 TCHAR
字段显示正常,但对于数字,它显示错误的空矩形或中文符号。调试器在转换后显示正确的字符串。
这是我的结构:
typedef struct {
unsigned phone_number, house, appartment;
TCHAR Name[30], Street[15], date[11];
} PHONE_DATA;
我正在使用LVN_GETDISPINFO
回调初始化项目和子项目。
TCHAR wStr[16];
//other code
switch (((LPNMHDR) lParam)->code)
{
case LVN_GETDISPINFO:
plvdi = (NMLVDISPINFO*)lParam;
entry = Get(&list, plvdi->item.iItem);
switch (plvdi->item.iSubItem)
{
case 0:
plvdi->item.pszText = entry->data.Name;
break;
case 1:
_itow(entry->data.phone_number, wStr, 10);
plvdi->item.pszText = wStr;
break;
case 2:
plvdi->item.pszText = entry->data.Street;
break;
case 3:
_itow(entry->data.house, wStr, 10);
plvdi->item.pszText = wStr;
break;
case 4:
_itow(entry->data.appartment, wStr, 10);
plvdi->item.pszText = wStr;
break;
case 5:
plvdi->item.pszText = entry->data.date;
break;
default:
break;
}
break;
}
它在我的listview中看起来如何:
我用于编辑表单的相同转换,在正确显示的文本框中。
答案 0 :(得分:1)
如果在函数处理TCHAR wStr[16];
中定义了WM_NOTIFY
,那么当函数返回时它将无效。将其更改为全局变量或将其设为static
,它将解决问题。
请注意,当您收到LVN_GETDISPINFO
通知时,控件会为您提供一个可以使用的缓冲区,因此您可以更改代码来执行此操作:
case 4:
_itow_s(entry->data.appartment, plvdi->item.pszText, plvdi->item.cchTextMax, 10);
break;