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 に答える