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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) visual basic初心者です。 visual studioで電卓を作成しています。 実行時にテ 1 2023/02/08 00:18
- Java Javaで冪乗を表示したい 2 2022/06/08 00:08
- Visual Basic(VBA) Vba 電卓 一文字消すボタン 3 2022/05/04 13:40
- JavaScript javascript 文字列の最後から1文字削除したい 2 2022/06/02 11:22
- Visual Basic(VBA) Vba コマンドボタンイベントの共通化 2 2022/05/27 19:01
- バッテリー・充電器・電池 電卓のボタン電池種類について。 電卓の内部基板上に、ボタン電池を挟んでとめる電池ホルダーが、ハンダ接 4 2022/11/05 17:03
- 時計・電卓・電子辞書 ソーラー式で電池式の電卓です。 ボタン電池を入れ替えたのですが、こんな表示になります。 どうしたらま 5 2023/06/15 09:40
- 工学 非対称三相交流について 2 2022/07/06 00:36
- 工学 1つのタクトスイッチで複数の並列回路を閉じ、アースにつなげることができるスイッチはありますか。 2 2022/08/06 10:38
- バッテリー・充電器・電池 電卓の内部基板上に、ボタン電池を挟んでとめるホルダーが、ハンダ接合で付けられています。 使用したいボ 1 2022/11/05 08:17
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メッセージボックスを大きくす...
-
ダイアログの上のテキストボッ...
-
C# ボタンコントロール内で文字...
-
リソースファイルとは・・・
-
ダイアログの一部を半透明化す...
-
vbscriptで、ファイル選択ダイ...
-
コンボボックスのドロップダウ...
-
【VC++2005】ダイアログサイズ...
-
ボタンの配置を変更したい
-
フォーム上のリストボックスに...
-
c++でドル円変換のプラグラム...
-
vc++で電卓
-
VC++ MFC エラーコード C2248 ...
-
メッセージボックスのボタン文...
-
ショートカットキーをカスタマ...
-
ダイアログボックスで指定した...
-
SetWindowLong()でタイトルバー...
-
ダイアログの表示位置の保存
-
MFC ポップアップメニューのチ...
-
エクセルで作った新しいウイン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスを大きくす...
-
ボタンの表示の色、フォントを...
-
コンボボックスのドロップダウ...
-
ボタンの配置を変更したい
-
'int' から 'LPCSTR' に変換で...
-
ダイアログの上のテキストボッ...
-
リソースファイルとは・・・
-
C# ボタンコントロール内で文字...
-
vbscriptで、ファイル選択ダイ...
-
メッセージボックスのボタン文...
-
ダイアログの表示位置の保存
-
MFC ポップアップメニューのチ...
-
MFCダイアログボックスを最前面...
-
ダイアログボックスで指定した...
-
ダイアログにプレビュー表示
-
フォーム上のリストボックスに...
-
confirmダイアログの表示文字に...
-
VC++ MFC エラーコード C2248 ...
-
ダイアログのボタンが押された...
-
CButtonのBMP・アイコンの表示...
おすすめ情報