前提
MFCでダイアログのあるプログラムを作っています
実現したいこと
OKボタンを押した際に、すべてのボタンを無効にしてから時間がかかるファイル読み書き処理を行います。
そのファイル読み書き処理中にすべてのボタンが無効表示にならず不自然なプログラムになっています。
これを改善するために挿入するコードを教えてください。
該当のソースコード
mfc
1void CabcDlg::OnBnClickedOk() 2{ 3 cbOK.EnabledWindow(FALSE); 4 cbCancel.EnabledWindow(FALSE); 5 cbSelect.EnabledWindow(FALSE); 6 7 //時間がかかるファイル読み書き処理 8 9 MessageBox(_T("ファイル読み書き完了"), _T("SUCCESS"), MB_OK); 10 cbOK.EnabledWindow(TRUE); 11 cbCancel.EnabledWindow(TRUE); 12 cbSelect.EnabledWindow(TRUE); 13}
解決後のソースコード
mfc
1void CabcDlg::OnBnClickedOk() 2{ 3 cbOK.EnabledWindow(FALSE); 4 cbCancel.EnabledWindow(FALSE); 5 cbSelect.EnabledWindow(FALSE); 6 7 SetTimer(TIMER_INTERVAL, 200, NULL); 8} 9 10void CabcDlg::OnTimer(UINT_PTR nIDEvent) 11{ 12 if(nIDEvent == TIMER_INTERVAL) 13 { 14 KillTimer(nIDEvent); 15 16 //時間がかかるファイル読み書き処理 17 18 MessageBox(_T("ファイル読み書き完了"), _T("SUCCESS"), MB_OK); 19 cbOK.EnabledWindow(TRUE); 20 cbCancel.EnabledWindow(TRUE); 21 cbSelect.EnabledWindow(TRUE); 22 } 23 CDialogEx::OnTimer(nIDEvent); 24}
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2022/11/17 06:09