请教各位,手动在对话框程序窗口中手动添加的控件,如何将控件图形放在最底,这样能够不遮挡我的绘图!!
我的绘图代码如下:
/////////////////////外框
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;
每个窗口(这里说的窗口是广义的窗口,包括static、button等各种控件)拥有独立的dc和遮挡的关系,而你绘图,只能在dc上绘图。
窗口好比纸张,你拥有好几张纸张叠放在一起,你最底下那张纸就是主窗口,你在上面无论怎么画图,都画不到上面叠放的控件的纸上去。明白这个意思么?
变通的办法有,(1)在上面的那张纸上也画出被它遮挡的部分,好像是下面的透过来了。
(2)让上面那张纸透明
https://blog.csdn.net/abidepan/article/details/7949759
(3)不要上面那张纸,也就是不要控件了,直接都自己画,按钮自己画出来,通过坐标和鼠标消息判断点击了"虚拟的按钮"。