使用Visual Studio(VS)创建空项目的Win32桌面应用程序【main函数入口变WinMain】

前言

在Visual Studio中直接新建Windows桌面应用程序会有很多多余的代码生成,本文将提供从空项目创建Win32项目的方法,解决新建空项目直接使用WinMain代码编译报错的问题

例如:LNK2019 :无法解析的外部符号

参考博客:

VS创建空的Win32程序 - fenggwsx - 博客园 (cnblogs.com)

步骤一:创建空项目

使用VS创建一个空项目

如图所示,默认创建的是控制台项目

步骤二:修改项目属性

新建项目后,右键点击项目名称,找到“属性”

打开属性配置页

在上方按需选择需要的配置,没有特殊需求可以选择所有配置

如图所示,选择配置属性->链接器->系统->子系统

将控制台改成窗口选项

步骤三:创建入口函数

新建源文件,例如main.cpp

在源文件添加如下代码

#include <Windows.h>

int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
    // 消息处理 不需要可以直接 return 0
    MSG msg = {};
    while (GetMessageW(&msg, nullptr, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessageW(&msg);
    }
	return (int) msg.wParam;
}

编译,完成!

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 一个 Win32 程序通常由以下组件组成: 1. 主模块:一般是一个 .exe 文件,包含程序的入口点和主函数。 2. 资源文件:包含程序所需的资源,如图标、位图、字符串、菜单等。 3. 外部库:包含程序所需的库文件,如 Windows API 和其他第三方库。 4. 源代码:包含程序的源代码,可使用 C、C++、Delphi 或其他编程语言编写。 5. Makefile:用于编译和链接程序的脚本文件,指定编译器和编译选项。 6. 调试器:用于调试程序的工具,如 Visual StudioWinDbg、OllyDbg 等。 7. 文档:包含程序的说明文档、用户手册等。 这些组件共同构成了一个完整的 Win32 程序。 ### 回答2: 一个Win32程序由多个组成部分构成,包括应用程序、模块、资源和库文件。 应用程序Win32程序的主体,它负责完成特定的功能。应用程序可以是窗口应用程序或控制台应用程序,具体取决于其界面形式。 模块是组成应用程序的各个部分,通常分为主模块和子模块。主模块负责程序的初始化和入口点,而子模块则用于实现应用程序的不同功能模块和库文件的功能。 资源是应用程序所需要的外部资源,如图标、位图、字符串、对话框等。通过资源可以使应用程序界面更加丰富,提供更好的用户体验。 库文件是为了方便程序开发而提供的预定义函数的集合。这些库文件包含了用于实现各种功能的函数,如操作系统API函数、常用数据结构等。开发者通过调用库文件中的函数来简化开发过程。 在Win32程序中,还包括头文件和源代码文件。头文件包含了程序中所需的各种函数、结构体和常量的声明,而源代码文件则包含了实际的函数实现。 总之,一个Win32程序的组成包括应用程序、模块、资源、库文件、头文件和源代码文件。这些组成部分共同协作,实现程序的功能,并提供用户良好的交互体验。 ### 回答3: 一个Win32程序的组成包括以下几个部分: 1. 程序入口点:每个Win32程序都有一个入口点,也就是一个被操作系统调用的函数。这个函数被命名为WinMain或者main,它作为程序的起点。 2. 窗口类:Win32程序通常使用窗口来与用户进行交互,并且每个窗口都有一个窗口类来定义其外观和行为。窗口类定义了窗口的样式、过程函数以及与其关联的图标、菜单、光标等。 3. 窗口过程函数:窗口过程函数是窗口类的成员,它定义了窗口的行为和响应用户的输入。窗口过程函数负责处理窗口消息,包括处理用户输入、绘制窗口、更新窗口等操作。 4. 消息循环:Win32程序运行时需要通过消息循环来处理系统产生的消息。消息循环不断地从系统消息队列中取出消息,并将其分发给对应的窗口过程函数进行处理。 5. 资源:Win32程序可以包含各种资源,如图标、菜单、位图、字符串等。这些资源可以嵌入到程序中,然后通过资源标识符来访问和使用。 6. 线程和进程管理:Win32程序可以创建多个线程来并发执行任务。通过线程和进程管理,程序可以控制线程的创建、销毁和同步,同时也可以管理进程的创建和销毁。 7. 用户界面:Win32程序可以使用各种控件和窗口样式来创建用户界面。通过API函数,程序可以创建、绘制和操作窗口、按钮、文本框等各种控件。 8. 库函数和API:Win32程序可以使用各种库函数和API函数来完成特定的任务,如文件操作、网络通信、图形绘制等。这些函数提供了丰富的功能和接口,方便程序开发和运行。 通过以上这些组成部分,一个Win32程序可以实现各种功能,包括创建窗口、处理用户输入、进行计算和操作、绘制图形、加载和保存文件等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值