掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
スレッド処理について (ID:58645)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ソースも短いので乗せてみました。 CDoingDlg::CDoingDlg(CWnd* pParent , int count , UINT(*thread)(LPVOID pParam) ) : CDialog(CDoingDlg::IDD, pParent) { m_thread = thread ; m_iCount = count ; m_iError = 0 ; m_iEnd = 0 ; //{{AFX_DATA_INIT(CDoingDlg) // メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します。 //}}AFX_DATA_INIT } BEGIN_MESSAGE_MAP(CDoingDlg, CDialog) //{{AFX_MSG_MAP(CDoingDlg) ON_BN_CLICKED(IDC_DOING_STOP, OnDoingStop) ON_WM_SETCURSOR() //}}AFX_MSG_MAP ON_MESSAGE(WM_STOPTHREAD , OnStop ) ON_MESSAGE(WM_STEPTHREAD , OnStep ) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDoingDlg メッセージ ハンドラ BOOL CDoingDlg::OnInitDialog() { CDialog::OnInitDialog(); CProgressCtrl* p_pro = (CProgressCtrl*)GetDlgItem(IDC_DOING_PROGRESS) ; p_pro->SetRange(0,m_iCount) ; p_pro->SetStep(1) ; CString str ; str.Format(_T("%d/%d"),1,m_iCount) ; GetDlgItem(IDC_DOING_STATIC)->SetWindowText(str) ; ASSERT(m_thread) ; ::AfxBeginThread(m_thread,GetSafeHwnd()) ; return TRUE; } LRESULT CDoingDlg::OnStep(WPARAM wParam , LPARAM lParam) { CString str ; str.Format(_T("%d/%d"),(int)wParam + 1 , m_iCount) ; GetDlgItem(IDC_DOING_STATIC)->SetWindowText(str) ; CProgressCtrl* p_pro = (CProgressCtrl*)GetDlgItem(IDC_DOING_PROGRESS) ; p_pro->StepIt() ; return 0 ; } LRESULT CDoingDlg::OnStop(WPARAM wParam , LPARAM lParam) { m_iEnd = (int)wParam -(int)lParam; m_iError = (int)lParam ; PostMessage(WM_CLOSE) ; return 0 ; } void CDoingDlg::OnDoingStop() { stop_thread = TRUE ; } BOOL CDoingDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { SetCursor(LoadCursor(0,IDC_APPSTARTING)) ; return TRUE ; }
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.