0

我有代码

    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

但它告诉我“系统”找不到或不是真实的。

有没有一种简单的方法给定坐标来绘制一个矩形?

4

2 回答 2

2

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

于 2013-04-24T16:01:27.197 回答
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 );

如果看不到矩形,请尝试将其缩小一点,使其不与对话框的边框重叠。

于 2013-04-24T16:29:06.730 回答