CreateWindow 不再存在于 user32.dll 中

Pau*_*aul 2 delphi winapi windows-10

我发现,CreateWindowACreateWindowW不存在user32.dll的Windows 10的文件了。你有没有看到微软关于这个的任何公告?

当我注意到在 Delphi 的Winapi.Windows文件中它们被模拟时,我发现了这一点。

更新

似乎我忽略了在 Delphi 6 中这些函数也是使用CreateWindowEx. 可能大卫是对的,这些函数在 Win16 中只有 DLL 入口点。它们绝对不在 Windows XP SP3 中。

Dav*_*nan 10

恐怕你的问题的前提是不正确的。Delphi 6Windows单元不链接到CreateWindowWCreateWindowA。以下是这些功能的实际实现方式:

function CreateWindow(lpClassName: PChar; lpWindowName: PChar;
  dwStyle: DWORD; X, Y, nWidth, nHeight: Integer; hWndParent: HWND;
  hMenu: HMENU; hInstance: HINST; lpParam: Pointer): HWND;
begin
  Result := CreateWindowEx(0, lpClassName, lpWindowName, dwStyle, X, Y,
    nWidth, nHeight, hWndPar, hMenu, hInstance, lpParam);
end;
function CreateWindowA(lpClassName: PAnsiChar; lpWindowName: PAnsiChar;
  dwStyle: DWORD; X, Y, nWidth, nHeight: Integer; hWndParent: HWND;
  hMenu: HMENU; hInstance: HINST; lpParam: Pointer): HWND;
begin
  Result := CreateWindowExA(0, lpClassName, lpWindowName, dwStyle, X, Y,
    nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
end;
function CreateWindowW(lpClassName: PWideChar; lpWindowName: PWideChar;
  dwStyle: DWORD; X, Y, nWidth, nHeight: Integer; hWndParent: HWND;
  hMenu: HMENU; hInstance: HINST; lpParam: Pointer): HWND;
begin
  Result := CreateWindowExW(0, lpClassName, lpWindowName, dwStyle, X, Y,
    nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam);
end;
Run Code Online (Sandbox Code Playgroud)

如您所见,这反映了它们在 Windows 头文件中的实现,如tenfour 的回答所示

如果您的代码由于尝试导入 namedCreateWindowWCreateWindowAfrom函数而失败user32,那么问题并没有user32改变,而是您的代码完全错误地期望具有这些名称的函数存在。


ten*_*our 7

CreateWindowA是 的宏CreateWindowExACreateWindowW是 的宏CreateWindowExW,两者都存在于 Windows 10 上的 user32.dll 中。

来自winuser.h

#define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y,\
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y,\
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
#define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y,\
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y,\
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
Run Code Online (Sandbox Code Playgroud)