3

我正在使用 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 行中,我需要将光标位置存储在数组中,但是如何获取该点?处理程序是否提供给我?还是有一个单独的功能可以这样做?

4

1 回答 1

1

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

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

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

于 2012-12-12T17:17:41.817 回答