做这样一个程序1。基于MFC对话框应用程序
2。主窗口上有一个TextBox(CEdit),起名字为TextA
3。新建一个线程,这个线程的作用是:永久保持主窗口的激活状态。请问:
这个线程应该如可编写?
///////////////////////////////////////////////////////////////////////
//
[注1]:什么叫“永久保持主窗口的激活状态”?
1)窗口的标题栏始终都是蓝色的,而不是灰色的。
2)TextA 始终有焦点,也就是有光标在闪动,并且随时都可以输入文本。
3)当因为打开其他的应用程序(比如记事本)而使我的程序失去焦点和激活状态时,我的程序会自动的把焦点抢回来(标题栏由灰色变蓝色,并且TextA得到焦点)
[注2]我试过的方法:我试过SetForegroundWindow();SetActiveWindow();发送 WM_ACTIVATE消息  等方法,
但是都不能让主窗口“永久保持主窗口的激活状态”,
MSDN上面也承认SetForegroundWindow();SetActiveWindow()的相关限制。//////////////////////////////////////////////////////////////////////
//

解决方案 »

  1.   

    ///////////////////////////////////////////////////
    // 再补充一点,
    我并不是希望它始终在窗口最顶层,我只是希望它能够保持激活(标题栏为蓝色),
    所以SetWindowPos(&topMostWin,...之类的也不用试了。
      

  2.   

    先从道德说起, 恶心...那别的程序怎么工作(除了服务类的非交互进程)??后说技术问题,
     在WIN下除了"顶层风格"窗口以外,一个激活的窗口始终是在最顶层的..如果你一定要不让别的程序工作的话,可以拦截 "失去焦点"的消息..
    或是 HOOK 系统的 "设置焦点窗口" API,,名称记不太清楚了...
      

  3.   

    请上面的兄弟不要误会,我并不是想做病毒之类的程序,这是一个工厂生产用的专用程序的,一个电脑有4个USB口,启动4个这样的程序,每一个程序检测各自的USB口是否有外设连接上,如果有,那么就需要该程序实例把自己设置为活动的窗口,同时不让其他3个程序实例活动,
    这样,操作工人就可以用条码扫枪操把相关的条码扫到当前活动窗口的TextA里面。为了节省时间(工厂的需要),不希望操作工人手动的(用鼠标)在窗口之间切换,而是让窗口自动的切换,这样,操作工人只需要插拔USB设备和扫条码就可以了。所以才有了上述的需求。我不知道上面的两位朋友是干什么工作的,
    不过,希望您们以后不要对用户的软件需求妄下论断。
    希望后来的兄弟不要这样,大家都是出来混得,讲话要得体。谢谢。