从头开始创建C 背景Win32应用程序

Create C++ background Win32 application from scratch

本文关键字:Win32 应用程序 背景 创建 从头开始      更新时间:2023-10-16

我想创建一个非常简单的背景应用程序。我从空的C 项目开始,然后创建一个源。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;
}

然后我设置项目的设置如下:

属性 ->配置属性 ->链接器 ->系统:SET子系统是:Windows(/Subsystem:Windows)

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

我在做对吗?我也想将MFC库添加到此项目中,以便我可以使用MFC的功能,该如何做?

感谢您的阅读:)

编辑:奇怪的是,我只需要包括" tchar.h",而错误[必须定义的输入点]消失。我不需要再配置项目设置了。我只需要以下代码:

#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;
}

在不使用文档和视图的情况下创建SDI应用程序。仅检查您需要的选项。在大多数情况下,您甚至需要一个窗口才能获取窗口消息。

留下创建的主窗口,不要显示它,将m_ncmdshow设置为sw_hide。破坏此主窗口将结束消息循环并停止程序。

后来您可以删除其他未使用的东西,例如大型机中的工具栏。

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

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

也可能有用。

您通常需要一个cwinapp对象才能正确启动MFC。