Setfocus(HWMD hwnd):将窗口hwnd设置成获得焦点

 

GetDlgItem (hwnd, idFocus):此函数返回一个句柄

具体参数的含义:

 hwnd:包含该窗口标志位的对话框的句柄

 idFocus: 指定将被检索的控件标识符,可以通过idFocus= GetWindowLong (hwnd, GWL_ID)的方法获得。

 

 注意: GetWindowLong (hwnd, GWL_ID)函数返回的是一个所需要的32位控件标识符。

 

说明在一个窗那个口中分布了许多子窗口但是在每次相应窗口的时候每次都是先响应主窗口的,第二次才是响应子窗口的,由于这种情况的出现导致了混乱于是可以在主窗口的响应函数的WM_SIZE消息中添加

SetFocus (GetDlgItem (hwnd, idFocus)),这样的目的可以达到每次都是子窗口先处理消息。但是最小化窗口的时候再回复的时候这个时候消息又一次被主函数相应,于是应该加入这样一段代码:

 

    case WM_SETFOCUS:
        SetFocus (GetDlgItem (hwnd, idFocus)) ;
        return 0 ;

这样就可以达到最小化再次显示的时候仍然是子窗口响应函数响应消息。

    idFocus每次都在子窗口的WM_SETFOCUS中获得,具体代码如下:

    case WM_SETFOCUS:
          idFocus = GetWindowLong (hwnd, GWL_ID) ;//获得窗口标识

               // Fall through

     case WM_KILLFOCUS:
          InvalidateRect (hwnd, NULL, TRUE) ;
          return 0 ;