RichTextbox控件如何根据自身宽、高,以及用户设定的字体、字号和行距,计算1屏有几行?1行有几列?
看到吹版的这段代码,联想到以前我遇到的那个问题(一直都未能精确地解决):
DECLARE long SendMessageW IN user32 as SendMessageW2 long,long,long,string@ DECLARE long SetWindowTextW IN user32 as SetWindowTextW2 long,string #define EM_GETLINE 0x00C4 nBufferSize = 2048 && 要足够大 cBuffer = BINTOC(nBufferSize,"4rs")+REPLICATE(0h00,nBufferSize+1) hEdit = thisform.hEdit1.hwnd &&编辑框句柄 nLineNo = 9 &&要取的行号(通常是从0行起) nWordCount = SendMessageW2(hEdit, EM_GETLINE, nLineNo, @cBuffer) SetWindowTextW2(hEdit, cBuffer) && 显示结果
如标题所示:如何计算RichTextbox一屏可完整显示的行数?以及,一列能显示的字符个数?
原因:希望在不出现垂直滚动条的前提下,能够一屏显示完整内容,让用户不必频繁地上下翻滚(注:表单另外设计有翻页按钮)。
问DC,它给出的解答异常复杂,远非类似一个SendMessageW2(hEdit, EM_GETLINE, nLineNo, @cBuffer)就能解决得了的。
想想也是,“宋体,12,N”和“微软雅黑, 16, B”,同一屏能够完整显示的字符行数与列数,结果相差非常大的!