c++ richedit从下往上换行
要实现C++ RichEdit控件从下往上换行,可以通过设置RichEdit的样式来实现。下面是一个示例代码:
#include <windows.h>
#include <richedit.h>
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
static HWND hRichEdit;
switch (msg)
{
case WM_CREATE:
{
// 创建RichEdit控件
hRichEdit = CreateWindowEx(WS_EX_CLIENTEDGE, RICHEDIT_CLASS, NULL, WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY,
0, 0, 400, 400, hwnd, NULL, GetModuleHandle(NULL), NULL);
// 设置RichEdit的样式,使其从下往上换行
DWORD dwStyle = GetWindowLong(hRichEdit, GWL_STYLE);
dwStyle &= ~ES_AUTOVSCROLL; // 禁用自动垂直滚动
dwStyle |= ES_MULTILINE | ES_AUTOHSCROLL | ES_DISABLENOSCROLL | ES_VERTICAL; // 设置为多行、自动水平滚动、禁用上下滚动条、垂直文本显示
SetWindowLong(hRichEdit, GWL_STYLE, dwStyle);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASSEX wc = {0};
wc.cbSize = sizeof(WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.hInstance = hInstance;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wc.lpszClassName = "MyClass";
if (!RegisterClassEx(&wc))
{
MessageBox(NULL, "窗口注册失败!", "错误", MB_OK | MB_ICONERROR);
return 0;
}
HWND hwnd = CreateWindowEx(0, "MyClass", "C++ RichEdit从下往上换行", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 500, 500, NULL, NULL, hInstance, NULL);
if (!hwnd)
{
MessageBox(NULL, "窗口创建失败!", "错误", MB_OK | MB_ICONERROR);
return 0;
}
ShowWindow(hwnd, nCmdShow);
UpdateWindow(hwnd);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
在上述代码中,创建了一个带有RichEdit控件的窗口,通过设置RichEdit的样式,禁用了自动垂直滚动条,并设置了多行、自动水平滚动、禁用上下滚动条、垂直文本显示的样式,从而实现了从下往上换行的效果
原文地址: https://www.cveoy.top/t/topic/iJpm 著作权归作者所有。请勿转载和采集!