在对话框的picture control里画一条直线,但是画不出来,是什么原因呢
void CPicDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CDialog::OnPaint()
CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
    CRect rect1;
    pStatic->GetWindowRect(&rect1);
    pStatic->ScreenToClient(&rect1);
    CDC *pDC=pStatic->GetDC(); CMainFrame* pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
CbView* pView=(CbView*)pMain->GetActiveView();
    pDC->MoveTo(rect1.left,rect1.top);
     pDC->LineTo(pView->A[1],pView->A[1]);
// TODO: 在此处为本机数据添加绘制代码
}lineto()里面的数是view里的,可能是这里错了,为什么呢?

解决方案 »

  1.   

    CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
    这句就有问题。如果你希望在标签控件上做些操作,那么你必须将该控件的ID号进行修改。默认所有标签控件的ID都是IDC_STATIC,值为1.所以你这个GetDlgItem返回的标签还不知道返回哪一个呢。给这个picture控件重新命名一个ID号先。
      

  2.   


    改了那个ID号还是没划线。要是把划线的改成pDC->LineTo(100,100);就可以划线。但是用view里的参数pDC->LineTo(pView->A[1],pView->A[1]);这样就不行,画不出来,为什么呢
      

  3.   

    将pView->A[1]打印出来 看值
      

  4.   

    pView->A[1]的值是什么情况的话会画不出来线呢?
      

  5.   

    首先LineTo是GDI函数
    和view不view的没关系
    然后你可以看看这个会不会对你有帮助
    http://blog.csdn.net/xianglitian/archive/2010/12/27/6100767.aspx
      

  6.   

    当A[1]的值不在当前客户区范围时,就看不见了,不一定是没有画。
    [/Quote]A[1]是在客户区以内的
      

  7.   

    你说说A[1]到底是多少啊?脑袋都大了
    就算在视图范围内,那一定在你需要显示的picture控件范围内码?????
      

  8.   

    picture转变成用户坐标后区域是300,320
    而A[1]是比300大的数,照理说应该肯定能划线啊
      

  9.   

    CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
    pStatic->InvalidateRect(0,TRUE);
    pStatic->UpdateWindow();
    然后你画
      

  10.   

    呵呵,谢谢大家了,是a[1]的问题,pView->a[1]没有取到a[1]值,变成一个很大的数6.12e.0066,就画不出来了