MFC中,对话框模式,通过EDIT控件输入x,y位置,使用dc.textout在相应位置,输出字符没有显示。代码如下

voidCPoint_interfaceDlg::OnPaint(){if(IsIconic()){CPaintDCdc(this);//devicecontextfor... void CPoint_interfaceDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CPaintDC dc(this);
dc.SetTextColor(RGB(255,255,255));//描点颜色为黑色
dc.SetBkMode(TRANSPARENT);//背景设置为透明
CRect rect;//矩形类声明
rect.left=30;//矩形左宽度
rect.right=450;
rect.top=15;
rect.bottom=185;
dc.Rectangle(&rect);//矩形指向rect变量
dc.FillRect(&rect,&m_brush);//用brush1格式刷
UpdateData(TRUE);

if((x!=NULL)&&(y!=NULL))
{
UpdateWindow();
dc.TextOut(9,9,"ff");//字符水平(Widtix)输出
dc.LineTo(x,y);//这两行没有在对话框中显示!!!!!!!!!!!!!
}
}
}
其中,x,y为横纵坐标位置,Debug时,数据正常传入,但dc.textout函数和dc.lineto函数貌似都没有执行。求指教!!!!!!
展开
 我来答
bhtzu
2013-03-13 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4211万
展开全部
dc.Rectangle(&rect);//矩形指向rect变量
dc.FillRect(&rect,&m_brush);//用brush1格式刷

// if((x!=NULL)&&(y!=NULL))
// {
dc.TextOut(9,9,"ff");//字符水平(Widtix)输出
dc.MoveTo(rect.TopLeft());
dc.LineTo(x,y);//这两行没有在对话框中显示!!!!!!!!!!!!!
// }
//UpdateWindow();去掉,不应该在OnPaint中这样做
//UpdateData(TRUE);

另外,自己注意,x和y在else条件下应该在进入刷新之前updatedata,而且NULL的判断并不适合数值型变量
追问
dc.MoveTo(rect.TopLeft());添加这一行也没用,调试的时候其实由edit控件输入的数据是接收到了,而且if语句也通过了,但是画线函数和字符输出的两个命令貌似没有执行
追答
你原来的肯定不执行。updatewindow不能这么调用。
另外注意画笔颜色,不过我觉得这不是关键。
可以尝试注销前面的矩形填充代码看看。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式