我利用ListView显示一些记录,当ListView1_ItemClick则弹出另一窗体显示该记录的详细信息。现在的问题是,单击后新窗体是可以弹出,但一闪而过后焦点又回到了ListView上。(如果在keyup之前把鼠标移开ListView1_Items则正常)有没有办法让焦点一直保持在新窗体上?或者有什么语句能在加载新窗体的时候把鼠标移到该窗体的左上角?

解决方案 »

  1.   

    '切换窗口。
    Public Function SwitchWindow(ByVal hWnd As Long) As Long
        Dim lngWW As Long    lngWW = GetWindowLong(hWnd, GWL_STYLE)
        If lngWW And WS_MINIMIZE Then Call ShowWindow(hWnd, SW_RESTORE)
        SwitchWindow = SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW)
        
    End FunctionGetWindowLong、SetWindowPos 这二个 API 申明以及常量你用“API 浏览器”生成一下,我就不写了。
      

  2.   

    设置鼠标位置,用 SetCursorPos 函数。先用 GetWindowRect 取得某个窗口的矩形信息,然后再调用 SetCursorPos 函数
      

  3.   

    最后还是用SetCursorPos搞定了。