工作日誌 mfcButton和執行緒

2021-07-03 15:15:51 字數 1323 閱讀 9472

問題1:button的處理如果要消耗大量的時間,畫面就會卡住

解決:可以在後台開乙個執行緒,讓消耗時間的工作放到後台執行緒完成。

增加後台執行緒有2種,有工作者執行緒和ui執行緒,本次使用ui執行緒

1、自己在dlg類中增加乙個static函式,作為執行緒函式。

1.1、在.h檔案中增加

static dword winapi mythreadfunction( lpvoid pparam );

handle m_pmythread;

dword m_pmythreadid;

1.2、在.cpp初始化函式中增加

m_pmythreadid = 0;

m_pmythread = createthread(null,0, mythreadfunction, this, 0, &m_pmythreadid);//要加this引數,否則執行緒開始就退出了。

1.3、在.cpp中增加執行緒函式

dword winapi cmfcbuttonvs10dlg::mythreadfunction( lpvoid pparam )

msg msg;

while(getmessage(&msg, null, 0, 0) != -1)

else if(msg.message == wm_button_msg)

else

}return 0;

}1.4、在button處理函式中向執行緒發訊息

char* strtmp = new char[10];

sprintf(strtmp, "1111");

postthreadmessage(m_pmythreadid, wm_button_msg, (wparam)strtmp, 0);

postthreadmessage(m_pmythreadid, wm_quit, 0, 0);

2、繼承cwinthread執行緒。

afx_msg void onbuttonmessage(wparam wparam, lparam lparam);

on_thread_message(wm_button_msg, &cmythread::onbuttonmessage)

void cmythread::onbuttonmessage(wparam wparam, lparam lparam)

2.3、在button函式中增加

char* strtmp = new char[10];

sprintf(strtmp, "1111");

postthreadmessage(m_pmythread->m_nthreadid, wm_button_msg, (wparam)strtmp, 0);

20070323工作日誌

11 32 今天先來第一件事就把昨天查詢的開題報告資料copy到電腦上 然後就開始寫開題報告,這個開題報告真麻煩 分開題報告 文獻綜述和任務書三個部分 開始以為有怎麼資料,湊湊copy應該就差不多,後來發現pdf中copy出來的都是imag 根本沒法用,那只好晚上找 找了半天,弄弄,還是沒搞完 頭都...

20070329工作日誌

2007 3 30 10 29 28日後來就寫日誌,一直寫到下班 至於debug fz模組,昨天debug了一下,和tg模組差不多,只是在讀取role配置檔案時有所不同,側重點不同 2007 3 30 10 36 29日就是正常上班 處理了醫療模組中的乙個頁面新增和合管辦的頁面新增 增加了js驗證,...

20070330工作日誌

2007 3 30 10 29 28日後來就寫日誌,一直寫到下班 至於debug fz模組,昨天debug了一下,和tg模組差不多,只是在讀取role配置檔案時有所不同,側重點不同 2007 3 30 10 36 29日就是正常上班 處理了醫療模組中的乙個頁面新增和合管辦的頁面新增 增加了js驗證,...