VC中对鼠标的确定及简单控制(3)
if (fwKeys!=0)
{
//把指定的内容输出到szTitle数组中
lstrcat(szTitle, " ---- 您按下了");
if(fwKeys & MK_CONTROL)
lstrcat(szTitle, "Ctrl ");
if(fwKeys & MK_SHIFT)
lstrcat(szTitle, "Shift ");
if(fwKeys & MK_LBUTTON)
lstrcat(szTitle, "鼠标左按钮");
if(fwKeys & MK_RBUTTON)
lstrcat(szTitle, "鼠标右按钮");
lstrcat(szTitle, "键");
}
SetWindowText(hWnd, szTitle);
break;
case WM_LBUTTONDBLCLK:
case WM_RBUTTONDBLCLK:
//如果鼠标双击了窗口客户区,那么就显示坐标信息
hDc = GetDC(hWnd);
//设置输出字体颜色
SetTextColor(hDc, (message == WM_LBUTTONDBLCLK) ? RGB(255, 0, 0) : RGB(0, 0, 255));
wsprintf(szTitle, "(%d,%d)", LOWORD(lParam), HIWORD(lParam));
TextOut(hDc, LOWORD(lParam), HIWORD(lParam), szTitle, lstrlen(szTitle)); //在指定位置输出文本
ReleaseDC(hWnd, hDc);
break;
case WM_PAINT:
hDc = BeginPaint(hWnd, &ps);
hMemDc = CreateCompatibleDC(hDc);
SelectObject(hMemDc, hSun);
BitBlt(hDc, 90, 8, 80, 60, hMemDc, 0, 0, SRCCOPY);
DeleteDC(hMemDc);
hMemDc = CreateCompatibleDC(hDc);
SelectObject(hMemDc, hMoon);
BitBlt(hDc, 90, 78, 80, 60, hMemDc, 0, 0, SRCCOPY);
DeleteDC(hMemDc);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
DeleteObject(hSun);
DeleteObject(hMoon);
PostQuitMessage(0);
break;
default:
return (DefWindowProc(hWnd, message, wParam, lParam));
}
return (0);
}
以上是我们全文之重点。。主要的对鼠标的操作。注释很完全,不多罗嗦了。