Windowsアプリ開発_電卓
Visual C++で、一番初めに電卓を作ってみる。
「カシオ計算機 CASIO 学校専用電卓 12桁 AZ-26S」というものが標準らしいので、この電卓に近づける感じで作っていく。
電卓の使い方
電卓の機能はこのページで確認できる。
カシオの電卓シュミレーター - 電卓を体験しよう - 電卓 - CASIO
履歴と「GT(グランドトータル)」機能 - なにしろ電卓の使い方
Web電卓/計算機アプリ(消費税学習機能・スマホキー配列)| 電卓アプリ
他にも、Googleで「電卓」と調べればGoogle電卓がすぐに使えるし、「web電卓」という名のインストール不要のブラウザ電卓が複数ある様子。
使用した関数
https://msdn.microsoft.com/ja-jp/library/system%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
プログラミング!!
第6講 簡易電卓ソフト作りに挑戦しよう 第1話 簡易電卓Form1作り
上記サイトを参考に作成。
はっきりいって、自分で試行錯誤やるしかない。が、ロジック的な部分に苦戦した。
関数や電卓の動きについて調べるのにも時間を要した。その辺は自分の努力しだいとは違うので、上記サイトなどを参考にするとよいのではと思う。
また、一応下記にソースを記載するが、おそらく無駄な処理が多い。途中で少し飽きてきてしまったこともあり、表面的にしか動きを確認していないので、おそらく不具合が起こると思われる。(自己責任でお願いいたします。)あくまでも参考に。
大事なのは、電卓の作りたい機能をどうやって実現するのか自分で考えること、だと思う。
特に(自分も含め)慣れないうちは、効率や無駄など考えずに、同じ結果になることだけをまず追求すべきだと思う。実際、想定した動きになったときに喜びは大きい。
というのが、はじめてGUIアプリを今回作ってみての感想。
#pragma once namespace 電卓 { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; /// <summary> /// Form1 の概要 /// </summary> public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void) { InitializeComponent(); // //TODO: ここにコンストラクター コードを追加します // } static String^ opeFlg = ""; static String^ hourStr = ""; static String^ minStr = ""; static String^ secStr = ""; static double sum = 0; static int c1Flg = 1; static double mem = 0; static int mem1Flg = 0; static double gt = 0; static int tFlg = 0; static int hour = 0; static int min = 0; static int sec = 0; static long tSum = 0; static int tMinusFlg = 1; static int tInitFlg = 0; private: System::Windows::Forms::Label^ label1; protected: /// <summary> /// 使用中のリソースをすべてクリーンアップします。 /// </summary> ~Form1() { if (components) { delete components; } } private: System::Windows::Forms::TextBox^ textBox1; protected: private: System::Windows::Forms::Button^ button1; private: System::Windows::Forms::Button^ button2; private: System::Windows::Forms::Button^ button3; private: System::Windows::Forms::Button^ button4; private: System::Windows::Forms::Button^ button5; private: System::Windows::Forms::Button^ button6; private: System::Windows::Forms::Button^ button7; private: System::Windows::Forms::Button^ button8; private: System::Windows::Forms::Button^ button9; private: System::Windows::Forms::Button^ button10; private: System::Windows::Forms::Button^ button11; private: System::Windows::Forms::Button^ button12; private: System::Windows::Forms::Button^ button13; private: System::Windows::Forms::Button^ button14; private: System::Windows::Forms::Button^ button15; private: System::Windows::Forms::Button^ button16; private: System::Windows::Forms::Button^ button17; private: System::Windows::Forms::Button^ button18; private: System::Windows::Forms::Button^ button19; private: System::Windows::Forms::Button^ button20; private: System::Windows::Forms::Button^ button21; private: System::Windows::Forms::Button^ button22; private: System::Windows::Forms::Button^ button23; private: System::Windows::Forms::Button^ button24; private: System::Windows::Forms::Button^ button25; private: System::Windows::Forms::Button^ button26; private: System::Windows::Forms::Button^ button27; private: System::Windows::Forms::Button^ button28; private: System::Windows::Forms::Button^ button29; private: /// <summary> /// 必要なデザイナー変数です。 /// </summary> System::ComponentModel::Container ^components; #pragma region Windows Form Designer generated code /// <summary> /// デザイナー サポートに必要なメソッドです。このメソッドの内容を /// コード エディターで変更しないでください。 /// </summary> void InitializeComponent(void) { this->textBox1 = (gcnew System::Windows::Forms::TextBox()); this->button1 = (gcnew System::Windows::Forms::Button()); this->button2 = (gcnew System::Windows::Forms::Button()); this->button3 = (gcnew System::Windows::Forms::Button()); this->button4 = (gcnew System::Windows::Forms::Button()); this->button5 = (gcnew System::Windows::Forms::Button()); this->button6 = (gcnew System::Windows::Forms::Button()); this->button7 = (gcnew System::Windows::Forms::Button()); this->button8 = (gcnew System::Windows::Forms::Button()); this->button9 = (gcnew System::Windows::Forms::Button()); this->button10 = (gcnew System::Windows::Forms::Button()); this->button11 = (gcnew System::Windows::Forms::Button()); this->button12 = (gcnew System::Windows::Forms::Button()); this->button13 = (gcnew System::Windows::Forms::Button()); this->button14 = (gcnew System::Windows::Forms::Button()); this->button15 = (gcnew System::Windows::Forms::Button()); this->button16 = (gcnew System::Windows::Forms::Button()); this->button17 = (gcnew System::Windows::Forms::Button()); this->button18 = (gcnew System::Windows::Forms::Button()); this->button19 = (gcnew System::Windows::Forms::Button()); this->button20 = (gcnew System::Windows::Forms::Button()); this->button21 = (gcnew System::Windows::Forms::Button()); this->button22 = (gcnew System::Windows::Forms::Button()); this->button23 = (gcnew System::Windows::Forms::Button()); this->button24 = (gcnew System::Windows::Forms::Button()); this->button25 = (gcnew System::Windows::Forms::Button()); this->button26 = (gcnew System::Windows::Forms::Button()); this->button27 = (gcnew System::Windows::Forms::Button()); this->button28 = (gcnew System::Windows::Forms::Button()); this->button29 = (gcnew System::Windows::Forms::Button()); this->label1 = (gcnew System::Windows::Forms::Label()); this->SuspendLayout(); // // textBox1 // this->textBox1->Font = (gcnew System::Drawing::Font(L"MS UI Gothic", 18, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, static_cast<System::Byte>(128))); this->textBox1->Location = System::Drawing::Point(12, 12); this->textBox1->Name = L"textBox1"; this->textBox1->Size = System::Drawing::Size(234, 31); this->textBox1->TabIndex = 0; this->textBox1->TextAlign = System::Windows::Forms::HorizontalAlignment::Right; // // button1 // this->button1->Location = System::Drawing::Point(66, 230); this->button1->Name = L"button1"; this->button1->Size = System::Drawing::Size(42, 33); this->button1->TabIndex = 1; this->button1->Text = L"1"; this->button1->UseVisualStyleBackColor = true; this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click); // // button2 // this->button2->Location = System::Drawing::Point(112, 230); this->button2->Name = L"button2"; this->button2->Size = System::Drawing::Size(42, 33); this->button2->TabIndex = 2; this->button2->Text = L"2"; this->button2->UseVisualStyleBackColor = true; this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click); // // button3 // this->button3->Location = System::Drawing::Point(158, 230); this->button3->Name = L"button3"; this->button3->Size = System::Drawing::Size(42, 33); this->button3->TabIndex = 3; this->button3->Text = L"3"; this->button3->UseVisualStyleBackColor = true; this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click); // // button4 // this->button4->Location = System::Drawing::Point(66, 189); this->button4->Name = L"button4"; this->button4->Size = System::Drawing::Size(42, 33); this->button4->TabIndex = 4; this->button4->Text = L"4"; this->button4->UseVisualStyleBackColor = true; this->button4->Click += gcnew System::EventHandler(this, &Form1::button4_Click); // // button5 // this->button5->Location = System::Drawing::Point(112, 189); this->button5->Name = L"button5"; this->button5->Size = System::Drawing::Size(42, 33); this->button5->TabIndex = 5; this->button5->Text = L"5"; this->button5->UseVisualStyleBackColor = true; this->button5->Click += gcnew System::EventHandler(this, &Form1::button5_Click); // // button6 // this->button6->Location = System::Drawing::Point(158, 189); this->button6->Name = L"button6"; this->button6->Size = System::Drawing::Size(42, 33); this->button6->TabIndex = 6; this->button6->Text = L"6"; this->button6->UseVisualStyleBackColor = true; this->button6->Click += gcnew System::EventHandler(this, &Form1::button6_Click); // // button7 // this->button7->Location = System::Drawing::Point(66, 148); this->button7->Name = L"button7"; this->button7->Size = System::Drawing::Size(42, 33); this->button7->TabIndex = 7; this->button7->Text = L"7"; this->button7->UseVisualStyleBackColor = true; this->button7->Click += gcnew System::EventHandler(this, &Form1::button7_Click); // // button8 // this->button8->Location = System::Drawing::Point(112, 148); this->button8->Name = L"button8"; this->button8->Size = System::Drawing::Size(42, 33); this->button8->TabIndex = 8; this->button8->Text = L"8"; this->button8->UseVisualStyleBackColor = true; this->button8->Click += gcnew System::EventHandler(this, &Form1::button8_Click); // // button9 // this->button9->Location = System::Drawing::Point(158, 148); this->button9->Name = L"button9"; this->button9->Size = System::Drawing::Size(42, 33); this->button9->TabIndex = 9; this->button9->Text = L"9"; this->button9->UseVisualStyleBackColor = true; this->button9->Click += gcnew System::EventHandler(this, &Form1::button9_Click); // // button10 // this->button10->Location = System::Drawing::Point(12, 271); this->button10->Name = L"button10"; this->button10->Size = System::Drawing::Size(49, 33); this->button10->TabIndex = 10; this->button10->Text = L"0"; this->button10->UseVisualStyleBackColor = true; this->button10->Click += gcnew System::EventHandler(this, &Form1::button10_Click); // // button11 // this->button11->Location = System::Drawing::Point(66, 271); this->button11->Name = L"button11"; this->button11->Size = System::Drawing::Size(42, 33); this->button11->TabIndex = 11; this->button11->Text = L"00"; this->button11->UseVisualStyleBackColor = true; this->button11->Click += gcnew System::EventHandler(this, &Form1::button11_Click); // // button12 // this->button12->Location = System::Drawing::Point(112, 271); this->button12->Name = L"button12"; this->button12->Size = System::Drawing::Size(42, 33); this->button12->TabIndex = 12; this->button12->Text = L"."; this->button12->UseVisualStyleBackColor = true; this->button12->Click += gcnew System::EventHandler(this, &Form1::button12_Click); // // button13 // this->button13->Location = System::Drawing::Point(158, 271); this->button13->Name = L"button13"; this->button13->Size = System::Drawing::Size(42, 33); this->button13->TabIndex = 13; this->button13->Text = L"="; this->button13->UseVisualStyleBackColor = true; this->button13->Click += gcnew System::EventHandler(this, &Form1::button13_Click); // // button14 // this->button14->Location = System::Drawing::Point(204, 230); this->button14->Name = L"button14"; this->button14->Size = System::Drawing::Size(42, 74); this->button14->TabIndex = 14; this->button14->Text = L"+"; this->button14->UseVisualStyleBackColor = true; this->button14->Click += gcnew System::EventHandler(this, &Form1::button14_Click); // // button15 // this->button15->Location = System::Drawing::Point(204, 189); this->button15->Name = L"button15"; this->button15->Size = System::Drawing::Size(42, 33); this->button15->TabIndex = 15; this->button15->Text = L"-"; this->button15->UseVisualStyleBackColor = true; this->button15->Click += gcnew System::EventHandler(this, &Form1::button15_Click); // // button16 // this->button16->Location = System::Drawing::Point(204, 148); this->button16->Name = L"button16"; this->button16->Size = System::Drawing::Size(42, 33); this->button16->TabIndex = 16; this->button16->Text = L"×"; this->button16->UseVisualStyleBackColor = true; this->button16->Click += gcnew System::EventHandler(this, &Form1::button16_Click); // // button17 // this->button17->Location = System::Drawing::Point(204, 107); this->button17->Name = L"button17"; this->button17->Size = System::Drawing::Size(42, 33); this->button17->TabIndex = 17; this->button17->Text = L"÷"; this->button17->UseVisualStyleBackColor = true; this->button17->Click += gcnew System::EventHandler(this, &Form1::button17_Click); // // button18 // this->button18->Location = System::Drawing::Point(12, 107); this->button18->Name = L"button18"; this->button18->Size = System::Drawing::Size(42, 33); this->button18->TabIndex = 18; this->button18->Text = L"MC"; this->button18->UseVisualStyleBackColor = true; this->button18->Click += gcnew System::EventHandler(this, &Form1::button18_Click); // // button19 // this->button19->Location = System::Drawing::Point(66, 107); this->button19->Name = L"button19"; this->button19->Size = System::Drawing::Size(42, 33); this->button19->TabIndex = 19; this->button19->Text = L"MR"; this->button19->UseVisualStyleBackColor = true; this->button19->Click += gcnew System::EventHandler(this, &Form1::button19_Click); // // button20 // this->button20->Location = System::Drawing::Point(112, 107); this->button20->Name = L"button20"; this->button20->Size = System::Drawing::Size(42, 33); this->button20->TabIndex = 20; this->button20->Text = L"M-"; this->button20->UseVisualStyleBackColor = true; this->button20->Click += gcnew System::EventHandler(this, &Form1::button20_Click); // // button21 // this->button21->Location = System::Drawing::Point(158, 107); this->button21->Name = L"button21"; this->button21->Size = System::Drawing::Size(42, 33); this->button21->TabIndex = 21; this->button21->Text = L"M+"; this->button21->UseVisualStyleBackColor = true; this->button21->Click += gcnew System::EventHandler(this, &Form1::button21_Click); // // button22 // this->button22->Location = System::Drawing::Point(12, 148); this->button22->Name = L"button22"; this->button22->Size = System::Drawing::Size(42, 33); this->button22->TabIndex = 22; this->button22->Text = L"+/-"; this->button22->UseVisualStyleBackColor = true; this->button22->Click += gcnew System::EventHandler(this, &Form1::button22_Click); // // button23 // this->button23->Location = System::Drawing::Point(12, 189); this->button23->Name = L"button23"; this->button23->Size = System::Drawing::Size(42, 33); this->button23->TabIndex = 23; this->button23->Text = L"AC"; this->button23->UseVisualStyleBackColor = true; this->button23->Click += gcnew System::EventHandler(this, &Form1::button23_Click); // // button24 // this->button24->Location = System::Drawing::Point(12, 230); this->button24->Name = L"button24"; this->button24->Size = System::Drawing::Size(42, 33); this->button24->TabIndex = 24; this->button24->Text = L"C"; this->button24->UseVisualStyleBackColor = true; this->button24->Click += gcnew System::EventHandler(this, &Form1::button24_Click); // // button25 // this->button25->Location = System::Drawing::Point(12, 66); this->button25->Name = L"button25"; this->button25->Size = System::Drawing::Size(49, 33); this->button25->TabIndex = 25; this->button25->Text = L"H/M/S"; this->button25->UseVisualStyleBackColor = true; this->button25->Click += gcnew System::EventHandler(this, &Form1::button25_Click); // // button26 // this->button26->Location = System::Drawing::Point(66, 66); this->button26->Name = L"button26"; this->button26->Size = System::Drawing::Size(42, 33); this->button26->TabIndex = 26; this->button26->Text = L"%"; this->button26->UseVisualStyleBackColor = true; this->button26->Click += gcnew System::EventHandler(this, &Form1::button26_Click); // // button27 // this->button27->Location = System::Drawing::Point(112, 66); this->button27->Name = L"button27"; this->button27->Size = System::Drawing::Size(42, 33); this->button27->TabIndex = 27; this->button27->Text = L"→"; this->button27->UseVisualStyleBackColor = true; this->button27->Click += gcnew System::EventHandler(this, &Form1::button27_Click); // // button28 // this->button28->Location = System::Drawing::Point(158, 66); this->button28->Name = L"button28"; this->button28->Size = System::Drawing::Size(42, 33); this->button28->TabIndex = 28; this->button28->Text = L"√"; this->button28->UseVisualStyleBackColor = true; this->button28->Click += gcnew System::EventHandler(this, &Form1::button28_Click); // // button29 // this->button29->Location = System::Drawing::Point(204, 66); this->button29->Name = L"button29"; this->button29->Size = System::Drawing::Size(42, 33); this->button29->TabIndex = 29; this->button29->Text = L"GT"; this->button29->UseVisualStyleBackColor = true; this->button29->Click += gcnew System::EventHandler(this, &Form1::button29_Click); // // label1 // this->label1->AutoSize = true; this->label1->BackColor = System::Drawing::Color::White; this->label1->Font = (gcnew System::Drawing::Font(L"MS UI Gothic", 9, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point, static_cast<System::Byte>(128))); this->label1->Location = System::Drawing::Point(13, 13); this->label1->Name = L"label1"; this->label1->Size = System::Drawing::Size(0, 12); this->label1->TabIndex = 30; // // Form1 // this->AutoScaleDimensions = System::Drawing::SizeF(6, 12); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(258, 315); this->Controls->Add(this->label1); this->Controls->Add(this->button29); this->Controls->Add(this->button28); this->Controls->Add(this->button27); this->Controls->Add(this->button26); this->Controls->Add(this->button25); this->Controls->Add(this->button24); this->Controls->Add(this->button23); this->Controls->Add(this->button22); this->Controls->Add(this->button21); this->Controls->Add(this->button20); this->Controls->Add(this->button19); this->Controls->Add(this->button18); this->Controls->Add(this->button17); this->Controls->Add(this->button16); this->Controls->Add(this->button15); this->Controls->Add(this->button14); this->Controls->Add(this->button13); this->Controls->Add(this->button12); this->Controls->Add(this->button11); this->Controls->Add(this->button10); this->Controls->Add(this->button9); this->Controls->Add(this->button8); this->Controls->Add(this->button7); this->Controls->Add(this->button6); this->Controls->Add(this->button5); this->Controls->Add(this->button4); this->Controls->Add(this->button3); this->Controls->Add(this->button2); this->Controls->Add(this->button1); this->Controls->Add(this->textBox1); this->Name = L"Form1"; this->Text = L"Form1"; this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load); this->ResumeLayout(false); this->PerformLayout(); } #pragma endregion private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { textBox1->Text = sum.ToString(); } // 「1」ボタン private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { if(tFlg == 0){ if(c1Flg == 1){ c1Flg = 0; textBox1->Text = L"1"; }else{ textBox1->Text += L"1"; } if(opeFlg == "="){ sum = 0; opeFlg = ""; } if(mem1Flg == 1){ sum = 0; mem1Flg = 0; } }else if(tFlg == 1 || tFlg == 4){ minStr += L"1"; // 初回なら「001」、2回目は「011」、2回目は「111」になる minStr = minStr->Substring(1); // インデックス「1」(2文字目)から2文字切り出し min = int::Parse(minStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 2 || tFlg == 5){ secStr += L"1"; // 初回なら「001」、2回目は「011」、2回目は「111」になる secStr = secStr->Substring(1); // インデックス「1」(2文字目)から2文字切り出し sec = int::Parse(secStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 3 && opeFlg != ""){ // 時 if(hourStr->Length > 5){ return; } if(tInitFlg == 1){ hour = 0; min = 0; sec = 0; minStr = L"00"; secStr = L"00"; tInitFlg = 0; } if(c1Flg == 1){ c1Flg = 0; hourStr = L"1"; }else{ if(hourStr->Length <= 3){ hourStr += L"1"; } } hour = int::Parse(hourStr); textBox1->Text = hourStr + L"-" + minStr + L"'" + secStr + L"''"; } } // 「2」ボタン private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { if(tFlg == 0){ if(c1Flg == 1){ c1Flg = 0; textBox1->Text = L"2"; }else{ textBox1->Text += L"2"; } if(opeFlg == "="){ sum = 0; opeFlg = ""; } if(mem1Flg == 1){ sum = 0; mem1Flg = 0; } }else if(tFlg == 1 || tFlg == 4){ minStr += L"2"; minStr = minStr->Substring(1); min = int::Parse(minStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 2 || tFlg == 5){ secStr += L"2"; secStr = secStr->Substring(1); sec = int::Parse(secStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 3 && opeFlg != ""){ // 時 if(hourStr->Length > 5){ return; } if(tInitFlg == 1){ hour = 0; min = 0; sec = 0; minStr = L"00"; secStr = L"00"; tInitFlg = 0; } if(c1Flg == 1){ c1Flg = 0; hourStr = L"2"; }else{ if(hourStr->Length <= 3){ hourStr += L"2"; } } hour = int::Parse(hourStr); textBox1->Text = hourStr + L"-" + minStr + L"'" + secStr + L"''"; } } // 「3」ボタン private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) { if(tFlg == 0){ if(c1Flg == 1){ c1Flg = 0; textBox1->Text = L"3"; }else{ textBox1->Text += L"3"; } if(opeFlg == "="){ sum = 0; opeFlg = ""; } if(mem1Flg == 1){ sum = 0; mem1Flg = 0; } }else if(tFlg == 1 || tFlg == 4){ minStr += L"3"; minStr = minStr->Substring(1); min = int::Parse(minStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 2 || tFlg == 5){ secStr += L"3"; secStr = secStr->Substring(1); sec = int::Parse(secStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 3 && opeFlg != ""){ // 時 if(hourStr->Length > 5){ return; } if(tInitFlg == 1){ hour = 0; min = 0; sec = 0; minStr = L"00"; secStr = L"00"; tInitFlg = 0; } if(c1Flg == 1){ c1Flg = 0; hourStr = L"3"; }else{ if(hourStr->Length <= 3){ hourStr += L"3"; } } hour = int::Parse(hourStr); textBox1->Text = hourStr + L"-" + minStr + L"'" + secStr + L"''"; } } // 「4」ボタン private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) { if(tFlg == 0){ if(c1Flg == 1){ c1Flg = 0; textBox1->Text = L"4"; }else{ textBox1->Text += L"4"; } if(opeFlg == "="){ sum = 0; opeFlg = ""; } if(mem1Flg == 1){ sum = 0; mem1Flg = 0; } }else if(tFlg == 1 || tFlg == 4){ minStr += L"4"; minStr = minStr->Substring(1); min = int::Parse(minStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 2 || tFlg == 5){ secStr += L"4"; secStr = secStr->Substring(1); sec = int::Parse(secStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 3 && opeFlg != ""){ // 時 if(hourStr->Length > 5){ return; } if(tInitFlg == 1){ hour = 0; min = 0; sec = 0; minStr = L"00"; secStr = L"00"; tInitFlg = 0; } if(c1Flg == 1){ c1Flg = 0; hourStr = L"4"; }else{ if(hourStr->Length <= 3){ hourStr += L"4"; } } hour = int::Parse(hourStr); textBox1->Text = hourStr + L"-" + minStr + L"'" + secStr + L"''"; } } // 「5」ボタン private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e) { if(tFlg == 0){ if(c1Flg == 1){ c1Flg = 0; textBox1->Text = L"5"; }else{ textBox1->Text += L"5"; } if(opeFlg == "="){ sum = 0; opeFlg = ""; } if(mem1Flg == 1){ sum = 0; mem1Flg = 0; } }else if(tFlg == 1 || tFlg == 4){ minStr += L"5"; minStr = minStr->Substring(1); min = int::Parse(minStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 2 || tFlg == 5){ secStr += L"5"; secStr = secStr->Substring(1); sec = int::Parse(secStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 3 && opeFlg != ""){ // 時 if(hourStr->Length > 5){ return; } if(tInitFlg == 1){ hour = 0; min = 0; sec = 0; minStr = L"00"; secStr = L"00"; tInitFlg = 0; } if(c1Flg == 1){ c1Flg = 0; hourStr = L"5"; }else{ if(hourStr->Length <= 3){ hourStr += L"5"; } } hour = int::Parse(hourStr); textBox1->Text = hourStr + L"-" + minStr + L"'" + secStr + L"''"; } } // 「6」ボタン private: System::Void button6_Click(System::Object^ sender, System::EventArgs^ e) { if(tFlg == 0){ if(c1Flg == 1){ c1Flg = 0; textBox1->Text = L"6"; }else{ textBox1->Text += L"6"; } if(opeFlg == "="){ sum = 0; opeFlg = ""; } if(mem1Flg == 1){ sum = 0; mem1Flg = 0; } }else if(tFlg == 1 || tFlg == 4){ minStr += L"6"; minStr = minStr->Substring(1); min = int::Parse(minStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 2 || tFlg == 5){ secStr += L"6"; secStr = secStr->Substring(1); sec = int::Parse(secStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 3 && opeFlg != ""){ // 時 if(hourStr->Length > 5){ return; } if(tInitFlg == 1){ hour = 0; min = 0; sec = 0; minStr = L"00"; secStr = L"00"; tInitFlg = 0; } if(c1Flg == 1){ c1Flg = 0; hourStr = L"6"; }else{ if(hourStr->Length <= 3){ hourStr += L"6"; } } hour = int::Parse(hourStr); textBox1->Text = hourStr + L"-" + minStr + L"'" + secStr + L"''"; } } // 「7」ボタン private: System::Void button7_Click(System::Object^ sender, System::EventArgs^ e) { if(tFlg == 0){ if(c1Flg == 1){ c1Flg = 0; textBox1->Text = L"7"; }else{ textBox1->Text += L"7"; } if(opeFlg == "="){ sum = 0; opeFlg = ""; } if(mem1Flg == 1){ sum = 0; mem1Flg = 0; } }else if(tFlg == 1 || tFlg == 4){ minStr += L"7"; minStr = minStr->Substring(1); min = int::Parse(minStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 2 || tFlg == 5){ secStr += L"7"; secStr = secStr->Substring(1); sec = int::Parse(secStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 3 && opeFlg != ""){ // 時 if(hourStr->Length > 5){ return; } if(tInitFlg == 1){ hour = 0; min = 0; sec = 0; minStr = L"00"; secStr = L"00"; tInitFlg = 0; } if(c1Flg == 1){ c1Flg = 0; hourStr = L"7"; }else{ if(hourStr->Length <= 3){ hourStr += L"7"; } } hour = int::Parse(hourStr); textBox1->Text = hourStr + L"-" + minStr + L"'" + secStr + L"''"; } } // 「8」ボタン private: System::Void button8_Click(System::Object^ sender, System::EventArgs^ e) { if(tFlg == 0){ if(c1Flg == 1){ c1Flg = 0; textBox1->Text = L"8"; }else{ textBox1->Text += L"8"; } if(opeFlg == "="){ sum = 0; opeFlg = ""; } if(mem1Flg == 1){ sum = 0; mem1Flg = 0; } }else if(tFlg == 1 || tFlg == 4){ minStr += L"8"; minStr = minStr->Substring(1); min = int::Parse(minStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 2 || tFlg == 5){ secStr += L"8"; secStr = secStr->Substring(1); sec = int::Parse(secStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 3 && opeFlg != ""){ // 時 if(hourStr->Length > 5){ return; } if(tInitFlg == 1){ hour = 0; min = 0; sec = 0; minStr = L"00"; secStr = L"00"; tInitFlg = 0; } if(c1Flg == 1){ c1Flg = 0; hourStr = L"8"; }else{ if(hourStr->Length <= 3){ hourStr += L"8"; } } hour = int::Parse(hourStr); textBox1->Text = hourStr + L"-" + minStr + L"'" + secStr + L"''"; } } // 「9」ボタン private: System::Void button9_Click(System::Object^ sender, System::EventArgs^ e) { if(tFlg == 0){ if(c1Flg == 1){ c1Flg = 0; textBox1->Text = L"9"; }else{ textBox1->Text += L"9"; } if(opeFlg == "="){ sum = 0; opeFlg = ""; } if(mem1Flg == 1){ sum = 0; mem1Flg = 0; } }else if(tFlg == 1 || tFlg == 4){ minStr += L"9"; // 初回なら「009」になる minStr = minStr->Substring(1); // インデックス「1」から2文字 min = int::Parse(minStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 2 || tFlg == 5){ secStr += L"9"; // 初回なら「009」になる secStr = secStr->Substring(1); // インデックス「1」から2文字 sec = int::Parse(secStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 3 && opeFlg != ""){ // 時 if(hourStr->Length > 5){ return; } if(tInitFlg == 1){ hour = 0; min = 0; sec = 0; minStr = L"00"; secStr = L"00"; tInitFlg = 0; } if(c1Flg == 1){ c1Flg = 0; hourStr = L"9"; }else{ if(hourStr->Length <= 3){ hourStr += L"9"; } } hour = int::Parse(hourStr); textBox1->Text = hourStr + L"-" + minStr + L"'" + secStr + L"''"; } } // 「0」ボタン private: System::Void button10_Click(System::Object^ sender, System::EventArgs^ e) { if(textBox1->Text != "0" && c1Flg != 1 && tFlg == 0){ textBox1->Text += L"0"; }else if(tFlg == 1 || tFlg == 4){ minStr += L"0"; // 初回なら「009」になる minStr = minStr->Substring(1); // インデックス「1」から2文字 min = int::Parse(minStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 2 || tFlg == 5){ secStr += L"0"; // 初回なら「009」になる secStr = secStr->Substring(1); // インデックス「1」から2文字 sec = int::Parse(secStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 3 && opeFlg != ""){ // 時 if(hourStr->Length > 5){ return; } if(tInitFlg == 1){ hour = 0; min = 0; sec = 0; minStr = L"00"; secStr = L"00"; tInitFlg = 0; } if(c1Flg == 1){ }else{ if(hourStr->Length <= 3){ hourStr += L"0"; } } hour = int::Parse(hourStr); textBox1->Text = hourStr + L"-" + minStr + L"'" + secStr + L"''"; } } // 「00」ボタン private: System::Void button11_Click(System::Object^ sender, System::EventArgs^ e) { if(textBox1->Text != "0" && c1Flg != 1 && tFlg == 0){ textBox1->Text += L"00"; }else if(tFlg == 1 || tFlg == 4){ minStr += L"00"; // 初回なら「009」になる minStr = minStr->Substring(1); // インデックス「1」から2文字 min = int::Parse(minStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 2 || tFlg == 5){ secStr += L"00"; // 初回なら「009」になる secStr = secStr->Substring(1); // インデックス「1」から2文字 sec = int::Parse(secStr); textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; }else if(tFlg == 3 && opeFlg != ""){ // 時 if(hourStr->Length > 5){ return; } if(tInitFlg == 1){ hour = 0; min = 0; sec = 0; minStr = L"00"; secStr = L"00"; tInitFlg = 0; } if(c1Flg == 1){ }else{ if(hourStr->Length <= 2){ hourStr += L"00"; } } hour = int::Parse(hourStr); textBox1->Text = hourStr + L"-" + minStr + L"'" + secStr + L"''"; } } // 「.」ボタン private: System::Void button12_Click(System::Object^ sender, System::EventArgs^ e) { if((textBox1->Text)->Contains(".") == false && tFlg == 0){ textBox1->Text += L"."; c1Flg = 0; } } // 「=」ボタン private: System::Void button13_Click(System::Object^ sender, System::EventArgs^ e) { if(tFlg == 0){ calc(double::Parse(textBox1->Text)); gt += sum; } else { tcalc((hour * 60 + min) * 60 + sec); opeFlg = L"="; } } // 「+」ボタン private: System::Void button14_Click(System::Object^ sender, System::EventArgs^ e) { if(c1Flg != 1 && tFlg == 0){ calc(double::Parse(textBox1->Text)); } opeFlg = L"+"; } // 「-」ボタン private: System::Void button15_Click(System::Object^ sender, System::EventArgs^ e) { if(c1Flg != 1 && tFlg == 0){ calc(double::Parse(textBox1->Text)); } opeFlg = L"-"; } // 「×」ボタン private: System::Void button16_Click(System::Object^ sender, System::EventArgs^ e) { if(c1Flg != 1 && tFlg == 0){ calc(double::Parse(textBox1->Text)); opeFlg = L"*"; } } // 「÷」ボタン private: System::Void button17_Click(System::Object^ sender, System::EventArgs^ e) { if(c1Flg != 1 && tFlg == 0){ calc(double::Parse(textBox1->Text)); opeFlg = L"/"; } } // calc関数 private: void calc(double num) { if(opeFlg == ""){ sum = num; }else if(opeFlg == "+"){ sum += num; }else if(opeFlg == "-"){ sum -= num; }else if(opeFlg == "*"){ sum *= num; }else if(opeFlg == "/"){ sum /= num; } c1Flg = 1; textBox1->Text = sum.ToString(); } private: void tcalc(long num) { if(opeFlg == ""){ // 想定しない }else if(opeFlg == "+"){ tSum += num; }else if(opeFlg == "-"){ if(tSum>=num){ tSum -= num; }else{ num -= tSum; tSum = num; tMinusFlg = -1; } } sec = tSum % 60; hour = tSum / 3600 * tMinusFlg; min = (tSum - (hour * 3600)) / 60; hourStr = hour.ToString(); minStr = min.ToString(); secStr = sec.ToString(); // c1Flg = 1; textBox1->Text = hourStr + L"-" + minStr + L"'" + secStr + L"''"; } // 「MC」ボタン private: System::Void button18_Click(System::Object^ sender, System::EventArgs^ e) { mem = 0; label1->Text = ""; mem1Flg = 0; gt = 0; hourStr = ""; minStr = ""; secStr = ""; tFlg = 0; hour = 0; min = 0; sec = 0; tSum = 0; tMinusFlg = 1; tInitFlg = 0; } // 「MR」ボタン private: System::Void button19_Click(System::Object^ sender, System::EventArgs^ e) { textBox1->Text = mem.ToString(); } // 「M-」ボタン private: System::Void button20_Click(System::Object^ sender, System::EventArgs^ e) { calc(double::Parse(textBox1->Text)); mem -= sum; label1->Text = L"M"; mem1Flg = 1; } // 「M+」ボタン private: System::Void button21_Click(System::Object^ sender, System::EventArgs^ e) { calc(double::Parse(textBox1->Text)); mem += sum; label1->Text = L"M"; mem1Flg = 1; } // 「+/-」ボタン private: System::Void button22_Click(System::Object^ sender, System::EventArgs^ e) { } // 「AC」ボタン private: System::Void button23_Click(System::Object^ sender, System::EventArgs^ e) { clear(); } // 「C」ボタン private: System::Void button24_Click(System::Object^ sender, System::EventArgs^ e) { textBox1->Text = L"0"; c1Flg = 1; } // clear関数 private: void clear() { sum = 0; opeFlg = ""; textBox1->Text = L"0"; c1Flg = 1; } // 「H/M/S」ボタン private: System::Void button25_Click(System::Object^ sender, System::EventArgs^ e) { if(tFlg == 0){ // 時 if((textBox1->Text)->Length > 5){ return; } hourStr = textBox1->Text; minStr = L"00"; secStr = L"00"; hour = int::Parse(textBox1->Text); tFlg = 1; }else if(tFlg == 1){ // 分 tFlg = 2; }else if(tFlg == 2){ // 秒 tFlg = 3; tInitFlg = 1; c1Flg = 1; tSum = (hour * 60 + min) * 60 + sec; }else if(tFlg == 3){ if(c1Flg == 0){ tFlg = 4; } }else if(tFlg == 4){ // 分 tFlg = 5; }else if(tFlg == 5){ // 秒 tFlg = 6; } textBox1->Text = hour.ToString() + L"-" + minStr + L"'" + secStr + L"''"; } // 「%」ボタン private: System::Void button26_Click(System::Object^ sender, System::EventArgs^ e) { textBox1->Text = (double::Parse(textBox1->Text) / 100).ToString(); } // 「→」ボタン private: System::Void button27_Click(System::Object^ sender, System::EventArgs^ e) { int len = (textBox1->Text)->Length; String^ tmpStr = (textBox1->Text)->Substring(0, len - 1); if(tmpStr == ""){ textBox1->Text = L"0"; } else { textBox1->Text = tmpStr; } if(tmpStr = "0"){ c1Flg = 1; } } // 「√」ボタン private: System::Void button28_Click(System::Object^ sender, System::EventArgs^ e) { textBox1->Text = (Math::Sqrt(double::Parse(textBox1->Text))).ToString(); } // 「GT」ボタン private: System::Void button29_Click(System::Object^ sender, System::EventArgs^ e) { textBox1->Text = gt.ToString(); } }; }
20150518現在の作成画像
上記を作り直して・・・
20150524現在(完成?)の画像
※なんとか時間計算もできるようにした