sage 方式。
[0081] Functions〈LRESULT, WPARAM, LPARAM>m_functions ;// 保存?zhèn)魅氲暮瘮?shù)指針。
[0082] };
[0083] 102、從該窗口模板類中調(diào)取上述UI更新函數(shù)以及上述UI更新函數(shù)的參數(shù),并通 過固定的窗口消息攜帶上述UI更新函數(shù)以及上述UI更新函數(shù)的參數(shù);
[0084] 在將待執(zhí)行的UI更新函數(shù)以及UI更新函數(shù)的參數(shù)保存在窗口模板類中后,從該 窗口模板類中調(diào)取該UI更新函數(shù)以及UI更新函數(shù)的參數(shù),并將UI更新函數(shù)和UI更新函 數(shù)的參數(shù)放在固定的窗口消息中。
[0085] 需要說明的是,若上述UI更新函數(shù)以及UI更新函數(shù)的參數(shù)保存在Functions模 板類中,則Functions模板類可以采用execute方法將UI更新函數(shù)以及UI更新函數(shù)的參 數(shù)取出,另外,下文中需要介紹的根據(jù)UI更新函數(shù)的參數(shù)執(zhí)行窗口消息中的UI更新函數(shù), 可以通過如下代碼實(shí)現(xiàn):
[0086] RETURN execute (Plpl, P2p2)
[0087] {
[0088] auto call_function = m_funcs. front ();
[0089] if(call_function)
[0090] {
[0091] m_funcs. pop_front ();
[0092] return call_function (pi, p2);
[0093] }
[0094] return NULL ;
[0095] }
[0096] 另外,上述窗口模板類定義了一個(gè)ui_thread_sync方法,用于保存需要執(zhí)行的函 數(shù)(Object)及參數(shù)(WPARAM和LPARAM),保存完后,該窗口模板類會對自己發(fā)送一個(gè)窗口消 息MESSAGE_SYNC_SEND,將要執(zhí)行的參數(shù)(wParam和IParam),放入至窗口消息中??梢酝?過如下代碼實(shí)現(xiàn):
[0097]
[0099] 103、向該窗口模板類的窗口句柄發(fā)送該窗口消息;
[0100] 在將UI更新函數(shù)和UI更新函數(shù)的參數(shù)放到一個(gè)固定的窗口消息中后,向該窗口 模板類的窗口句柄發(fā)送該窗口消息,具體實(shí)現(xiàn)代碼可以參閱上述代碼。
[0101] 104、接收該窗口消息,并根據(jù)上述UI更新函數(shù)的參數(shù)執(zhí)行該窗口消息中的上述 UI更新函數(shù)。
[0102] 在向該窗口模板類的窗口句柄發(fā)送該窗口消息后,接收到該窗口消息,并根據(jù)UI 更新函數(shù)的參數(shù)執(zhí)行該窗口消息中的UI更新函數(shù)。
[0103] 可選的,在本發(fā)明的一些實(shí)施例中,具體可以采用如下方法接收該窗口消息:
[0104] 通過該窗口模板類的消息隊(duì)列,接收該窗口消息。
[0105] 需要說明的是,上述窗口模板類的消息隊(duì)列用于接收派生窗口的消息。
[0106] 需要說明的是,在通過窗口模板類的消息隊(duì)列接收到該窗口消息后,可以使用 Functions模板類中的execute方法,將要執(zhí)行的UI更新函數(shù)以及UI更新函數(shù)的參數(shù)從上 述消息隊(duì)列中取出,然后執(zhí)行該UI更新函數(shù),參見如下代碼:
[0107] υ?Ν 丄λ _/·?·? υ/ο X
[0109] 另外,根據(jù)UI更新函數(shù)的參數(shù)執(zhí)行該窗口消息中的UI更新函數(shù)的具體代碼在前 文中已經(jīng)敘述,此處不再贅述。
[0110] 需要說明的是,完成窗口模板類的定義后,一般的窗口類,只需要繼承該窗口模板 類,并將待執(zhí)行的UI更新函數(shù)以及UI更新函數(shù)的參數(shù),傳遞給該窗口模板類,就能夠自動(dòng) 執(zhí)行該UI更新函數(shù),而不再需要定義窗口消息和在窗口類的消息栗中加入自定義消息,以 及自定義消息的處理函數(shù)。參見如下代碼:
[0111] υ?Ν 丄λ _/·?·? ι / o
[0112] 本實(shí)施例中,一般的窗口類,只需要繼承窗口模板類,就能夠通過窗口模板類代替 程序員完成自定義消息的收發(fā),UI更新函數(shù)的調(diào)用,自動(dòng)執(zhí)行UI更新函數(shù),不再需要現(xiàn)有 技術(shù)中的自定義消息的步驟,因此,本發(fā)明能夠省去自定義消息的步驟,降低了程序的復(fù)雜 度以及編碼量。
[0113] 下面介紹本發(fā)明實(shí)施例中的自動(dòng)同步用戶界面UI線程的裝置,請參閱圖2,本發(fā) 明實(shí)施例中的自動(dòng)同步UI線程的裝置包括:
[0114] 存儲單元201,用于將待執(zhí)行的用戶界面UI更新函數(shù)以及UI更新函數(shù)的參數(shù)保存 在預(yù)定義的窗口模板類中;
[0115] 處理單元202,用于從窗口模板類中調(diào)取UI更新函數(shù)以及UI更新函數(shù)的參數(shù),并 通過固定的窗口消息攜帶UI更新函數(shù)以及UI更新函數(shù)的參數(shù);
[0116] 發(fā)送單元203,用于向窗口模板類的窗口句柄發(fā)送窗口消息;
[0117] 接收單元204,用于接收窗口消息;
[0118] 執(zhí)行單元205,用于根據(jù)UI更新函數(shù)的參數(shù)執(zhí)行窗口消息中的UI更新函數(shù)。
[0119] 可選的,在本發(fā)明的一些實(shí)施例中,該裝置還包括:
[0120] 定義單元,用于定義窗口模板類;
[0121] 上述接收單元204,還用于接收來自窗口類的待執(zhí)行的用戶界面UI更新函數(shù)以及 UI更新函數(shù)的參數(shù);其中,窗口類為繼承窗口模板類的窗口類。
[0122] 可選的,在本發(fā)明的一些實(shí)施例中,上述存儲單元201,具體用于將待執(zhí)行的用戶 界面UI更新函數(shù)以及UI更新函數(shù)的參數(shù),傳入預(yù)定義的窗口模板類的一個(gè)鏈表容器中保 存。
[0123] 可選的,在本發(fā)明的一些實(shí)施例中,上述接收單元204,具體用于通過窗口模板類 的消息隊(duì)列,接收窗口消息。
[0124] 本實(shí)施例中,一般的窗口類,只需要繼承窗口模板類,就能夠通過窗口模板類代替 程序員完成自定義消息的收發(fā),UI更新函數(shù)的調(diào)用,自動(dòng)執(zhí)行UI更新函數(shù),不再需要現(xiàn)有 技術(shù)中的自定義消息的步驟,因此,本發(fā)明能夠省去自定義消息的步驟,降低了程序的復(fù)雜 度以及編碼量。
[0125] 以上所述,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前 述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前 述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些 修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
【主權(quán)項(xiàng)】
1. 一種自動(dòng)同步用戶界面UI線程的方法,其特征在于,包括: 將待執(zhí)行的用戶界面UI更新函數(shù)以及所述UI更新函數(shù)的參數(shù)保存在預(yù)定義的窗口模 板類中; 從所述窗口模板類中調(diào)取所述UI更新函數(shù)以及所述UI更新函數(shù)的參數(shù),并通過固定 的窗口消息攜帶所述UI更新函數(shù)以及所述UI更新函數(shù)的參數(shù); 向所述窗口模板類的窗口句柄發(fā)送所述窗口消息; 接收所述窗口消息,并根據(jù)所述UI更新函數(shù)的參數(shù)執(zhí)行所述窗口消息中的所述UI更 新函數(shù)。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將待執(zhí)行的用戶界面UI更新函數(shù)以 及所述UI更新函數(shù)的參數(shù)保存在預(yù)定義的窗口模板類中,之前還包括: 定義窗口模板類; 接收來自窗口類的所述待執(zhí)行的用戶界面UI更新函數(shù)以及所述UI更新函數(shù)的參數(shù); 其中,所述窗口類為繼承所述窗口模板類的窗口類。3. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述將待執(zhí)行的用戶界面UI更新函 數(shù)以及所述UI更新函數(shù)的參數(shù)保存在預(yù)定義的窗口模板類中,包括: 將待執(zhí)行的用戶界面UI更新函數(shù)以及所述UI更新函數(shù)的參數(shù),傳入預(yù)定義的窗口模 板類的一個(gè)鏈表容器中保存。4. 根據(jù)權(quán)利要求3所述的方法,其特征在于, 所述鏈表容器包括:m_functions的列表; 所述窗口模板類包括:C++窗口模板類。5. 根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述接收所述窗口消息,包括: 通過所述窗口模板類的消息隊(duì)列,接收所述窗口消息。6. -種自動(dòng)同步用戶界面UI線程的裝置,其特征在于,包括: 存儲單元,用于將待執(zhí)行的用戶界面UI更新函數(shù)以及所述UI更新函數(shù)的參數(shù)保存在 預(yù)定義的窗口模板類中; 處理單元,用于從所述窗口模板類中調(diào)取所述UI更新函數(shù)以及所述UI更新函數(shù)的參 數(shù),并通過固定的窗口消息攜帶所述UI更新函數(shù)以及所述UI更新函數(shù)的參數(shù); 發(fā)送單元,用于向所述窗口模板類的窗口句柄發(fā)送所述窗口消息; 接收單元,用于接收所述窗口消息; 執(zhí)行單元,用于根據(jù)所述UI更新函數(shù)的參數(shù)執(zhí)行所述窗口消息中的所述UI更新函數(shù)。7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括: 定義單元,用于定義窗口模板類; 所述接收單元,還用于接收來自窗口類的所述待執(zhí)行的用戶界面UI更新函數(shù)以及所 述UI更新函數(shù)的參數(shù);其中,所述窗口類為繼承所述窗口模板類的窗口類。8. 根據(jù)權(quán)利要求6或7所述的裝置,其特征在于, 所述存儲單元,具體用于將待執(zhí)行的用戶界面UI更新函數(shù)以及所述UI更新函數(shù)的參 數(shù),傳入預(yù)定義的窗口模板類的一個(gè)鏈表容器中保存。9. 根據(jù)權(quán)利要求8所述的裝置,其特征在于, 所述鏈表容器包括:m_functions的列表; 所述窗口模板類包括:c++窗口模板類。10.根據(jù)權(quán)利要求6或7所述的裝置,其特征在于, 所述接收單元,具體用于通過所述窗口模板類的消息隊(duì)列,接收所述窗口消息。
【專利摘要】本發(fā)明實(shí)施例公開了一種自動(dòng)同步用戶界面UI線程的方法及裝置,能夠省去自定義消息的步驟,降低了程序的復(fù)雜度以及編碼量。本發(fā)明實(shí)施例方法包括:將待執(zhí)行的用戶界面UI更新函數(shù)以及所述UI更新函數(shù)的參數(shù)保存在預(yù)定義的窗口模板類中;從所述窗口模板類中調(diào)取所述UI更新函數(shù)以及所述UI更新函數(shù)的參數(shù),并通過固定的窗口消息攜帶所述UI更新函數(shù)以及所述UI更新函數(shù)的參數(shù);向所述窗口模板類的窗口句柄發(fā)送所述窗口消息;接收所述窗口消息,并根據(jù)所述UI更新函數(shù)的參數(shù)執(zhí)行所述窗口消息中的所述UI更新函數(shù)。
【IPC分類】G06F9/44
【公開號】CN105159690
【申請?zhí)枴緾N201510702698
【發(fā)明人】任明星
【申請人】深圳云之家網(wǎng)絡(luò)有限公司
【公開日】2015年12月16日
【申請日】2015年10月26日