◀ANSI版開発トップへ
  • 5751 ダイアログの文字列長制限がおかしいことがある
  • [5751] ダイアログの文字列長制限がおかしいことがある もか 2014年06月12日 21:17

    Windows XP/7で試した所、1.xのANSI版、2.xのANSIビルドともに
    EM_LIMITTEXTで文字列長制限をしていますが
    Unicode単位(全角=1,半角=1)になるようです。
    これは、MSの文書にComCtrl 6.0の仕様変更と書いてあります。

    さらにGetDlgItemText( hwndDlg, IDC_EDIT_TYPENAME, m_Types.m_szTypeName, _countof(m_Types.m_szTypeName) );
    のようになってますが、タイプ別設定の設定の名前に
    テキストテキストテキストテキストテキストテキストテキストテキス12345
    と名前を空にしてからコピペしてOKを押すと
    OSのバグなのかbuffに82+NULL Byte書き込まれてバッファオーバーランします。
    m_szTypeName[64]なので、もう一度タイプ別設定を開くと拡張子とつながって表示されます。
    入力する文字列によっては63文字+NULLだけ書き込まれることもあり再現性が悪いです。
    2.xの場合は全終了して再起動するとiniの読みこみでエラーになります。