MZC4で無料Windowsアプリ開発

電卓を改造

戻る | 前へ | 次へ


今回は、ビルドを自動化して、2つの不具合を修正します。

MsgCrackを起動して、「CMakeLists」と入力して下さい。

[CMakeLists.txtを選択]

「CMakeLists.txt」が選択されましたね。Enterキーを押してコピーします。 コピーした内容で、MyProjectフォルダに「CMakeLists.txt」というテキストファイルを作成します。

次に、MSYS2で、CMakeをインストールします。MSYS2で「pacman -S cmake」を実行して、 英語の指示に従ってインストールして下さい。これでcmakeコマンドが使えるようになります。

次に、MSYS2でMyProjectフォルダに移動し、「cmake -G "MSYS Makefiles"」を実行して下さい。

[cmakeを実行]

エラーメッセージが表示されず、MyProjectフォルダの中に「Makefile」というファイルができたらOKです。 さらに、「make」を実行して下さい。

[makeを実行]

MyProjectフォルダの中に「build」フォルダができ、「build」フォルダの中に「MyProject.exe」ができればビルド成功です。

これで、「make」を実行するだけでビルドできるようになります。

次に不具合を修正しましょう。OnPsh1メソッドを次のように修正します。

    void OnPsh1(HWND hwnd)
    {
        MString str1 = GetDlgItemText(edt1);
        MString str2 = GetDlgItemText(edt2);
        double eValue1 = _tcstod(str1.c_str(), NULL);
        double eValue2 = _tcstod(str2.c_str(), NULL);
        double eValue3 = 0;

        HWND hCmb1 = GetDlgItem(hwnd, cmb1);
        INT iSel = ComboBox_GetCurSel(hCmb1);
        switch (iSel)
        {
        case 0: // "+"
            eValue3 = eValue1 + eValue2;
            break;
        case 1: // "-"
            eValue3 = eValue1 - eValue2;
            break;
        case 2: // "*"
            eValue3 = eValue1 * eValue2;
            break;
        case 3: // "/"
            if (eValue2 == 0)
            {
                SetDlgItemText(hwnd, edt3, TEXT("N/A"));
                return;
            }
            eValue3 = eValue1 / eValue2;
            break;
        }

        TCHAR szText[128];
        StringCchPrintf(szText, _countof(szText), TEXT("%g"), eValue3);
        SetDlgItemText(hwnd, edt3, szText);
    }

MStringはMZC4の文字列クラスであり、std::stringか、std::wstringのいずれかです。 _tcstodは、_UNICODEマクロが定義されているかどうかによって、 wcstodかstrtodに切り替わります。 wcstodとstrtodは、文字列をdoubleに変換するC言語の関数です。 割り算のとき、if文でちゃんとゼロをチェックさせます。 StringCchPrintfは、C言語のsprintfを安全にした関数です。 Cchは、「Count of CHaracters」すなわち「文字数」を表しています。 _countofは、配列内の要素の個数を取得するマクロです。

再び、makeしましょう。ビルドが成功すれば、電卓の完成です。

[電卓の完成]

ゼロで割っても問題はありません。

[ゼロで割る]


© 2018 片山博文MZ. All Rights Reserved.

戻る | 前へ | 次へ

inserted by FC2 system