前提
C++でMFCアプリケーションを勉強し始めた初心者です。
実現したいこと
・エディットコントロールに入力された数値を変数に受け取り、ボタンイベントの関数内で計算に利用したい。
・身長と体重のエディットコントロールに入力値がある時のみ、ボタンを有効にする。
発生している問題・エラーメッセージ
エディットコントロールに追加する変数をdouble型で定義すれば、ボタンイベント内での計算に使えるのですが、その他の処理でCEditクラスの関数を利用したいため、エディットコントロールに追加する変数をCEdit型としてコードを書きたい。
もしくは他に良い方法があればご教授願いたいです。
該当のソースコード
C++
1// BMIviewerDlg.h 2 3// 実装 4protected: 5 HICON m_hIcon; 6 7 // 生成された、メッセージ割り当て関数 8 virtual BOOL OnInitDialog(); 9 afx_msg void OnSysCommand(UINT nID, LPARAM lParam); 10 afx_msg void OnPaint(); 11 afx_msg HCURSOR OnQueryDragIcon(); 12 DECLARE_MESSAGE_MAP() 13public: 14 afx_msg void OnBnClickedButton1(); 15 CListCtrl m_ListCtrl; 16 CEdit m_Height; 17 CEdit m_Weight; 18 CEdit m_BMI; 19 afx_msg void OnBnClickedButton2(); 20 afx_msg void OnBnClickedButton3(); 21 22// BMIviewerDlg.cpp 23 24// 初期状態:無効化 25// エディットコントロールに入力された身長、体重からBMIを計算する関数 26void CBMIviewerDlg::OnBnClickedButton1() 27{ 28// ↓出来てません。 29 UpdateData( true ); 30 31 TCHAR Buf1[128]; 32 TCHAR Buf2[128]; 33 TCHAR Buf3[128]; 34 35 //GetWindowText( IDC_EDIT1, Buf1, 5 ); 36 //GetWindowText( IDC_EDIT2, Buf2, 5 ); 37 //GetWindowText( IDC_EDIT3, Buf3, 4 ); 38 39 double dHeight = _tstof( Buf1 ); 40 double dWeight = _tstof( Buf2 ); 41 double dBMI = _tstof( Buf3 ); 42 43 44 dBMI = ( dWeight / ( ( dHeight / 100 ) * ( dHeight / 100 ) )); 45 46 47 if( 18.50 > dBMI ){// 痩せぎみ 48 49 } 50 51 if( 18.50 <= dBMI 52 && 25.00 > dBMI ){// 普通体重 53 54 } 55 56 if( 25.00 <= dBMI ){// 肥満 57 58 } 59 60 UpdateData( false ); 61} 62 63// 初期状態:無効化 64// エディットコントロール内の数値をクリア 65void CBMIviewerDlg::OnBnClickedButton2() 66{ 67 68 m_Height.Clear(); 69 m_Weight.Clear(); 70 m_BMI.Clear(); 71 72 // 身長・体重の値がクリアされるため、計算ボタンと記録ボタンを無効化 73 CButton *button1 = ( CButton * ) GetDlgItem( IDC_BUTTON1 ); 74 button1->EnableWindow( FALSE ); 75 76 CButton *button3 = ( CButton * ) GetDlgItem( IDC_BUTTON3 ); 77 button3->EnableWindow( FALSE ); 78} 79 80// 初期状態:無効化 81// 身長・体重・BMI・肥満度に数値があるときにリストにそれらを記録 82void CBMIviewerDlg::OnBnClickedButton3() 83{ 84 85 86} 87
補足情報(FW/ツールのバージョンなど)
visual studioのバージョンは2022です。
MFCのダイアログベース、
スタティックライブラリでMFCを使用
マルチバイト文字セット
を利用しています。

回答2件
あなたの回答
tips
プレビュー