有没有玩过扫雷游戏啊!小弟最近在做一个扫雷游戏,其他问题都解决了,还剩余一个问题,是关于鼠标动作问题:单击左键按下不放,这时会有一个小方块陷下(这时移动鼠标,小方块也会跟着移动);左键松开即翻开显示一个数字;右键按下立即显示标记符号;右键松开没有任何反应;同时按下左右两键,会出现一个大的扫雷区。应该是这样的吧!
现在的问题是:怎样独立判别鼠标左键、右键和两键同时按下(松开),请各位高手帮帮小弟,小弟先谢了!!!

解决方案 »

  1.   

    好象鼠标消息WM_LBUTTONDOWN WM_RBUTTONDOWN这些就可以了搞定了吧,在ONMOUSEMOVE事件中判断  STATE参数也可以
      

  2.   

    // 左键按下
    if GetKeyState(VK_LBUTTON) and $80 > 0 then ...
    // 右键按下
    if GetKeyState(VK_RBUTTON) and $80 > 0 then ...
    // 同时按下
    if (GetKeyState(VK_LBUTTON) and $80 > 0) and (GetKeyState(VK_RBUTTON) and $80 > 0) then ...判断松开就把 > 0 改为 = 0 .
      

  3.   

    上面的老兄你说的不对吧!
    尽管能独立判断左键按下和右键按下,但不能判断两健同时按下哟!当两键同时按下时,对于左键和右键也能触发,我说的是独立判断,独立判断,独立判断,独立判断,独立判断,独立判断,独立判断,独立判断,独立判断,各个事件不能互相影响!请高手回答!!!!!!!!!!!!!!!!!!!!!!!!!
    把上面的代码改成这样也不行,我的天哪,怎么样办呢!
    急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急
    if GetKeyState(VK_LBUTTON) and $80 > 0 then
    begin
            listbox2.Items.Add('有左键按下');
            exit;
    end;
    if GetKeyState(VK_RBUTTON) and $80 > 0 then
    begin
            listbox2.Items.Add('右键按下');
            exit;
    end;
    if (GetKeyState(VK_LBUTTON) and $80 > 0) and (GetKeyState(VK_RBUTTON) and $80 > 0) then
    begin
            listbox2.Items.Add('同时按下');
            exit;
    end;急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急
      

  4.   

    我晕,多加个判断不就行了吗?
    if (GetKeyState(VK_LBUTTON) and $80 > 0) and (GetKeyState(VK_RBUTTON) and $80 = 0) then
    begin
            listbox1.Items.Add('ÓÐ×ó¼ü°´ÏÂ');
            exit;
    end;
    if (GetKeyState(VK_LBUTTON) and $80 = 0) and (GetKeyState(VK_RBUTTON) and $80 > 0) then
    begin
            listbox1.Items.Add('ÓÒ¼ü°´ÏÂ');
            exit;
    end;
    if (GetKeyState(VK_LBUTTON) and $80 > 0) and (GetKeyState(VK_RBUTTON) and $80 > 0) then
    begin
            listbox1.Items.Add('ͬʱ°´ÏÂ');
            exit;
      

  5.   

    to killlaoli(菜鸟): ,就是嘛:)
    to 楼主:我只是简单写在一起嘛:)