- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我刚开始学习使用 C++ 进行 Windows 编程。我有一个疯狂的印象,即 win32 编程是基于调用 Windows 函数并向它们发送参数以及从它们发送参数。就像,当你想创建窗口时,你调用一些处理 Windows GUI 的 win32 函数并说“嗨,请给我创建一个新窗口,100 x 100 像素,有两个按钮”,然后那个 GUI 函数说“嗨,没问题,当发生某些事情时,例如用户单击一个按钮,我将更改位于此位置的变量 xy”。
所以,我认为它与控制台编程非常相似。但是第一个指令让我感到惊讶。我一直认为每个程序都会先执行 main() 函数。因此,当我启动应用程序时,Windows 会在堆栈顶部存储一些参数并运行该应用程序。所以我假设初始化 main() 只是一种告诉编译器第一条指令应该在哪里的 C++ 方法。
但是在 win32 编程中,有一个名为 WinMain() 的函数首先启动。所以我有点困惑。我认为编译器必须以 main() 开头的规则,main 只是定义它从哪里开始,就像一些起点标识符。
那么,请问为什么有 WinMain() 函数而不是 main()?当我认为 C++ 编程和汇编程序一样合乎逻辑时,我又一次感到困惑。
最佳答案
main()
与 WinMain()
一样是一个任意的入口点。为了保持一致性,该标准只需要一个名为 main
的函数。入口点(无论是 main
还是 WinMain
)实际上是由隐藏函数调用的,该函数是真实入口点。在某些平台上,“真正的”入口点称为 _start
。正是该函数完成了所有初始工作,例如初始化全局变量、设置环境等,然后它调用 main()
。在 Windows 上,该启动函数恰好调用 WinMain()
(如果可用)。
编辑:查看this answer以获得更详细的解释。
关于c++ 使用 winmain(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2397983/
WinMain() 实际上是如何调用的?我记得专业黑客使用的一个函数,它以(某物)开头,看起来像 __startupWinMain()。 问题是,我有一个 Win32 EXE(使用 /SUBSYSTE
WinMain 的第三个参数以未处理的字符串形式提供命令行。虽然这对于允许您处理通配符的扩展和其他问题可能很有用,但是否有可能在 Win32 API 中的某个地方潜伏着获得通常的 C argc、arg
所以我有一个 .cpp 文件,其中包含例如函数:drawLine()、drawSquare() 和 main()。在 main() 中,我想调用使用 WinApi 创建窗口的函数(从其他文件),然后调
我刚开始学习使用 C++ 进行 Windows 编程。我有一个疯狂的印象,即 win32 编程是基于调用 Windows 函数并向它们发送参数以及从它们发送参数。就像,当你想创建窗口时,你调用一些处理
我的问题是参数只检索每个参数中的第一个字母,为此我不知道为什么..有人可以详细说明吗? #include #include int WINAPI WinMain(HINSTANCE hInstan
这个问题在这里已经有了答案: what does the function returns with in C program , in case if there is no return sta
总而言之,我有一个关于 WinMain 的问题。在VS2010中,_tWinMain的返回值为“(int) msg.wParam”。我不明白为什么它会返回 wParam。 wParam 是什么?我
我正在努力让我的代码尽可能完美,并且我已经清除了所有错误和(其他)警告。我只剩下这两个: Warning C28253 Inconsistent annotation for 'WinMain':
我刚开始使用 C++,但遇到了无法修复的错误。 这是我到目前为止的所有代码(甚至无法让 hello world 工作): #include "stdafx.h" #include int WINAP
这可能是有史以来最简单的win32程序.. #include int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR cmdLine,
我有几个非常简单的问题。我在网上搜索了它们,但找到了不同的答案,所以我只想知道该遵循哪个。 所以,首先,我相信 WinMain 不是 C 或 C++ 标准,而只是由 Microsoft 添加来确定何时
你能给我解释一下通常写在 WinMain() 函数末尾的这条语句的意义吗: return (int) msg.wParam; 我习惯于以 return 0; 结束我的控制台应用程序,这对 Win
假设我在一个项目中构建了一个名为 App1 的应用程序,其中包含很多类。我决定要构建另一个名为 App2 的项目,并且我想使用那些相同的类,因此我决定将 App1 转换为一个 lib 文件。我必须删除
我正在 Windows 上开发应用程序,但我也想支持其他平台(我编写的大部分代码都是平台无关的)。不管怎样,我想为了开发的缘故我想让事情简单化(也许我在这种方法上太天真了)所以我的 main.cpp
有什么方法可以在类中隐藏 WinMain() 函数吗?谢谢。 最佳答案 不,没有。一个更好的问题是“你为什么想要”?在 Java 或 C# 中,main 函数是静态类成员,不是因为它更好或更干净,而是
我在想,是否可以使用 win32 程序的入口点 - WinMain - 作为类方法?例如; class cApp { public: cApp(); ~cApp(); cGuiM
我正在学习 C++ 和针对 Windows API 的编程。我的第一个“Hello Windows API”程序只显示一个 MessageBox()。但是,我有一些问题,我正在阅读的书没有解释。 首先
为什么这个程序可以正确显示消息框,但没有设置错误级别? int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTAN
在MFC中,wWinMain定义在appmodul.cpp中。据我所知,该文件内置于 mfc90ud.dll 中。但是,当我运行我的应用程序时,调用堆栈显示 MyApplication.exe!wWi
我删除了 IDE 生成的 _tmain() 方法,因为我发现在添加我的 WinMain 条目后有两个入口点没有意义。是的,这是我的第一个 C++ 应用程序,我是新手,但请保持友好。 这就是我得到的:
我是一名优秀的程序员,十分优秀!