
No.4
- 回答日時:
>えーと、sNumber.GetBuffer(10)の部分は、
>GetWindowTextで得られた文字を10文字分取ってくる
>とか言う解釈であってるでしょうか?
惜しいです。
str.GetBuffer(n)は、CString 型のオブジェクトからNULLで終端された文字列を「最低nバイトで、全体が入る大きさのバッファサイズで」取り出してきます。ですから、20バイト入った文字列で10と指定しても、20バイト分出てきます。(正確には終端の0も入るので21バイトですが…)
自動で長さが変わるなら最初から指定しなくてもいいのでは?という気もしますが、プログラム上伸び縮みしてもこの長さは超えないだろうという値を指定しておけば、メモリが最も効率的に使えるため敢えて指定させているのだろうと思います。(CString の中身を見ていないので間違っているかも知れませんが)
指定する値が小さすぎると、メモリの再割り当てが起きてメモリの断片が出来て効率が悪いし、大きすぎると使われない領域が出来て効率が悪いという事です。
まぁ、電卓プログラムに表示する桁数を何桁にするのか?によりますが、10はちょっと少ないかな。もう少し長めでもいいかも知れません。
まぁ、多少長くても短くても電卓プログラム程度では効率なんて殆ど関係しませんから、ご安心を。
No.3
- 回答日時:
整数部分を入力してるときは元の数を10倍して押されたボタンを足せばいい。
小数部分だったら何桁目まで入力してるかを変数に入れておいてそれで割ったのを足せばいい。
こんな感じで昔作ったことがあります。
多々改良しなければならない点(.を2回押されたときの対策とか)がありますが参考にはなるでしょう。
if(input=='.') {
dec=10;
return;
}elsif((input>='0')&&(input<='9'))
{
if(!dec){
n=n*10+input-'0';
}else{
n+=input-'0'/dec;
dec*=10;
}
return;
}
No.2
- 回答日時:
ダイアログベースのアプリケーションだと仮定して…、
先ず、ダイアログエディタでエディットボックスを右クリックしてメンバ変数の追加で、CEdit 型の変数を例えば m_cDisplay という形で追加します。
続いて、ダイアログエディタでボタンを配置し、Captionを「1」とかにして、右クリックのイベントハンドラの追加で、ハンドラを追加して、ハンドラとして
{
CString sNumber;
m_cDisplay.GetWindowText(sNumber);
sNumber.Format("%d", atoi(sNumber.GetBuffer(10))*10 + 1);
m_cDisplay.SetWindowText(sNumber);
}
とかいう形で書いていけば、所望の機能は実現できると思います。
この回答へのお礼
お礼日時:2005/02/27 22:27
ありがとうございます、出来ました。
えーと、sNumber.GetBuffer(10)の部分は、GetWindowTextで得られた文字を10文字分取ってくるとか言う解釈であってるでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ボタンの表示の色、フォントを...
-
リソースファイルとは・・・
-
ボタンの配置を変更したい
-
ダイアログの一部を半透明化す...
-
フォーム上のリストボックスに...
-
VC++ MFC エラーコード C2248 ...
-
C# ボタンコントロール内で文字...
-
vbscriptで、ファイル選択ダイ...
-
【VC++2005】ダイアログサイズ...
-
ダイアログのボタンが押された...
-
コンパイルエラー'CObject::ope...
-
MFCダイアログボックスを最前面...
-
ダイアログ最前面表示時の後ろ...
-
コンボボックスのドロップダウ...
-
Visual C++のダイアログ編集画...
-
vc++で電卓
-
メッセージボックスのボタン文...
-
ダイアログボックスで指定した...
-
ツールチップの表示
-
MFC ポップアップメニューのチ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスを大きくす...
-
フォーム上のリストボックスに...
-
ボタンの表示の色、フォントを...
-
ダイアログの上のテキストボッ...
-
リソースファイルとは・・・
-
ボタンの配置を変更したい
-
コンボボックスのドロップダウ...
-
'int' から 'LPCSTR' に変換で...
-
ダイアログボックスで指定した...
-
C# ボタンコントロール内で文字...
-
メッセージボックスのボタン文...
-
ダイアログの一部を半透明化す...
-
vbscriptで、ファイル選択ダイ...
-
【MFC】sleep関数を用いたモー...
-
【VC++2005】ダイアログサイズ...
-
Visual C++のダイアログ編集画...
-
MFCのリストボックスについて
-
エディットボックスの処理で画...
-
ダイアログを自分の好きな位置...
-
MFCダイアログボックスを最前面...
おすすめ情報