2013-01-16 154 views
-1

索引I有此板(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; 
+1

你確定你不想'hwndLabels [YLOCATION] [XLOCATION]'?通常情況下,C中的2D數組是主要行,因此您首先需要y索引。 –

+0

很難看到您正在查找的鍵盤事件和鼠標事件之間的連接。當用戶從不移動鼠標並按下某個鍵時,您會發生什麼? –

+1

請定義「英里之外」。它是一個有效的單元,還是一個巨大的數字? – paddy

回答