- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习使用 DirectX9 创建游戏,我发现了 define WinProc 的不同版本:
LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
LRESULT CALLBACK WinProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
我不知道它们之间有什么不同,我应该使用哪个版本?谢谢兄弟。
最佳答案
#define CALLBACK __stdcall
#define WINAPI __stdcall
从两者的宏观定义来看,它们是一样的。
MSDN :
CALLBACK, WINAPI, and APIENTRY are all used to define functionswith the __stdcall calling convention. Most functions in the WindowsAPI are declared using WINAPI. You may wish to use CALLBACK forthe callback functions that you implement to help identify thefunction as a callback function.
什么是 Windows 调用约定?
来自 MSDN :
The way the name is decorated depends on the language and how thecompiler is instructed to make the function available, that is, thecalling convention. The standard inter-process calling convention forWindows used by DLLs is known as the WinAPI convention. It is definedin Windows header files as WINAPI, which is in turn defined using theWin32 declarator __stdcall.
也就是说WINAPI、CALLBACK和_stdcall在Windows平台上是一样的。
您可以使用 CALLBACK 或 WINAPI。
关于c++ - "LRESULT CALLBACK WinProc"和 "LRESULT WINAPI WinProc"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57231201/
我正在学习使用 DirectX9 创建游戏,我发现了 define WinProc 的不同版本: LRESULT WINAPI WinProc(HWND hWnd, UINT msg, WPARAM
我正在尝试将文本从记事本窗口输出到控制台,但它始终为 0。我做错了什么? int main() { HWND hwnd = (HWND)0x0031019C; // Window Handle
最近,我开始学习 DX11,并尝试在 WinAPI 中创建消息循环。我从教程中看到了一个以前从未见过的 LRESULT CALLBACK 函数。它在窗口过程函数中被调用。这是 WndProc 函数和
我有一个类: class SomeClass { public: void Init (); private: LRESULT CALLBACK Wnd
HFONT childfont = SendMessage (childwin, WM_GETFONT, NULL, NULL); 导致错误“从‘LRESULT’到‘HFONT__*’的无效转换”当M
我在 C# 中导入 WinApi 函数、编写回调等 ( example ) 并且总是想知道: 它们是什么意思? LRESULT 作为最后的结果? W参数? L-参数 ? 如何安全地“包裹”它们 WPA
我正在将我的项目从 32 位版本转换为 64 位版本,在以 64 位编译项目时,出现以下错误。 Error 2 error C2440: 'static_cast' : cannot conv
我正在尝试使用 WinApi 编写这个 win32 程序,但我被卡住了,因为我正在学习的教程似乎有问题。 主窗口.h: class MainWindow { public: MainWin
我已经制作了一个简单的 Windows api 程序,它具有 WinMain() 和 WinProc() 函数,但是我收到了这个错误: error C2440: '=' : cannot conve
我正在将 VC++6.0 项目转换为 Visual Studio 2008(到 2014 年)。我遇到了上述错误。 这是我的代码片段: BEGIN_MESSAGE_MAP(CImportProject
我是一名优秀的程序员,十分优秀!