问题标签 [winmain]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
15704 浏览

c++ - C++中WinMain、main和DllMain的区别

这三个功能有什么区别以及何时使用它们?

0 投票
3 回答
11102 浏览

c - 如何在不使用 WinMain 的情况下编写 Windows 应用程序?

用 C/C++ 编写的 Windows GUI 应用程序将“WinMain”作为入口点(而不是“main”)。我对此的理解是编译器会生成一个由 C 运行时调用的“主”函数。这个'main'函数为GUI设置必要的环境并调用'WinMain'(指定实例句柄等)。

简而言之,我相信控制台和 GUI 应用程序启动在以下方面有所不同:

控制台应用程序:C 运行时 --> 'main' 函数(手工编码)

GUI 应用程序:C 运行时 --> 'main' 函数(编译器生成) --> 'WinMain' 函数(手工编码)

我想验证这种理解并找出我如何仅使用“main”函数(即无需编写“WinMain”)手动编写 Windows GUI。

0 投票
2 回答
3351 浏览

c++ - 为什么 winmain 不设置错误级别?

为什么这个程序能正确显示消息框,却没有设置错误级别?

我将上面的代码编译为名为 a.exe 的可执行文件。我在命令提示符下做了这个:

如果我exit(90);在退货前使用,我会得到相同的结果。它仍然说0

我也尝试通过启动程序CreateProcess并获得结果,GetExitCodeProcess但它也返回0给我。我进行了错误检查以确保一切都正确启动。

我最初在一个更复杂的程序中看到了这个问题,所以我做了这个简单的程序来验证这个问题。结果是一样的,两个程序WinMain总是返回0

我尝试了 x64、x86 和 unicode 和 MBCS 编译选项。所有都0作为错误级别/状态代码给出。

0 投票
3 回答
14219 浏览

visual-c++ - _WinMainCRTStartup 执行什么功能?

这是一系列至少两个密切相关但不同的问题的一部分。我希望我通过单独询问他们来做正确的事情。

我试图让我的 Visual C++ 2008 应用程序在没有 C 运行时库的情况下工作。这是一个 Win32 GUI 应用程序,没有 MFC 或其他花哨的东西,只是普通的 Windows API。

所以我将 Project Properties -> Configuration -> C/C++ -> Advanced -> Omit Default Library Names 设置为 Yes (compiler flag /Zl) 并重建。

然后链接器抱怨一个未解决的 external _WinMainCRTStartup。很公平,我可以告诉链接器使用不同的入口点,比如MyStartup. 根据我在网上收集的信息,_WinMainCRTStartup做了一些初始化工作,我可能想做MyStartup其中的一部分。

所以我的问题是:执行了哪些功能_WinMainCRTStartup,如果我不使用 CRT,我可以省略哪些功能?

如果您对这些东西很了解,请也看看我的另一个问题。谢谢!

旁白:为什么我首先要这样做?

  1. 我的应用程序没有明确使用任何 CRT 函数。
  2. 我喜欢精益求精的应用程序。
  3. 它会教给我一些新的东西。
0 投票
6 回答
54609 浏览

c# - 什么是消息泵?

这个线程(大约一年前发布)中,讨论了在非交互式会话中运行 Word 可能带来的问题。那里给出的(相当强烈的)建议是不要这样做。在一篇文章中指出“Office API 都假设您在桌面上的交互式会话中运行 Office,带有监视器、键盘和鼠标,最重要的是,还有一个消息泵。” 我不确定那是什么。(我使用 C# 编程仅一年左右;我的其他编程经验主要是使用 ColdFusion。)

更新:

我的程序运行大量的 RTF 文件,提取两条信息用于构建医疗报告编号。我没有尝试弄清楚 RTF 中的格式化指令是如何工作的,而是决定只在 Word 中打开它们并从那里提取文本(而不实际启动 GUI)。有时,该程序在处理一个文件的过程中会打嗝,并留下一个打开的 Word 线程附加到该文档(我仍然需要弄清楚如何关闭该线程)。当我重新运行程序时,我当然会收到一个通知,说有一个线程在使用该文件,我想打开一个只读副本吗?当我说是时,Word GUI 突然从无处弹出并开始处理文件。我想知道为什么会这样;

0 投票
4 回答
42480 浏览

c++ - 主函数中的“WINAPI”是什么意思?

你能解释一下函数WINAPI中的单词吗?WinMain()

以最简单的方式..

它只是一些 Windows 时髦模式吗?

它有什么作用?或者更确切地说,我还没有遇到过这个 C++ 特性是什么?

0 投票
4 回答
3821 浏览

c++ - c++winmain()的使用

我刚开始学习 c++ 中的 windows 编程。我有一个疯狂的形象,win32 编程是基于调用 windows 函数并从它们发送参数。就像,当你想创建窗口时,你调用一些处理 windows GUI 的 win32 函数并说“嗨,请给我创建一个新窗口,100 x 100 像素,有两个按钮”,然后那个 GUI 函数说“嗨,没问题,当发生某些事情时,例如用户单击一个按钮,我将更改位于此位置的变量 xy”。

所以,我认为它与控制台编程非常相似。但是第一条指令让我感到惊讶。我一直认为每个程序都会先执行 main() 函数。因此,当我启动应用程序时,Windows 会在堆栈顶部存储一些参数并运行该应用程序。所以我假设初始化 main() 只是一种 C++ 方法来告诉编译器第一条指令应该在哪里。

但是在 win32 编程中,有一个名为 WinMain() 的函数首先启动。所以我有点困惑。我认为编译器必须以 main() 开头的规则,main 只是定义它的开始位置,比如一些起点标识符。

那么,请问为什么有 WinMain() 函数而不是 main()?当我认为 C++ 编程与汇编程序一样合乎逻辑时,它再次让我感到困惑。

0 投票
3 回答
2137 浏览

c++ - 在 main 之前未调用 WinMain(C/C++ 程序入口点问题)

我的印象是这段代码

将输出 WinMain,但当然没有任何东西可以按照您的预期工作。

无论如何,有人可以告诉我如何让这个程序首先运行 WinMain(我确实有理由同时使用两者)。如果有任何帮助,我正在使用 mingw 运行 Windows 7。

0 投票
1 回答
1694 浏览

c++ - 如何禁用 MFC 应用程序的 WinMain 入口点?

我知道在 Windows 下不可能有具有多个入口点的应用程序。

我有一个 MFC 应用程序,并添加了使其作为服务运行的代码(main()入口点和其他必需的东西),但看起来 Windows 将始终WinMain()从 MFC 运行而不是我的 main。

问题是如何禁用WinMain()from MFC 以便能够运行我自己的main().

如果您想运行与控制台应用程序相同的应用程序,可能会出现同样的问题。

为了将其构建为控制台应用程序(主要而不是 WinMain),我必须更改项目属性的哪些内容?

评论我的 CWinApp 是唯一的解决方案吗?

0 投票
1 回答
861 浏览

c++ - 如何将包装器添加到 MFC WinMain?

我想向 MFC WinMain 添加一个包装器,以便能够使 MFC 应用程序能够作为 GUI 应用程序或服务运行。

我可以在不修改 MFC 源代码的情况下从 MFC 将包装器添加到 WinMail 吗?