richedit 设置上下边距,不要使用EM_SETMARGINS消息,这个根本不行额
时间: 2024-01-14 17:03:53 浏览: 25
如果 `EM_SETMARGINS` 消息无法满足您的需求,您可以尝试使用以下方法来设置 RichEdit 的上下边距:
1. 使用 `EM_GETRECT` 消息获取 RichEdit 控件的矩形范围。
2. 根据需要调整矩形的上下坐标,以实现上下边距的效果。
3. 使用 `EM_SETRECT` 消息设置调整后的矩形范围。
以下是一个示例代码,用于设置 RichEdit 的上下边距为 10 像素:
```c++
// 获取 RichEdit 的矩形范围
RECT rc;
SendMessage(hRichEdit, EM_GETRECT, 0, (LPARAM)&rc);
// 调整矩形的上下坐标
rc.top += 10;
rc.bottom -= 10;
// 设置调整后的矩形范围
SendMessage(hRichEdit, EM_SETRECT, 0, (LPARAM)&rc);
```
请注意,此方法仅适用于单行编辑的 RichEdit 控件。对于多行编辑的 RichEdit 控件,您可能需要使用其他方法来实现上下边距的效果。
相关问题
RichEdit调整边距
如果你想在RichEdit中调整边距,可以使用EM_SETMARGINS消息。该消息可以设置左、右、上、下四个边距。
下面是一个示例代码,演示如何设置左边距和右边距为100像素:
```
//获取RichEdit控件句柄
HWND hWndRichEdit = GetDlgItem(hDlg, IDC_RICHEDIT);
//设置左边距和右边距
int nMargin = 100;
DWORD dwMargins = MAKELONG(nMargin, nMargin);
SendMessage(hWndRichEdit, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, dwMargins);
```
其中,EC_LEFTMARGIN和EC_RIGHTMARGIN是常量,分别表示左边距和右边距。MAKELONG宏用于将两个整数打包成一个DWORD值,以便作为EM_SETMARGINS消息的参数。
你可以根据需要调整四个边距的值。注意,边距的单位是缇(twips),而不是像素。1缇等于1/20磅,而1磅等于1/72英寸,因此1缇约等于0.0139毫米。如果你想使用像素作为单位,需要将像素值转换为缇。
win32 textbox怎么设置上下边距
Win32的TextBox控件可以通过SendMessage函数发送EM_SETMARGINS消息来设置上下边距。具体步骤如下:
1. 定义一个RECT结构体,设置其中的top和bottom成员变量分别为你想要的上边距和下边距的像素值。
2. 通过SendMessage函数发送EM_GETMARGINS消息获取当前的左右边距。
3. 将获取到的左右边距与设置的上下边距组成一个新的RECT结构体。
4. 通过SendMessage函数发送EM_SETMARGINS消息并将新的RECT结构体作为参数,即可设置上下边距。
以下是示例代码:
```c++
// 定义一个RECT结构体
RECT marginRect = {0, 10, 0, 20};
// 获取当前的左右边距
DWORD margins = SendMessage(hwndTextBox, EM_GETMARGINS, 0, 0);
// 将左右边距与上下边距组成一个新的RECT结构体
RECT newMarginsRect = {LOWORD(margins), HIWORD(margins), marginRect.left, marginRect.bottom};
// 设置上下边距
SendMessage(hwndTextBox, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN | EC_USEFONTINFO, (LPARAM)&newMarginsRect);
```
其中,hwndTextBox是指向TextBox控件的句柄。