<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      MFC實現(xiàn)一個通用模態(tài)進度條窗口

      #include "afxwin.h"
      #include "afxcmn.h"
      
      // CModelProgressDlg 對話框
      class CModelProgressDlg : public CDialogEx
      {
      	DECLARE_DYNAMIC(CModelProgressDlg)
      
      public:
      	CModelProgressDlg(CWnd* pParent = NULL);   // 標準構(gòu)造函數(shù)
      	virtual ~CModelProgressDlg();
      	typedef UINT(*ThreadFun)(LPVOID pParam);
      	struct Thread
      	{
      		Thread():fun(NULL), data(NULL), progress(NULL) {}
      		ThreadFun fun;
      		LPVOID data;
      		const CModelProgressDlg* GetProgress() { return progress; }
      	private:
      		CModelProgressDlg* progress;
      		friend class CModelProgressDlg;
      	}m_threadData;
      // 對話框數(shù)據(jù)
      #ifdef AFX_DESIGN_TIME
      	enum {
      		IDD = IDD_DIALOG_MODEL_PROGRESS
      };
      #endif
      protected:
      	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
      
      	DECLARE_MESSAGE_MAP()
      public:
      	HANDLE GetFinishEventHandle() { return m_finishEvt; }
      	void SetRange(short range);
      private:
      	int m_nCount;
      	HANDLE m_finishEvt;
      	CString m_strTip;
      	CStatic m_tip;
      	short m_range;
      	CProgressCtrl m_progress;
      	static const UINT REFRESH_PROGRESS_TIMER_ID = 240129;
      	static const UINT REFRESH_PROGRESS_ELAPSE = 500;
      private:
      	afx_msg void OnBnClickedBreak();
      	afx_msg LRESULT OnUpdateText(WPARAM wParam, LPARAM lParam);
      	virtual BOOL OnInitDialog();
      	afx_msg void OnTimer(UINT_PTR nIDEvent);
      	afx_msg void OnClose();
      	virtual BOOL PreTranslateMessage(MSG* pMsg) override;
      };
      

        

      #include "stdafx.h"
      #include "DlgModelProgress.h"
      #include "afxdialogex.h"
      #include "WinMessageID/GlobalMessageID.h"
      
      // CModelProgressDlg 對話框
      
      IMPLEMENT_DYNAMIC(CModelProgressDlg, CDialogEx)
      
      CModelProgressDlg::CModelProgressDlg(CWnd* pParent /*=NULL*/)
      	: CDialogEx(IDD_DIALOG_MODEL_PROGRESS, pParent), m_range(100), m_nCount(0)
      {	
      	m_threadData.progress = this;
      	m_finishEvt = CreateEvent(NULL, TRUE, FALSE, NULL);//無信號
      }
      
      CModelProgressDlg::~CModelProgressDlg()
      {
      }
      
      void CModelProgressDlg::DoDataExchange(CDataExchange* pDX)
      {
      	CDialogEx::DoDataExchange(pDX);
      	DDX_Control(pDX, IDC_STATIC_TIP, m_tip);
      	DDX_Control(pDX, IDC_PROGRESS_TASK, m_progress);
      }
      
      BEGIN_MESSAGE_MAP(CModelProgressDlg, CDialogEx)
      	ON_BN_CLICKED(IDC_BUTTON_BREAK, &CModelProgressDlg::OnBnClickedBreak)
      	ON_WM_SHOWWINDOW()
      	ON_MESSAGE(WM_UPDATE_REPORT_WINDOW_POS, &CModelProgressDlg::OnUpdateText)
      	ON_WM_CLOSE()
      	ON_WM_TIMER()
      END_MESSAGE_MAP()
      
      void CModelProgressDlg::SetRange(short range) 
      {
      	m_range = range;
      	m_progress.SetRange(0, m_range);
      }
      
      // CModelProgressDlg 消息處理程序
      BOOL CModelProgressDlg::OnInitDialog()
      {
      	CDialogEx::OnInitDialog();
      
      	// TODO:  在此添加額外的初始化
      	GetDlgItem(IDC_BUTTON_BREAK)->SetWindowText(XTPResourceManager()->LoadString(IDS_CANCEL));
      
      	SetTimer(REFRESH_PROGRESS_TIMER_ID, REFRESH_PROGRESS_ELAPSE, NULL);
      	
      	AfxBeginThread(m_threadData.fun, &m_threadData);
      	
      	return TRUE;  // return TRUE unless you set the focus to a control
      				  // 異常: OCX 屬性頁應(yīng)返回 FALSE
      }
      
      BOOL CModelProgressDlg::PreTranslateMessage(MSG* pMsg)
      {
      	BOOL bAlt = GetKeyState(VK_MENU) & 0x8000;
      	if (pMsg->message == WM_KEYDOWN)
      	{
      		if (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN)
      		{
      			return TRUE;
      		}
      
      	}
      	else if (pMsg->message == WM_SYSKEYDOWN)
      	{
      		if (pMsg->wParam == VK_F4 && bAlt)
      		{
      			return TRUE;
      		}
      
      	}
      	return CDialogEx::PreTranslateMessage(pMsg);
      }
      
      void CModelProgressDlg::OnTimer(UINT_PTR nIDEvent)
      {
      	if (REFRESH_PROGRESS_TIMER_ID == nIDEvent)
      	{
      		static tstring arrState[] = { _UC("."), _UC(".."), _UC("...") };
      		SetDlgItemText(IDC_STATIC_TIP, m_strTip + arrState[m_nCount++%_countof(arrState)].c_str());
      	}
      }
      
      void CModelProgressDlg::OnBnClickedBreak()
      {
      	// TODO: 在此添加控件通知處理程序代碼
      	LOG(INFO) << "Stop generate report!";
      	SetEvent(m_finishEvt);
      	m_strTip = CSLoadString(IDS_WAIT_STOPING).c_str();
      	m_tip.SetWindowText(m_strTip);
      	GetDlgItem(IDC_BUTTON_BREAK)->EnableWindow(FALSE);
      }
      
      
      LRESULT CModelProgressDlg::OnUpdateText(WPARAM wParam, LPARAM lParam)
      {
      	m_progress.SetPos(wParam);
      	CString percent;
      	percent.Format(_T("%.2f%%"), (wParam / (double)m_range) * 100);
      	SetDlgItemText(IDC_STATIC_PERCENT, percent);
      
      	if (lParam != NULL)
      	{
      		m_strTip = (TCHAR*)lParam;
      		m_tip.SetWindowText(m_strTip);
      		free((void*)lParam);
      	}
      
      	UpdateData(FALSE);
      
      	return 0;
      }
      
      void CModelProgressDlg::OnClose()
      {
      	// TODO: 在此添加消息處理程序代碼和/或調(diào)用默認值
      	KillTimer(REFRESH_PROGRESS_TIMER_ID);
      
      	CDialogEx::OnClose();
      }
      

        

      image

       

      UINT DlgPrintProject::GenerateStationThread(LPVOID pParam)
      {
      	//生成報表數(shù)據(jù)
      	CModelProgressDlg::Thread *threadData = (CModelProgressDlg::Thread*)pParam;//獲取線程相關(guān)數(shù)據(jù)
      
      	CModelProgressDlg* progress = (CModelProgressDlg*)threadData->GetProgress();//獲取進度條指針
      	DlgPrintProject* _this = (DlgPrintProject*)threadData->data;//獲取當前類this指針
         progress->SetRange(ReportManager::GetInstance()->GetProgressRange());//設(shè)置進度條范圍 }

        

      代碼有缺失,請參考思路!

      posted @ 2025-11-05 16:19  快雪  閱讀(4)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 日韩在线观看 一区二区| 久久亚洲精品11p| 精品国精品国产自在久国产应用男| 94人妻少妇偷人精品| 婷婷四虎东京热无码群交双飞视频 | 肥东县| 好吊视频在线一区二区三区| 无码人妻丝袜在线视频| 四虎永久精品在线视频| AV极品无码专区亚洲AV| 国产成人av性色在线影院| 亚洲夂夂婷婷色拍ww47| 成人国产精品一区二区网站公司| 曲靖市| 国语对白刺激在线视频国产网红 | 中文字幕国产精品综合| 西华县| 亚洲熟妇国产熟妇肥婆| 国产成人一区二区三区视频免费| 亚洲第一无码AV无码专区| 青春草公开在线视频日韩| 亚洲高清WWW色好看美女| 久久精品国产亚洲av熟女| 丁香五月亚洲综合在线| 国产肥妇一区二区熟女精品| 国精偷拍一区二区三区| 全部免费毛片在线播放| 国产中文字幕精品视频| 内射中出无码护士在线| 亚洲一区二区经典在线播放| 无码伊人久久大杳蕉中文无码| 亚洲综合国产精品第一页| 欧美国产日韩久久mv| 国产精品国产三级国av| 亚洲成人av在线系列| 国产稚嫩高中生呻吟激情在线视频 | 国产丝袜在线精品丝袜不卡| 一区二区三区午夜无码视频| 国产av无码专区亚洲aⅴ| 亚洲精品www久久久久久| 禄劝|