高手解答:关于RICHEDIT的两个问题
问题1:RichEditCtrl在用DDX进行数据交换的时候会发生数据丢失问题?为什么!当我们在拖了一个控件到程序里后,通常的做发是Ctrl+W,用类向导给控件关联一个变量,然后依靠DDX/DDV进行数据交换,如果我们用同样的方法来给RICHEDIT关联一个CString类型的变量就会存在一个问题,就是如果我们的数据大于了64K,数据就会丢失。
1C.w)amHR
通过查MSDN发现,WM_GETTEXT消息并没有设计在RICHEDIT的数据大于64K的时候怎样处理。而类向导生成的代码是用DDX_Text来交换控件和CString变量的数据。恰好,DDX_Text函数是调用GetWindowText函数,而这个函数又会发出WM_GETTEXT消息到控件来返回控件里的数据。WM_GETTEXT消息不能接受超过64K的数据,因此导致了RICHEDIT在数据交换的时候发生了丢失。f&YG[V)q
(c @ \-bu8Lu@-HZ O r
为了解决这个问题,我们要用到DDX_RichText函数。添加下面两个函数到工程|I@8__}
L5v xLJN\#i7b
以下是引用片段: