winapi - WinApi 中的 SetWindowSubclass 函数
问题描述
试图用 MinGW 编译一些使用 SetWindowSubclass 函数的代码,但编译器告诉我没有这样的函数。在头文件中找到函数的声明,commctrl.h
它似乎被某些定义排除在外:
我可以用它做任何事吗?
解决方案
我SetWindowSubclass
在 Code::Blocks 中使用 MinGW 重新创建了同样的问题。
从需要大于的#if
条件语句可以看出(代表Windows XP,因为最小支持的客户端 是windows XP)_WIN32_WINNT
_WIN32_WINNT_WINXP
SetWindowSubclass
在 sdkddkver.h 中,_WIN32_WINNT_WINXP
定义为:
#define _WIN32_WINNT_WINXP 0x0501 /* Windows XP */
所以我们需要定义_WIN32_WINNT
大于0x501
:
#define _WIN32_WINNT 0x502
#include <windows.h>
#include <stdio.h>
#include <commctrl.h>
您应该在 MinGW 中为此 api 链接的库是libcomctl32.a
.
另外推荐使用MSVC和VS工具,可以正确定义这些宏。
推荐阅读
- java - 为什么在创建新的 java 类时,自定义向导不显示?
- wordpress - 如何从主题函数文件中删除gutenberg_render_title_tag?
- python - python加载A.so文件,其某些函数在B.so文件中定义
- html - 如何在悬停时显示跨度,然后在未悬停时不隐藏?
- github - Github 博客图片上传失败(Markdown 路径)
- c# - 为什么'if'会停止音乐并且不允许我在其中播放任何新音乐?以及如何使它工作?
- r - dplyr::mutate() -- 在 tibble 嵌套列表中,如何忽略 NULL 嵌套列表?
- python - Streamlit、Flask、Fastapi:如何将压缩文件上传到我的网络应用程序并使其可下载?
- algorithm - 如何在另一个数据仓库平台中解密 DB2 数据
- flutter - Flutter/Dart:我的小部件树中可以有多个带有状态的小部件吗?