SendMessage (hwnd, WM_LBUTTONDOWN, MK_LBUTTON,MAKELONG (x * cxBlock, y * cyBlock))
看到windows程序设计鼠标那章。
这句话的意思书上是这样讲的。使用SendMessage把WM_LBUTTONDOWN讯息发送给它自身?
我想问的是不是调用下面的wm_lkbuttondown???
case WM_LBUTTONDOWN :  
x = LOWORD (lParam) / cxBlock ;
y = HIWORD (lParam) / cyBlock ;
          
if (x < DIVISIONS && y < DIVISIONS)
           {
                fState[x][y] ^= 1 ;
               
                rect.left     = x * cxBlock ;
                rect.top      = y * cyBlock ;
                rect.right    = (x + 1) * cxBlock ;
                rect.bottom   = (y + 1) * cyBlock ;
               
                InvalidateRect (hwnd, &rect, FALSE) ;
          }
           else
                MessageBeep (0) ;
           return 0 ;还有MAKELONG (x * cxBlock, y * cyBlock)这个函数是什么意思???

解决方案 »

  1.   

    MAKELONG就是把两个数合成一个,一个放在高位,一个在低位
      

  2.   

    LRESULT SendMessage(
      HWND hWnd,      // handle to destination window
      UINT Msg,       // message
      WPARAM wParam,  // first message parameter
      LPARAM lParam   // second message parameter
    );
    这个是把消息发送给句柄hWnd对应的窗口,你列举的就是这种情况LRESULT CWnd::SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );这个才是把消息发送给自身,注意,这个相比上面少了HWND hWnd这个参数。
      

  3.   

    SendMessage (hwnd, WM_LBUTTONDOWN, MK_LBUTTON,MAKELONG (x * cxBlock, y * cyBlock));
    发给窗口句柄为hwnd的 窗口