gpt4 book ai didi

winapi - 如何使用 WinAPI 获取 MessageBox 图标

转载 作者:行者123 更新时间:2023-12-02 02:11:08 29 4
gpt4 key购买 nike

我有一个 WH_CALLWNDPROC Hook 代码,它处理 WM_INITDIALOG 消息以获取有关消息框的信息。我可以获得“消息”、“标题”、“按钮”,但无法获得“图标”信息。我正在尝试使用如下函数:

long getIcon(HWND hwnd) { // handle of messagebox dialog
HWND hlbl = GetDlgItem(hwnd,20);

wcout << "LABEL HWND: " << hlbl << endl;

if (hlbl != NULL) {
LRESULT r = SendMessage(hlbl,WM_GETICON,0,0);
return (long)r;
}

return 0;
}

函数总是返回 0。我用 MS Spy++ 检查过,我看到图标句柄是 0。获取图标的正确方法是什么?

最佳答案

消息框对话框中显示的图标是使用 STATIC 实现的使用 SS_ICON 样式进行控制。您可以通过发送该控件来获取图标句柄 STM_GETICON消息。

在您问题的代码中,名为hlbl 的变量实际上是包含图标的STATIC 控件的窗口句柄。我将其命名为 hIconWnd。更改名称后,获取图标的代码将如下所示:

HICON getIcon(HWND hwnd) { // handle of messagebox dialog
HWND hIconWnd = GetDlgItem(hwnd, 20);
if (hIconWnd != NULL) {
return (HICON)SendMessage(hIconWnd, STM_GETICON, 0, 0);
}
return NULL;
}

关于winapi - 如何使用 WinAPI 获取 MessageBox 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12780198/

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