GUI学习笔记之三--鼠标键盘

  客户区鼠标消息有MSG_LBUTTONDOWN, MSG_LBUTTONUP, MSGMOUSEMOVE,其中使用fnGUI_SetCapture和fnGUI_ReleaseCapture来保证某一控件始终唯一获取鼠标信息。其中lParam表示坐标信息,wParam表示ctrl,shift键的状态。

case MSG_LBUTTONDOWN:

/*响应DOWN消息捕获鼠标,并记录当前点的坐标值,为相对值*/

    oldx = LOHWORD(lParam);

    oldy = HIHWORD(lParam);

    fnGUI_SetCapture(hWnd);

    IsCaptured = TRUE;

    return 0;

break;

 

case MSG_MOUSEMOVE:

{/*响应MOVE消息画线,这时得到的坐标值为屏幕坐标值*/

    T_GUI_HDC hdc;

    if(IsCaptured)

    {

        x = LOHWORD(lParam);

        y = HIHWORD(lParam);

        fnGUI_ScreenToClient(hWnd,&x,&y);

        hdc = fnGUI_GetClientDC(hWnd);

        fnGUI_SetInstantPaint(TRUE);

        fnGUI_MoveTo(hdc,oldx,oldy);

        fnGUI_LineTo(hdc,x,y);

        oldx = x;

        oldy = y;

        fnGUI_SetInstantPaint(FALSE);

        fnGUI_ReleaseDC(hdc);

        return 0;

    }

}

break;

 

case MSG_LBUTTONUP:

/*释放鼠标*/

    oldx = oldy = 0;

    x = y = 0;

    fnGUI_ReleaseCapture();

    IsCaptured = FALSE;

    return 0;

break;




  键盘消息:当有按键时产生键盘事件,形成键盘消息传递给窗口过程,传送过程采取的是一种由顶向下的方式,从桌面到激活主窗口再到其上的焦点控件。其主要的消息有:MSG_KEYDOWN  MSG_CHAR  MSG_KEYUP MSG_SYSKEYDOWN  MSG_SYSCHAR  MSG_SYSKEYUP,wParam 参数表示的是键码,lParam 参数表示的是控制键如alt、shift 等的状态。在应用程序中用户可通过系统调用fnGUI_SetActiveWindow来激活某个主窗口,同时用户可通过系统调用fnGUI_SetFocus 设置某个窗口具有焦点,fnGUI_KillFocus 使某个窗口失去焦点。

你可能感兴趣的:(学习笔记)