在控件C ++ MFC周围绘制一个矩形

时间:2013-04-24 15:35:59

标签: mfc dialog controls

我有代码

    HWND hWndTmp = pDX->m_pDlgWnd->GetSafeHwnd();
    hWndTmp = GetDlgItem(hWndTmp, pDX->m_idLastControl);
    CWnd *wnd;
    wnd = wnd->FromHandle(hWndTmp);
    RECT wndRect;
    wnd->GetWindowRect(&wndRect);

这给了我围绕pDX中描述的控件的矩形。

我想做的是在控件周围画一个矩形几次,以吸引用户的目光。我已经搜索了一段时间我是如何做到的,但似乎没有什么对我来说真的有效。

我试过这个http://msdn.microsoft.com/en-us/library/sx8yykw8.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1

但是它告诉我“系统”会被发现或者不是真的。

给定坐标绘制矩形是否有一种简单的方法?

2 个答案:

答案 0 :(得分:2)

最好获取控件的屏幕矩形并将其转换为Dialog的客户端,并覆盖对话框的OnPaint,然后在那里绘制矩形(略微膨胀)。这意味着你肯定会看到它,而不是干扰控制本身的绘画。

答案 1 :(得分:0)

如果可以,请使用Moo-Juice的解决方案。它更好地区分了问题,恕我直言。但如果您需要快速修复,请尝试使用

CClientDC drawingContext( pDX );
RECT wndRect;
wnd->GetWindowRect(&wndRect);
//Shrink wndRect before if needed
CPoint rectPoints[5];
rectPoints[0] = CPoint( wndRect.left, wndRect.top );
rectPoints[1] = CPoint( wndRect.right, wndRect.top );
rectPoints[2] = CPoint( wndRect.right, wndRect.bottom );
rectPoints[3] = CPoint( wndRect.left, wndRect.bottom );
rectPoints[4] = rectPoints[0];
CPen* oldPen = drawingContext.SelectStockObject(RED_PEN);
drawingContext.Polyline(rectPoints, 5);
drawingContext.SelectObject( oldPen );

如果你没有看到矩形,请尝试缩小它,使其不与对话框的边框重叠。