VC進度條實時顯示

2021-06-05 17:31:14 字數 1248 閱讀 4805

當我們在處理大程式時,常常需要耗很長時間,為了不讓使用者錯誤的認為系統已經宕機,我們要給程式新增進度條,但是大家知道如果就直接新增進度條,並在程式裡面控制它的進度,往往得到的結果是程式仍然像宕機狀態,直到處理完畢才顯示進度條進度為100%,中間的過程看不到了,那麼怎麼辦呢,是為什麼呢?原因是我們處理大程式和進度條顯示是在同乙個執行緒中進行的,這樣往往因為處理大程式導致介面無法實時更新。解決辦法就是把處理大程式的這段邏輯讓乙個單獨的執行緒在處理,並利用postmessage或sendmessage給主介面傳送訊息,讓主介面去更新。

具體**實現如下:

casyncprogressdlg.h 對話方塊

protected:

lresult onupdatedata(wparam wparam, lparam lparam);

int processlogfile(char *prtnmsgbuf, int ibuflen);

cprogressctrl m_progress;

cwinthread *m_pmythread;

cstatic *m_pstatic;

friend uint mythread(lpvoid pparam);

casyncprogressdlg.cpp 對話方塊

#define wm_updatedata wm_user + 1999 //定義事件

static uint mythread(lpvoid pparam) //注意返回型別為uint

begin_message_map(c******progressdlg, cdialog)

on_message(wm_updatedata, &c******progressdlg::onupdatedata) //讓事件關聯程式

...end_message_map()

// casyncprogressdlg訊息處理程式

bool casyncprogressdlg::oninitdialog()

lresult casyncprogressdlg::onupdatedata(wparam wparam, lparam lparam)

updatedata(false);//實時更新主介面

return 0;

}int casyncprogressdlg::processlogfile(char *prtnmsgbuf, int ibuflen)

return 0;

}

進度條顯示

最近的專案需求中涉及到了顯示進度的圖示,因此就簡單實現了一下,拿出來獻醜了 方法實現很簡單,主要是使用了framelayout的特殊性來實現的疊加顯示的 有次需求的同學們可以參考一下呦3 成功的 失敗的 進行中的 初始化 param attrs private void initview attri...

Web實時進度條

先新建乙個default.aspx頁面,客戶端 伺服器端 using system using system.collections using system.componentmodel using system.data using system.drawing using system.web...

如何顯示進度條?

在許多程式中,程式需要自己做些事情而不受使用者輸入的干擾。這時就需要給使用者一些可見的顯示,以表明程式正在做一些事情及完成的進度。在wxpython中,這通常使用乙個進度條來管理,如圖9.5所示。圖9.5 例9.5顯示了產生圖9.5的 例9.5 生成乙個進度條 import wx if name m...