GetDrawStringWidthToHandle関数のプロトタイプ宣言は
int GetDrawStringWidthToHandle(const TCHAR *String, int StrLen, int FontHandle, int VerticalFlag = FALSE );
なのですが、第二引数、int StrLenはintではなくsize_t、少なくともunsignedであるべきではないでしょうか?
なぜならば、
strlen関数の戻り値はsize_t型だからです。
一般にsize_t型はunsigendなため、signed<->unsignedの変換が生じることになり、好ましく無いです。
また、例えばVisual StudioではWarning Levelを4にすると警告が出ます。
もちろんユーザーが範囲チェックを行いかつキャストすればいいのですが、面倒極まりないです。
ライブラリ側で対処していただくことはできませんか?
なおこの話は
GetDrawStringWidth関数、
GetDrawExtendStringWidth関数、GetDrawExtendStringWidthToHandle関数、
strlenDx関数、strlen2Dx関数、MakeKeyInput関数
にも言えます