IsDialogMessageA 函数 (winuser.h)

确定消息是否适用于指定的对话框,如果是,则处理该消息。

语法

BOOL IsDialogMessageA(
  [in] HWND  hDlg,
  [in] LPMSG lpMsg
);

参数

[in] hDlg

类型:HWND

对话框的句柄。

[in] lpMsg

类型: LPMSG

指向包含要检查的消息的 MSG 结构的指针。

返回值

类型: BOOL

如果消息已处理,则返回值为非零值。

如果消息尚未处理,则返回值为零。

注解

尽管 IsDialogMessage 函数适用于无模式对话框,但你可以将其用于包含控件的任何窗口,使窗口能够提供与对话框中使用的相同键盘选择。

当 IsDialogMessage 处理消息时,它会检查键盘消息并将其转换为相应对话框的选择。 例如,按 TAB 键时,选择下一个控件或控件组,按下向下键时,选择组中的下一个控件。

由于 IsDialogMessage 函数执行所有必需的消息转换和调度,因此 IsDialogMessage 处理的消息不得传递到 TranslateMessageDispatchMessage 函数。

IsDialogMessageWM_GETDLGCODE 消息发送到对话框过程,以确定应处理哪些键。

IsDialogMessage 可以将 DM_GETDEFIDDM_SETDEFID 消息发送到窗口。 这些消息在 Winuser.h 头文件中定义为 WM_USER,WM_USER + 1,因此,如果应用程序定义的消息具有相同的值,则可能存在冲突。

注意

winuser.h 标头将 IsDialogMessage 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll
API 集 ext-ms-win-ntuser-dialogbox-l1-1-3 (在 Windows 10 版本 10.0.14393 中引入)

请参阅

概念性

DM_GETDEFID

DM_SETDEFID

对话框

DispatchMessage

味精

引用

TranslateMessage

WM_GETDLGCODE

WM_USER