由于我直接往DC上打印文字会使英文单词换行不合理,所以我需要使用windows Edit控件的自动换行功能。我使用::CreateWindow(_T("EDIT"),...)创建一个标准的Edit,注册类窗口如下: WNDCLASS wc; wc.style         = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc   = (WNDPROC)EditProc;
wc.cbClsExtra    = 0;
wc.cbWndExtra    = 0;
wc.hInstance     = GetInstance();
wc.hIcon         = NULL;
wc.hCursor       = 0;
wc.hbrBackground = (HBRUSH)::CreateSolidBrush(RGB(50, 50, 50));
wc.lpszMenuName  = 0;
wc.lpszClassName = _T("EDIT"); ::RegisterClass(&wc); EditProc 全部使用WINDOWS默认处理所有消息,背景画出来了但是::SetWindowText()所设置的文字无法显示。
如果我不注册窗口类,而是使用父窗口的消息处理函数。那文字可以显示出来,但是WM_ERASEBKGND会造成屏幕闪烁,而且背景颜色和文字颜色也不对。我只是需要自动换行这个功能,请问高手该怎么解决。

解决方案 »

  1.   

    处理WM_PAINT,先调用系统默认过程,然后再TextOut试试看
      

  2.   

    刚试了一下,::GetWindowText()可以得到文本内容,说明文本已经传进去了。我用::ExtTextOut()可以画出来的,但还是不能换行。
      

  3.   

    如果ES_MULTILINE | ES_WANTRETURN 风格达不到你的要求,准备自绘的话,要你自己计算长度,然后选择位置输出文字