/ 最近 .rdf 追記 編集 設定 本棚

脳log[20190202]



2019年02月02日 (土) returns the length in characters というとき、NULL 文字は文字にカウントされていない雰囲気(1)。GetWindowTextLength は(常にではないが) WM_GETTEXTLENGTH を生成すると書かれていて、WM_GETTEXTLENGTH の説明では NULL 文字を含まないと明記されている(2)。テキストがないとき 0 を返すということは、NULL 文字が勘定に入っていないことを示している(3)。1、2、3 のどれをとっても NULL 文字が数に入っていると考える理由にならない。厳密に言えば数に入っていることを否定する理由にもならないけども、傾きはある。■仕様は「確保するのに十分なサイズ」だとは言っていない。場合により実際より大きい長さが返ることがあるけど小さくなることはないので、この数字を当てにしてバッファのサイズを決めても良いと言っているだけ。NULL 末端文字配列を作りたい者が +1 するのは当人の都合であり責務である。■■■WM_GETTEXT メッセージのパラメータと戻り値における "including the terminating null character." と "not including the terminating null character." の混在は、一見すると注意力を試しミスを誘うようだけど、バッファとテキストの違いで理解できる。バッファのサイズを指定するとき、NULL 文字が勘定に入る。テキストの長さを指定するとき、NULL 文字が勘定に入らない。これが Windows API 全体で徹底されているかは知らないが、GetWindowTextLength には入っていないだろう。