-1

我有这个板(0,0 是左上角):

假设一个块是 LABEL_SIZE 高度和宽度。让我们说红点和蓝点是鼠标点击。我有这个板的二维数组,我想访问我用鼠标单击的单元格(蓝点或红点)。所以它看起来像简单的逻辑,只计算 ptCursor.x / LABEL_SIZE 来访问列,而 ptCursor.y / LABEL_SIZE 来访问行。但是当我尝试这个时,它会寻址到另一个单元格(比如几英里之外)。

怎么了?

#define LABEL_SIZE 40
#define XLOCATION  ptCursor.x / LABEL_SIZE
#define YLOCATION  ptCursor.y / LABEL_SIZE

case WM_LBUTTONDOWN:
        ptCursor.x = LOWORD(lParam);
        ptCursor.y = HIWORD(lParam);
        return 0;

case WM_KEYDOWN:
    if (wParam >= VK_NUMPAD0 && wParam <= VK_NUMPAD9)
    {
        wsprintf(szWndText, szFormat, wParam - VK_NUMPAD0);
        SetWindowText(hwndLabels[XLOCATION][YLOCATION],
                      szWndText);
    }
    return 0;
4

1 回答 1

1

阅读: http: //msdn.microsoft.com/en-us/library/windows/desktop/ms645607 (v=vs.85).aspx

它建议您不要使用LOWORDandHIWORD宏来提取光标位置。

如果您的系统有多个显示器,坐标可能是负数,这些宏将无法处理它。相反,使用GET_X_LPARAMGET_Y_LPARAM

于 2013-01-16T22:52:17.873 回答