属性がES_NUMBER
の編集ボックスがあります。ボタンのプレスで、編集ボックスの値が2〜15(両端を含む)かどうかを確認しようとしています。ロジックテスト用のWinAPIの編集ウィンドウからintを正しく抽出する
StackOverflowでチェックしたところ、atoi()
ではなくstrtol()
を使用するよう強く推奨されていましたが、どちらも正常に必要なチェックを実行できませんでした。現在のコードを下に見てください。
char buff[1024];
GetWindowText(hWndNoOfTeams, (LPWSTR)buff, 1024);
int i;
i = strtol(buff,NULL,10);
if ((i > 1)&&(i < 16)){
MessageBox(hWnd, (LPCWSTR)buff, L"MSGBOX", MB_OK);
}else{
MessageBox(hWnd, L"The number of teams must be greater than 1 and less than 16.", L"MSGBOX", MB_OK);
};
このテストは、0と9の間で正しく動作しますが、それ以上の場合、常に2番目のメッセージボックスが表示されます。文字列から整数を抽出する方法に問題があるのは疑いがあります。すべての値についてはbuff
配列に正しい値が含まれています。
私は明らかに明白でなければならない何かを逃した場合は謝罪します。