日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BCB中获得RichEdit 默认行间距

發布時間:2025/7/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BCB中获得RichEdit 默认行间距 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先,這些功能支持RichEdit2.0 以上功能;

其次,用常規的方法是無法獲得LineSpace 的;

  • 你使用 EM_GETPARAFORMAT也得不到,你會發現dyLineSpacing 的值永遠是0
  • 你先EM_SETPARAFORMAT ,指定 bLineSpacingRule = 4,再用GETPARAFORMAT 去取dyLineSpacing 同樣是0

也許RichEdit的作者有辦法。

https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/f67f6416-eab3-4aee-bfcc-85b9f26fde39/rich-edit-control-line-height

下面是richedit 作者的blog

https://blogs.msdn.microsoft.com/murrays/2010/01/12/richedit-versions-1-0-through-3-0/#comment-12105

下面是我的解決辦法。

我發現了一個規律,當用EM_SETPARAFORMAT ,改變行間距的時候。整體文本區域的高度也改變了。

?

代碼如下

//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop#include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1;static int LineSpace = 400; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) { } //---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender) {RichEdit1->SelectAll();PARAFORMAT2 Para;Para.cbSize = sizeof(Para);Para.dwMask = PFM_LINESPACING;Para.bLineSpacingRule = 4;Para.dyLineSpacing = LineSpace;SendMessage(RichEdit1->Handle, EM_SETPARAFORMAT, 0, LPARAM(&Para)); } //---------------------------------------------------------------------------

由此我們得到啟發,如果我們1開始,制定LinSpace 是1,然后逐漸累加。

當,文本區域的高度和默認文本高度相同時,是不是就得到,LineSpace 對應的值了呢?

問題1,如何得到文本區域的高度?? 看我的另一個博客 http://www.cnblogs.com/songr/p/5485187.html

問題2,計算,這個超級簡單;

下面是實現代碼

//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop#include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1;static int LineSpace = 400; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner) { } //---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender) {RichEdit1->SelectAll();PARAFORMAT2 Para;Para.cbSize = sizeof(Para);Para.dwMask = PFM_LINESPACING;Para.bLineSpacingRule = 4;Para.dyLineSpacing = LineSpace;SendMessage(RichEdit1->Handle, EM_SETPARAFORMAT, 0, LPARAM(&Para)); } //---------------------------------------------------------------------------int TForm1::getTextAreaHeight() {RichEdit1->Text = RichEdit1->Text.TrimRight();int LogX,LogY;HDC richdc = GetDC(RichEdit1->Handle);LogX = GetDeviceCaps(richdc, LOGPIXELSX);LogY = GetDeviceCaps(richdc, LOGPIXELSY);FORMATRANGE formatrange = {0};formatrange.hdc = richdc;formatrange.hdcTarget = richdc;formatrange.rc.left = 0;formatrange.rc.top = 0;formatrange.rc.right = RichEdit1->ClientWidth * 1440 / LogX;formatrange.rc.bottom= Screen->Height* 1440 / LogY;formatrange.rcPage = formatrange.rc;formatrange.chrg.cpMin = 0;formatrange.chrg.cpMax = -1;RichEdit1->Perform(EM_FORMATRANGE,0,(long)&formatrange);int totalHeight = formatrange.rc.bottom * LogY / 1440;RichEdit1->Perform(EM_FORMATRANGE,0,NULL);ReleaseDC(RichEdit1->Handle,richdc);return totalHeight; }void __fastcall TForm1::Button2Click(TObject *Sender) { //首先將RichEdit 設置成默認Single spacingRichEdit1->SelectAll();PARAFORMAT2 Para;Para.cbSize = sizeof(Para);Para.dwMask = PFM_LINESPACING;Para.bLineSpacingRule = 0;SendMessage(RichEdit1->Handle, EM_SETPARAFORMAT, 0, LPARAM(&Para)); //得到默認情況下的文本區域高度int defTextAreaHeight = getTextAreaHeight();int i = 0;do{ //不停的改變行間距,直到文本區域高度和默認情況下相同i++;PARAFORMAT2 Para;Para.cbSize = sizeof(Para);Para.dwMask = PFM_LINESPACING;Para.bLineSpacingRule = 4;Para.dyLineSpacing = i;SendMessage(RichEdit1->Handle, EM_SETPARAFORMAT, 0, LPARAM(&Para));}while (defTextAreaHeight != getTextAreaHeight());ShowMessage(IntToStr(i)); } //---------------------------------------------------------------------------

