私はこのボードを持っています(0,0は左上です):
ブロックの高さと幅が LABEL_SIZE であるとしましょう。赤と青のドットがマウスクリックだとしましょう。このボードには 2 次元配列があり、マウスでクリックしたセル (青または赤の点) にアクセスしたいと考えています。そのため、列にアクセスするために 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;