一个后台通信的进程,不需要任何用户界面,由另一个主进程启动,应该用什么样的结构实现?
    我试了几种使用 SW_HIDE 的方法,都会有窗口的一闪而过。能否避免这种现象,或者根本不使用主窗口,仅有一个 App 类,或者类似线程那样的简单函数?

解决方案 »

  1.   

    创建窗口时不要带ws_visible属性
      

  2.   

    对于一个mfc程序,在app类的InitialInstance中
    中不要创建任何窗口,(去掉任何dlg.domodel(),new CMyWnd(),LoadFrame() PaseCommandLineInfo(),AddDocTemplate()等的调用)
    只写你的代码。
    然后直接return true;
      

  3.   

    for Example:
    BOOL CMyApp::InitInstance()
    {
        your code.......
        return TRUE;
    }
    只有一个应用程序类,把其他所有类的代码都删掉
      

  4.   

    implement it as a service
      

  5.   

    更方便的方法是写一个Service了,用服务族的函数控制很方便的。
      

  6.   

    关于大家给的方法,还有几点疑问:
    1.创建窗口不带 WS_VISIBLE 的方法,应该是指 CMainFrm 吧,我在 PreCreateWindow() 里修改结构 cs.style &= ~WS_VISIBLE,不起作用。还是应该在别的地方改?
    2.修改 InitInstance() 的方法,我去掉了所有东西,仅留下 return true,结果程序运行后,连进程本身都不存在了;留下某些部分的话,又会引发 ASSERT 错误。怎样才能让进程驻留在内存里运行而不是消失?
    3.使用 Service 的方法,我还没有详细试过。但这是一个从属进程,并非长期驻留系统,必须要由另一个主进程任意启停操作,同时还必须是多线程的。这样的情况是否适合用 Service?