TTextMetric und GetTextMetrics



  • Leider kann ich aktuell meine Hilfe nicht mehr nutzen, daher würde ich mich gern erkundigen was der Unterschied zwischen TTextMetric und TEXTMETRIC ist.

    Ich ich habe diesen Code:

    TTextMetric SysMetrics;
    DC = GetDC(NULL);
    GetTextMetrics(DC, &SysMetrics); // Fehlerzeile
    

    Compiler sagt:

    [BCC32 Fehler]: E2034 Konvertierung von 'tagTEXTMETRICW *' nach 'tagTEXTMETRICA *' nicht möglich
    [BCC32 Fehler]: E2034 Konvertierung von 'tagTEXTMETRICW *' nach 'tagTEXTMETRICA *' nicht möglich

    Tausche ich TTextMetric mit TEXTMETRIC aus, dann funktioniert alles. Was mache ich falsch?



  • Du verwendest C++Builder >=2009, daher unterstützen RTL und VCL Unicode. TTextMetric ist ein VCL-Alias für TEXTMETRIC[A|W], in der Unicode-VCL entsprechend für *W. Allerdings hast du das TCHAR-Mapping auf "char" gestellt, weshalb GetTextMetrics ein Alias für die ANSI-Variante GetTextMetricsA ist.

    Du könntest entweder das TCHAR-Mapping auf wchar_t stellen - dann verweisen alle TCHAR-Makros aus der WinAPI auf die Unicode-Variante (also GetTextMetrics auf GetTextMetricsW und TEXTMETRIC auf TEXTMETRICW) -, oder du könntest TEXTMETRIC anstelle von TTextMetric oder aber GetTextMetricsW anstelle von GetTextMetrics benutzen.



  • Danke für diese gut umfassende Antwort. 🙂


Anmelden zum Antworten