gpt4 book ai didi

c++ - WM_GETFONT 返回类型 LRESULT 而不是预期的 HFONT

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:45 25 4
gpt4 key购买 nike

HFONT childfont = SendMessage (childwin, WM_GETFONT, NULL, NULL); 导致错误“从‘LRESULT’到‘HFONT__*’的无效转换”当MSDN states返回类型是 HFONT。这个函数的正确返回类型是什么?我应该只使用 LRESULT 还是我必须做一些特别的事情,因为如果我不这样做,我的程序稍后会回来咬我?

最佳答案

SendMessage是一把瑞士军刀:它做了很多不同的事情,所有这些都返回各种类型的值。由于 C 不支持重载返回值(记住 Win32 API 是 C API),它必须返回一个通用的 LRESULT。类型。

因此,您需要将结果转换为实际类型。文档指出此消息返回 HFONT ,因此您必须将结果转换为 HFONT :

HFONT childFont = (HFONT)SendMessage(childWin, WM_GETFONT, ...);

或者,您可以使用宏 GetWindowFont()在头文件中定义<WindowsX.h> ,其中包含很多实用程序宏:

// From WindowsX.h.  SNDMSG is a macro which expands to either SendMessage or
// AfxSendMessage.
#define GetWindowFont(hwnd) FORWARD_WM_GETFONT((hwnd), SNDMSG)
#define FORWARD_WM_GETFONT(hwnd, fn) \
(HFONT)(UINT_PTR)(fn)((hwnd), WM_GETFONT, 0L, 0L)

// Example usage:
HFONT childFont = GetWindowFont(childWin);

关于c++ - WM_GETFONT 返回类型 LRESULT 而不是预期的 HFONT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14467573/

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