VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1063|回复: 11

调用循环中DrawText,rc纵坐标也是变的,但为什么总在同一个位置画出来

[复制链接]

1

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
发表于 2020-1-30 21:40:02 | 显示全部楼层 |阅读模式
哪位高人能给我解释下

memDC.SelectObject(&DetailFont);
rc.SetRect(nLeft, yAxis, nRight, yAxis + yPix * 5);
yAxis = yAxis + yPix * 5;
memDC.DrawText((LPCTSTR)csViewTemp, &rc, DT_LEFT | DT_VCENTER | DT_SINGLELINE);

其他循环中是
memDC.SelectObject(&DetailFont);
rc.SetRect(nLeft, yAxis, nRight, yAxis + yPix * 5);
yAxis = yAxis + yPix * 5;
memDC.DrawText((LPCTSTR)csViewTemp.Mid(0, 66), &rc, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
回复

使用道具 举报

1

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-3-8 09:30:01 | 显示全部楼层
而且上下行距离足够

不应该被覆盖

但结果就是没画出来第一个

只能出现第二个画的字符串
回复

使用道具 举报

0

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-3-8 14:30:01 | 显示全部楼层
因为有这样的设置: DT_LEFT | DT_VCENTER | DT_SINGLELINE

所以总在一个位置显示
回复

使用道具 举报

0

主题

17

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-8 16:15:01 | 显示全部楼层
yPix 是从 0 开始循环吗?
代码帖多一点出来
回复

使用道具 举报

1

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-3-8 21:30:02 | 显示全部楼层
yPix是1mm的像素个数


DT_LEFT 是水平从左开始
DT_VCENTER 是纵向居中
DT_SINGLELINE 是显示单行
回复

使用道具 举报

0

主题

17

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-10 12:00:01 | 显示全部楼层
你帖的这段代码是没有错的
我是想看看你循环代码是怎么写的
回复

使用道具 举报

1

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-3-13 03:30:01 | 显示全部楼层
doubleByte = csViewTemp.GetAt(subIndex);
//判断是否是汉字
if(IsDBCSLeadByte(doubleByte) != 0)
{
   if(subIndex == 0)
   {
       subIndex = subIndex + 1;
   }
   else if(subIndex != 65 && subIndex != 66)
{
                                                                subIndex = subIndex + 1;
                                                        }
                                                        else if(subIndex == 66)
                                                        {
                                                                memDC.SelectObject(&DetailFont);
                                                                rc.SetRect(nLeft, yAxis, nRight, yAxis + yPix * 5);
                                                                yAxis = yAxis + yPix * 5;
                                                                memDC.DrawText((LPCTSTR)csViewTemp.Mid(0, 66), &rc, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
                                                                csViewTemp.Delete(0, 66);
                                                                subIndex = 0;
                                                        }
                                                        else
                                                        {
                                                                memDC.SelectObject(&DetailFont);
                                                                rc.SetRect(nLeft, yAxis, nRight, yAxis + yPix * 5);
                                                                yAxis = yAxis + yPix * 5;
                                                                memDC.DrawText((LPCTSTR)csViewTemp.Mid(0, 67), &rc, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
                                                                csViewTemp.Delete(0, 67);
                                                                subIndex = 0;
                                                        }
                                                       
                                                }
                                                else
                                                {
                                                        if(subIndex == 0)
                                                        {
                                                        }
                                                        else if(subIndex == 66)
                                                        {
                                                                memDC.SelectObject(&DetailFont);
                                                                rc.SetRect(nLeft, yAxis, nRight, yAxis + yPix * 5);
                                                                yAxis = yAxis + yPix * 5;
memDC.DrawText((LPCTSTR)csViewTemp.Mid(0, 67), &rc, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
csViewTemp.Delete(0, 67);
subIndex = 0;
                                                        }
                                                }
                                                if(csViewTemp.GetLength() <= 67)
                                                {memDC.SelectObject(&DetailFont);
rc.SetRect(nLeft, yAxis, nRight, yAxis + yPix * 5);
                                                        yAxis = yAxis + yPix * 5;
                                                        memDC.DrawText((LPCTSTR)csViewTemp, &rc, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
                                                        subIndex = csViewTemp.GetLength();
                                                }
回复

使用道具 举报

1

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-3-13 09:15:01 | 显示全部楼层
太多了
格式调起来太费劲

大家凑合着看吧
回复

使用道具 举报

1

主题

8

帖子

7.00

积分

新手上路

Rank: 1

积分
7.00
 楼主| 发表于 2020-3-21 16:30:01 | 显示全部楼层
怎么没有高人相救呢
回复

使用道具 举报

0

主题

17

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-3-23 18:00:01 | 显示全部楼层
晕,还是没见你循环啊?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表