c - 为什么 C 中的 PAINTSTRUCT 是 PASCAL 中的 TpaintStruct?

标签 c winapi pascal

我正在查看从 C 移植到 PASCAL(win32 API)的应用程序,但无法理解为什么 C 中的 PAINTSTRUCT 类型会更改为 PASCAL 中的 TpaintStruct。

以下是可以看到的片段:

long FAR PASCAL ClientWndProc(HWND hwnd, UINT msg, UINT mp1, LONG mp2)
{
    static int cxClient, cyClient;
    HBITMAP hbm;
    BITMAP bm;
    PAINTSTRUCT ps;
    ...

变成

function ClientWndProc(hwnd: WinTypes.HWND; msg: Word; mp1: Word; mp2: Longint): Longint; export;

var
    hdc: WinTypes.HDC;
    hdcMem: WinTypes.HDC;
    hbm: WinTypes.HBITMAP;
    bm: TBITMAP;
    ps: TpaintStruct;
    ...

我需要自己移植一个应用程序。同样的事情是否也适用于 TEXTMETRIC 类型?我应该在 PASCAL 中将其称为 TtextMetric 吗?

最佳答案

Delphi(以及之前的 Turbo Pascal,IIRC)一直有在类型前加上 T 前缀的习惯,如 TStringListTButtonTCustomFormTDateTime 等等。

您可以找到已经在 Windows.pas 单元中为您声明的 TTextMetric(和 TPaintStruct),以及许多标准的 WinAPI功能。

(顺便说一句,WinTypes 已被弃用。它是 Delphi 1 中针对 16 位应用程序的旧遗留物,在 Delphi 的更高版本中自动被 Windows 取代。)

关于c - 为什么 C 中的 PAINTSTRUCT 是 PASCAL 中的 TpaintStruct?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8113746/

相关文章:

c - 程序不会终止或返回 scanf 函数错误

c++ - 如何在 C 编程中做到像 "with"(Pascal)?

algorithm - 棋盘上国王的最短路径

图像/表单到 Pascal/Delphi 代码转换器?

c - BackTracking 功能未按预期工作

c++ - 在 Xcode、mac 中找不到 gmp.h 文件错误

C:如何shmat一个结构?

winapi - Windows 上的 GlobalMemoryStatusEx() 结果错误

c++ - 一种确保系统托盘图标被删除的方法......保证

c++ - 当我尝试清理STL vector 时发生未处理的异常