RECT rect(0,0,800,480);DC.DrawText(m_STr, rect, DT_WORDBREAK) m_STr 是一段很长的文字,超过了rect的边界。如何使它能像CEdit 那样有滚动条的效果?这样可以上下移动,看见全部内容. (或有其它什么方法可以间接实现,CEdit 显示效果不好)

解决方案 »

  1.   

    响应WM_HSCROLL, WM_VSCRLL事件。自己实现滚动条。
    将窗体内容写进内存DC中,根据滚动条的位置,将内存DC中的内容拷贝至窗体DC中。
    或者在窗体中创建一个EDIT子窗体,根据滚动条的位置移动子窗体。
      

  2.   

    设个定时器 每秒从绘一次CEDIT?
      

  3.   

    响应WM_HSCROLL, WM_VSCRLL事件。自己实现滚动条。
    将窗体内容写进内存DC中,根据滚动条的位置,将内存DC中的内容拷贝至窗体DC中。
    或者在窗体中创建一个EDIT子窗体,根据滚动条的位置移动子窗体。
      

  4.   

    搂住还是用Rich Edit控件吧,自己写很麻烦的
      

  5.   

    1.用RichEdit控件,这样更方便,但这个控件也有缺点的。
    2.响应响应WM_HSCROLL, WM_VSCRLL,和选中多行,就可以了,但这个外观不好。你字数少,滚动条也在。
    不行就用它系统的事件自己写。
      

  6.   

         CDC *DC = GetDC();
         RECT rect(0,0,800,480); 
         DC.DrawText(m_STr, -1, rect, DT_WORDBREAK) 
         ReleaseDC(DC);     翻页时(自已的按钮处理),不好处理,底部有些字符会显示不全或出了区域不显示.