?

說明,當累加到 278 的時候,文本區域的高度相同了。也就是說,278 是,默認行高的基準線。

有了這個基準線之后。我就可以用這個278 作為,我們計算行高的基礎值了。(例如,減少行高時,不能小于這個值。)

?

轉載于:https://www.cnblogs.com/songr/p/5633234.html

總結

以上是生活随笔為你收集整理的BCB中获得RichEdit 默认行间距的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美被狂躁喷白浆精品 | 久久一区二区三区视频 | 综合久久久久久久久久久 | 成人v片 | 天天操网站 | 久久久久久综合网 | 国产 中文 字幕 日韩 在线 | 精品久久一区二区三区 | 中文字幕 日韩有码 | 久久久www免费人成人片 | 亚洲va在线观看 | 日韩经典一区 | 巨胸爆乳美女露双奶头挤奶 | 91黄色国产 | 极品少妇一区二区三区 | 天天干天天插天天射 | 九七人人爽 | 国产性70yerg老太 | 日本精品免费一区二区三区 | 日本专区在线 | 特色黄色片| 日韩黄片一区二区三区 | 国产淫语 | 欧美在线一区二区三区 | 男插女视频免费 | 影音先锋激情在线 | 人妻少妇久久中文字幕 | 青草伊人网 | 中文字幕一区二区三区手机版 | 爆操少妇 | 四虎首页 | 9色视频| 天堂中文在线播放 | 禁断介护av一区二区 | 国产无遮挡aaa片爽爽 | 国语对白少妇spa私密按摩 | 朴银狐电影中文在线看 | 久久久123 | 日韩人妻精品一区二区三区视频 | 国产美女精品久久久 | 久久在线视频免费观看 | 亚洲五月婷 | 亚洲小视频网站 | 日本特黄色片 | 国产日韩一区二区三免费高清 | 欧美一级二级三级视频 | 粉嫩aⅴ一区二区三区四区五区 | 337p嫩模大胆色肉噜噜噜 | 亚久久 | 一区二视频 | zoo性欧美| 日本黄色大片免费 | 成人国产毛片 | 国产欧美一区二区精品久久久 | 黄页网站在线 | 伊人网在线观看 | 国产传媒第一页 | 亚洲91av| 丝袜一级片 | 亚洲人网 | 国产伦乱视频 | 欧美一二三区视频 | 国产一区二区三区小说 | 男人的天堂影院 | 久操视频在线观看免费 | 午夜在线观看免费视频 | 国产精品视频999 | 香蕉视频黄色片 | 高潮无码精品色欲av午夜福利 | 18av视频| 中文字幕女同 | 少妇毛片一区二区三区粉嫩av | 中文字幕乱码在线 | 在线不卡一区二区 | 麻豆精品国产精华精华液好用吗 | 欧美性黄色 | 国产女人和拘做受视频免费 | 黄色免费网 | 制服 丝袜 综合 日韩 欧美 | 熟妇人妻精品一区二区三区视频 | 九九热精品 | 五十路六十路 | 成人另类小说 | 国产精品无码内射 | 日本少妇18p | 久久bb| 天天躁日日躁狠狠很躁 | 97超碰国产精品无码蜜芽 | 嫩草天堂 | 欧美极品一区二区三区 | 91视频成人 | 在线男人天堂 | 国产极品美女高潮无套在线观看 | 粉嫩av国产一区二区三区 | 欧美精品少妇 | 四虎永久在线精品免费一区二区 | 鬼眼| 麻豆亚洲精品 | 国产精品无码av在线有声小说 |