有没有办法在mfc应用程序中获取光标位置?

时间:2012-12-12 17:04:46

标签: visual-c++ mfc

我正在使用OnKeyDown处理程序检测Enter键是否按下:

void CShortestPathFinderView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
  if( nChar == VK_RETURN)    //Enter key is pressed
{
    CClientDC aDC(this);
    rubberbanding = 0;
            m_pTempElement->vertices[i++]=  /*cursor position??*/;
    mSecondPoint=m_pTempElement->vertices[0];
    m_pTempElement->Draw(&aDC);
}

在if语句的第3行我需要将光标位置存储在数组中,但是如何获取该点呢?处理程序是否为我提供了它?或者是否有单独的功能?

1 个答案:

答案 0 :(得分:1)

要获取当前光标位置,您可以调用GetCursorPos。我不相信MFC为此提供了一个包装器,所以它只是Win32 ::GetCursorPos。它返回屏幕坐标中的点,因此您(几乎可以肯定)希望在存储之前使用ScreenToClient将其转换为客户区坐标。

但请注意,GetCursorPos会在您调用时返回光标的位置。这可能与按下按键时光标所处的位置完全相同(尽管 通常至少非常接近)。

通常,要添加这样的光标位置,您需要对用户点击鼠标按钮做出反应(例如WM_LBUTTONDOWN)。该消息将告诉您单击按钮时鼠标的位置。