本帖最后由 小白龙 于 2023-4-5 20:13 编辑
回复 5# jyswjjgdwtdtj
最上面的语句, 我理解起来确实有点难度, 现在还是看不懂
求路过大佬, 分解一下
完整代码如下:
它主要的作用是控制一些文本编辑器左侧的 行号栏 的宽度, 例如 只有1行文本时, 就是1个数字的宽度, 当有大于9行文本时, 就是两个数字的宽度, 当有大于99行文本时, 就是3个数字的宽度,以此类推
效果如下图
- void UpdateLineNumberWidth(void)
- {
- //start 显示行号
- long iLineMarginWidthNow;
- long iLineMarginWidthFit;
- long iLineNum = SendMessage( SCI_GETLINECOUNT, 0, 0 );
- long iLineNumCount = 1;
- while( iLineNum != 0 )
- {
- ++iLineNumCount;
- iLineNum /= 10;
- }
- iLineMarginWidthNow = SendMessage( SCI_GETMARGINWIDTHN, 0, 0 );
- long charWidth = SendMessage( SCI_TEXTWIDTH, STYLE_LINENUMBER, (LPARAM)("9") );
- iLineMarginWidthFit = charWidth * iLineNumCount;
- if ( iLineMarginWidthNow != iLineMarginWidthFit )
- {
- SendMessage( SCI_SETMARGINWIDTHN, 0, iLineMarginWidthFit );
- }
- //end of 显示行号
- }
复制代码
|