问题1:RichEditCtrl在用DDX进行数据交换的时候会发生数据丢失问题?为什么! 当我们在拖了一个控件到程序里后,通常的做发是Ctrl+W,用类向导给控件关联一个变量,然后依靠DDX/DDV进行数据交换,假如我们用同样的方法来给RICHEDIT关联一个CString类型的变量就会存在一个问题,就是假如我们的数据大于了64K,数据就会丢失。 通过查MSDN发现,WM_GETTEXT消息并没有设计在RICHEDIT的数据大于64K的时候怎样处理。而类向导生成的代码是用DDX_Text来交换控件和CString变量的数据。恰好,DDX_Text函数是调用GetWindowText函数,而这个函数又会发出WM_GETTEXT消息到控件来返回控件里的数据。WM_GETTEXT消息不能接受超过64K的数据,因此导致了RICHEDIT在数据交换的时候发生了丢失。 为了解决这个问题,我们要用到DDX_RichText函数。添加下面两个函数到工程以下是引用片段:
DWord CALLBACK ES2MemCallBack(DWORD_PTR dwCookie,LPBYTE pbBuff, LONG cb, LONG *pcb)
{
LPTSTR& lps...[ 查看全文 ]