有一棘手问题(很惭愧)请教高手:
   一后台运行的程序,在系统发生某一事件会后激活,使用SetWindowPos()虽然能窗口置为前台显示,总是不能获得输入焦点(兄弟我甚至使用event_mouse()模拟鼠标点击也不行)。
   如肯赐教,万分感谢!

解决方案 »

  1.   

    SetForegroundWindow()也试过,在WIn2000/NT下不灵。
    我试过金山词霸的界面,激后也不能获得输入焦点,是否也没有解决这个部题。
      

  2.   

    楼上说的 SetForegroundWindow 如果在自己的进程内调用时可以的,如果相激活其他的进程的窗口就不行了,Microsoft 在 Win2k/xp 下已经削弱了这个函数的功能,具体的可以参考一下 msdn.如果要把其它进程的窗口带到前台需要调用 AttachThreadInput, 
    下面的内容来自 vckbase---------------------
    如何在2K/xp下使窗口获取焦点
    在2K/XP下我们可以用 AttachThreadInput 和SetForegroundWindow来有效的获取焦点。//捕捉并设置当前焦点窗口为我们的窗口
    AttachThreadInput(
        GetWindowThreadProcessId(
            ::GetForegroundWindow(),NULL),
        GetCurrentThreadId(),TRUE);//置我们的为焦点窗口
    SetForegroundWindow();
    SetFocus(); //释放thread
    AttachThreadInput(
        GetWindowThreadProcessId(
            ::GetForegroundWindow(),NULL),
        GetCurrentThreadId(),FALSE);
      

  3.   

    先使用SetWindowPos,接着使用SetForegroundWindow,有些时候必须这样才行:
    SetWindowPos(hWnd,HWND_TOP,//MOST,
                 wWindowLeft,wWindowTop,0,0,
       SWP_NOSIZE|SWP_SHOWWINDOW);
    SetForegroundWindow(hWnd);
    不行再加上SetFocus( hWnd );
      

  4.   

    谢谢sans(sans)、 gboy(hello)、alfxiao(alfxiao) 。
    SetFocus( hWnd ) or BringWindowToTop()在调试时都试过了,在win2000/nt下不灵。
    gboy(hello)的方法待去试一试。
      

  5.   

    我用MFC的Dialog,他说
    error C2065: 'hWnd' : undeclared identifier
    SetForegroundWindow(hWnd);
    参数是什么
    我是新手