高手帮帮忙啊小弟我从Windows派生的Edit怎么正确显示文字
高手帮帮忙啊,我从Windows派生的Edit如何正确显示文字
由于我直接往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会造成屏幕闪烁,而且背景颜色和文字颜色也不对。
我只是需要自动换行这个功能,请问高手该怎么解决。
------解决方案--------------------
如果ES_MULTILINE | ES_WANTRETURN 风格达不到你的要求,准备自绘的话,要你自己计算长度,然后选择位置输出文字
由于我直接往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会造成屏幕闪烁,而且背景颜色和文字颜色也不对。
我只是需要自动换行这个功能,请问高手该怎么解决。
------解决方案--------------------
如果ES_MULTILINE | ES_WANTRETURN 风格达不到你的要求,准备自绘的话,要你自己计算长度,然后选择位置输出文字