VC中对鼠标的确定及简单控制(2)
窗口创建工作。
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
if(!ckzc(hInstance)) //注册窗口类
return (FALSE);
if(!ckcj(hInstance,nCmdShow)) //创建窗口
return (FALSE);
InvalidateRect(hWndMain, NULL, TRUE); //按指定区域更新区域
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
一个窗口程序最重要的环节了。WinMain对以上我们建立的函数进行了总汇。
LRESULT APIENTRY WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hDc, hMemDc;
PAINTSTRUCT ps;
DWORD fwKeys;
POINT ptMouse;
char szTitle[100];
static RECT rect1, rect2;
static HCURSOR hCursorPen;
switch(message)
{
case WM_CREATE:
rect1.left = 90;
rect1.right = 170;
rect1.top = 8;
rect1.bottom = 68;
rect2.left = 90;
rect2.right = 170;
rect2.top = 78;
rect2.bottom = 138;
hCursorPen = LoadCursor(hInst, "RCCURSOR");
break;
case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
case WM_MOUSEMOVE:
ptMouse.x = LOWORD(lParam); //取lParam低字节为横坐标x
ptMouse.y = HIWORD(lParam); //取lParam高字节为横坐标y
fwKeys = wParam; //将鼠标按钮和键盘组合赋给32位无符号整数fwKeys
//很喜欢各个游戏中很有特色的鼠标吧。下面的代码就可以帮助你实现
//判断是否位于窗口之中否则,采用普通的箭头鼠标。
if (PtInRect(&rect1, ptMouse) || PtInRect(&rect2, ptMouse)) //判断指定点是否在指定窗口内
SetCursor(hCursorPen);
//在标题栏上显示鼠标的当前位置和按键和按键信息
//把输出格式和输出变量送到szTitle数组
wsprintf(szTitle, "鼠标测试程序 ---- 鼠标位置:[%d,%d]", ptMouse.x, ptMouse.y);