我有代码
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
但是它告诉我“系统”会被发现或者不是真的。
给定坐标绘制矩形是否有一种简单的方法?
答案 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 );
如果你没有看到矩形,请尝试缩小它,使其不与对话框的边框重叠。