如何调用user32.dll中的DialogBox()函数?

时间:2012-08-09 14:04:50

标签: winapi dllimport dialog user32

我正在尝试调用WinAPI函数DialogBox()。在Microsoft website上,此函数被指定为user32.dll。但是,当试图通过将其声明为从dll导入的函数来导入此函数时,链接器告诉我它不存在。然后我试图在C:\ Windows \ System32 \ user32.dll中找到具有依赖性walker的函数,但该函数不存在。 (我可以看到那里所有其他花哨的函数文字。)这可能是什么原因以及如何解决这个问题?

我正在使用D编程语言。标准库中的Windows模块不会导入WinAPI中的完整功能集。因此,我有时必须手工进口东西。

1 个答案:

答案 0 :(得分:5)

这是准确的,没有这样的功能。从WinUser32.h SDK头文件:

#define DialogBoxA(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
DialogBoxParamA(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)
#define DialogBoxW(hInstance, lpTemplate, hWndParent, lpDialogFunc) \
DialogBoxParamW(hInstance, lpTemplate, hWndParent, lpDialogFunc, 0L)

换句话说,C预处理器将函数重命名为DialogBoxParam。那是你唯一可以解雇的人。只需像宏一样传递零。