gpt4 book ai didi

c++ - winapi 函数的函数指针 (stdcall/cdecl)

转载 作者:可可西里 更新时间:2023-11-01 16:30:02 26 4
gpt4 key购买 nike

有人可以给我一些为 MS winapi 函数创建函数指针的技巧吗?我正在尝试为 DefWindowProc (DefWindowProcA/DefWindowProcW) 创建指针,但出现此错误:

LRESULT (*dwp)(HWND, UINT, WPARAM, LPARAM) = &DefWindowProc;

error C2440: 'initializing' : cannot convert from
'LRESULT (__stdcall *)(HWND,UINT,WPARAM,LPARAM)'
to 'LRESULT (__cdecl *)(HWND,UINT,WPARAM,LPARAM)'

我不知道我需要使用什么,因为我不习惯 MS ascii/wide 宏。顺便说一下,我正在创建一个函数指针来快速破解,不幸的是我没有时间解释原因 - 但无论如何,我认为这个问题对需要创建 winapi 函数指针的人会有帮助。

更新:

此代码有效,但我担心这是不好的做法(并且不遵守 unicode/ascii 编译选项)。我应该定义两个规范吗?

LRESULT (__stdcall* dwp)(HWND, UINT, WPARAM, LPARAM) = &DefWindowProc;

更新 2:

这更好(感谢 nobugz):

WNDPROC dwp = DefWindowProc;

最佳答案

像这样修复调用约定不匹配:

LRESULT (__stdcall * dwp)(HWND, UINT, WPARAM, LPARAM) = DefWindowProc;

typedef 可以使它更具可读性:

typedef LRESULT (__stdcall * WindowProcedure)(HWND, UINT, WPARAM, LPARAM);
...
WindowProcedure dwp = DefWindowProc;

但是,<windows.h>已经有一个 typedef 了,你不妨使用它:

WNDPROC dwp = DefWindowProc;

关于c++ - winapi 函数的函数指针 (stdcall/cdecl),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1970164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com