トップページ > 記事閲覧
GetDrawStringWidthToHandleについて
名前:yumetodo 日時: 2016/02/14 23:03

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関数 にも言えます
メンテ

Page: 1 |

Re: GetDrawStringWidthToHandleについて ( No.1 )
名前:管理人 日時:2016/02/15 03:33

すみません、GetDrawStringWidthToHandle の引数 StrLen は、隠し仕様として 『マイナスの値を渡すと内部で文字列長を調べてくれる』というものがありまして、 符号が無い size_t型に変更することはできません… ( 内部で同じ関数を使用している GetDrawExtendStringWidth と GetDrawExtendStringWidthToHandle も同じくです… ) strlenDx, strlen2Dx, MakeKeyInput 関数については size_t型に変更したものをこちらに アップしましたので、よろしければお使いください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ
Re: GetDrawStringWidthToHandleについて ( No.2 )
名前:yumetodo(解決済み) 日時:2016/02/18 16:46

>『マイナスの値を渡すと内部で文字列長を調べてくれる』というものがありまして !?なんとそんな機能が・・・。了解しました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存