从头开始创建C ++后台MFC应用程序

时间:2016-12-31 03:12:26

标签: c++ visual-c++ mfc

我想创建一个非常简单的后台应用程序。 我从空的c ++项目开始,然后用下面的代码创建一个source.cpp文件:

#include "Windows.h"

int WINAPI _tWinMain(HINSTANCE  hInstance,
    HINSTANCE   hPrevInstance,
    LPTSTR      lpCmdLine,
    int     nCmdShow)
{
    MSG Msg;

    while (GetMessage(&Msg, NULL, 0, 0))
    {

    }

    return 0;
}

然后我按如下方式设置项目的设置:

属性 - >配置属性 - >链接器 - >系统:设置子系统为:Windows(/ SUBSYSTEM:WINDOWS)

属性 - >配置属性 - >链接器 - >高级 - >设置入口点为:_tWinMain

我做得对吗?另外我想将MFC库添加到这个项目中,这样我就可以使用MFC的功能,我该怎么办?

感谢阅读:)

修改 很奇怪,我只需要包含" tchar.h"并且错误[LNK1561:必须定义入口点]消失。我不再需要配置项目设置了。我只需要以下代码:

#include "Windows.h"
#include "tchar.h"

int WINAPI _tWinMain(HINSTANCE  hInstance,
    HINSTANCE   hPrevInstance,
    LPTSTR      lpCmdLine,
    int     nCmdShow)
{
    //MessageBox(0, _T("test"), _T("Test"), 0);

    return 0;
}

1 个答案:

答案 0 :(得分:2)

在不使用文档和视图的情况下创建SDI应用程序。只检查您需要的选项。在大多数情况下,即使是后台应用程序也需要一个窗口来获取窗口消息。

保留创建的主窗口并且不显示它,将m_nCmdShow设置为SW_HIDE。销毁此主窗口将结束消息循环并停止程序。

稍后您可以从大型机中删除其他未使用的内容,例如工具栏。

另一种方法是使用向导创建基于对话框的应用程序。无需创建任何对话框并使用自己的消息泵。用这样的东西:

while (OuterCondition()) 
{
  while( ::PeekMessage( &message, NULL , WM_MIN, WM_MAX, PM_NOREMOVE ) )
  {
    ::AfxPumpMessage();
  }
}

MsgWaitForMultipleObjects也可能有用。

您通常需要CWinApp对象才能正确初始化MFC。