lnhv013710 2019-06-01 00:03 采纳率: 96.7%
浏览 675
已采纳

VS2010 MFC 对话框程序中的控件IDC_STATIC_DRAW1(Picture Control)图层问题

请教各位,手动在对话框程序窗口中手动添加的控件,如何将控件图形放在最底,这样能够不遮挡我的绘图!!
我的绘图代码如下:

        /////////////////////外框
        CPen penFrm(PS_SOLID, 1, RGB(0,0,0));
        pDC->SelectObject(&penFrm);
        pDC->MoveTo(nDrawStartX,nDrawStartY);
        pDC->LineTo(nDrawStartX+nWidth,nDrawStartY);//上边

        pDC->MoveTo(nDrawStartX+nWidth,nDrawStartY);
        pDC->LineTo(nDrawStartX+nWidth,nDrawStartY+nHeight);//右边

        pDC->MoveTo(nDrawStartX+nWidth,nDrawStartY+nHeight);
        pDC->LineTo(nDrawStartX,nDrawStartY+nHeight);//下边

        pDC->MoveTo(nDrawStartX,nDrawStartY);
        pDC->LineTo(nDrawStartX,nDrawStartY+nHeight);//左边

我想要绘图在图片控件的上面,可视,现在是被图片框挡住的。
试过按下ctrl +D 改变图层,但是不好使。
现在我是 把图片控件隐藏了,只用来定位,然后绘制另外一个白底的框。
/////////////////////////////////////////////////////////////////////
下面运行报错,怎么才能在onpaint内把它传给绘图函数DrawArc()

void CMyCKTXDlg::DrawArc(CDC *pDC);

void CMyCKTXDlg::OnPaint()
{
       //if (GetDlgItem(IDC_STATIC_DRAW)->GetSafeHwnd () != NULL)
        //if (GetDlgItem(IDC_STATIC_DRAW)->GetSafeHwnd () != NULL)
    //{
//return;
    //}
        CWnd *pWnd = GetDlgItem(IDC_STATIC_DRAW);
        CDC *pDC;
        pDC = pWnd->GetDC();
    //CPaintDC pDC(pDC); // device context for painting

    DrawArc(pDC);//(&dc);
    //Invalidate();

    return;

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-06-01 10:06
    关注

    每个窗口(这里说的窗口是广义的窗口,包括static、button等各种控件)拥有独立的dc和遮挡的关系,而你绘图,只能在dc上绘图。

    窗口好比纸张,你拥有好几张纸张叠放在一起,你最底下那张纸就是主窗口,你在上面无论怎么画图,都画不到上面叠放的控件的纸上去。明白这个意思么?

    变通的办法有,(1)在上面的那张纸上也画出被它遮挡的部分,好像是下面的透过来了。
    (2)让上面那张纸透明
    https://blog.csdn.net/abidepan/article/details/7949759
    (3)不要上面那张纸,也就是不要控件了,直接都自己画,按钮自己画出来,通过坐标和鼠标消息判断点击了"虚拟的按钮"。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3