MFCダイアログボックスプログラムは、ポップアップウィンドウのプログレスバープロンプトを追加します

1.メインダイアログボックスとポップアップダイアログボックスを作成します

2.メインダイアログボックスにボタンを追加して、メインスレッドの作業とポップアップウィンドウの表示を実行します。

3.メインスレッドヘッダーファイルは、スレッド、メインスレッドの仕事関数、およびポップアップウィンドウで提供される変数を宣言します。

    static UINT ThreadProcess(LPVOID p); //メイン作業スレッド
    intnNum; //メインスレッドとポップアップウィンドウ配信変数
    voidAddNum(); //メインスレッド作業関数

4.機能

void CTestProcessBarDlg :: OnBtnStart() 
{     // TODO:ここにコントロール通知ハンドラーコードを追加します     AfxBeginThread(ThreadProcess、this、THREAD_PRIORITY_NORMAL、0,0、NULL);     CProcessDlg pDlg;     pDlg.pNum =&nNum;     pDlg.DoModal(); }





UINT CTestProcessBarDlg :: ThreadProcess(LPVOID p)
{     CTestProcessBarDlg * pDlg =(CTestProcessBarDlg *)p;     pDlg-> AddNum();     0を返します。}



void CTestProcessBarDlg :: AddNum()
{

       if(nNum> = 100)
        {             ブレーク;         }     for(int i = 0; i <= 101; i ++)     {         Sleep(100);         nNum = i;     } }







5.ポップアップダイアログにプロセス制御を追加します

6.ポップアップダイアログボックスのヘッダーファイル

int * pNum; //メインダイアログでポインタ変数を配信
静的UINTThreadWinInfo(LPVOID p); //スレッド操作のプログレスバー

7.ポップアップダイアログボックス機能

BOOL CProcessDlg :: OnInitDialog()//初期初期化中スレッドスレッド程
{     CDialog :: OnInitDialog();     // TODO:ここに初期化を追加します     m_Process.SetRange(0,100);     m_Process.SetStep(2);     AfxBeginThread(ThreadWinInfo、this);     TRUEを返します。//フォーカスをコントロールに設定しない限りTRUE                   を返します//例外:OCXプロパティページはFALSEを返す必要があります}

    






 UINT CProcessDlg :: ThreadWinInfo(LPVOID p)
 {      CProcessDlg * pDlg =(CProcessDlg *)p;      while(1)      {          if(* pDlg-> pNum == 100)          {              break;          }          pDlg-> m_Process.SetPos(* pDlg- > pNum);      }      pDlg-> PostMessage(WM_CLOSE); //メインスレッドの変数が100に達すると、ポップアップダイアログは自動的に閉じ     て0を返します;  }











void CProcessDlg :: OnOK() 
{     // TODO:ここに検証を追加します     * pNum = 100; }


 

おすすめ

転載: blog.csdn.net/Hat_man_/article/details/109628763