MFC框架程式中OnIdle的介紹

2021-06-18 22:57:15 字數 1255 閱讀 3587

先看下msdn對onidle()介紹:

mfc預設處理:

如果忘掉了的話,你會發現一些mfc的ui會出現問題,比如選單上的選擇狀態無法更新等問題。

再下面加上你自已的處理函式即可:

yourmethod();

return true; // 需要更多次的執行。。。

對於mfc程式來講,很多是採用mfc的文件檢視類的框架。比如如果你要

讓檢視不斷重新整理,

在這個不斷重新整理的檢視中可以完成場景渲灑更新等操作。

你當然可以在

yourmethod()

中獲取檢視的pview的指標,然後呼叫其內的介面函式, 就像這樣:

cmainframe *parent = (cmainframe *)afxgetmainwnd();

if ( parent && parent->getsafehwnd() )}

但這會明顯的讓你的程式和mfc的框架不那麼配套,mfc的文件檢視結構的設計思想並沒有體

現出來。當然這樣做也沒什麼錯。

類似這樣的寫法也是可以正常工作的。

如果你檢視過mfc文件類cdocument的話,你會發現它也有乙個虛函式叫onidle(),很明顯

這個函式就是讓你完成文件檢視在

idle時期的處理工作的地方。你完全在其中可以這樣寫: 

position pos = getfirstviewposition();

while ( pos != null )  

中進行一些處理:

return true;

加這句的目的其實我是希望呼叫mfc預設的對文件檢視onidle的處理,也就是借用下面一段**:

// call doc-template idle hook

position pos = null;

if ( m_pdocmanager != null )

pos = m_pdocmanager->getfirstdoctemplateposition();

while ( pos != null )

至此關於mfc中onidle的使用介紹已經完了。很多具體的東西還是需要深入mfc的具體實現當中去看。

關於MFC框架程式中CWinApp OnIdle

lcount 該引數是乙個計數值,當應用程式的訊息隊列為空,onidle函式被呼叫時,該計數值就增加1。每當一條新訊息被處理時,該計數值就被復位為0。你可以使用lcount引數來確定應用程式不處理訊息時空閒時間的相對長度。說明 如果要執行空閒時處理,則過載這個成員函式。當應用程式的訊息隊列為空時,o...

MFC框架程式剖析

1 mfc microsoftfoundation class,微軟基礎類庫 是微軟為了簡化程式設計師的開發工作所開發的一套c 類的集合,是一套物件導向的函式庫,以類的方式提供給使用者使用 二 基於mfc的程式框架剖析 1 mfc程式的classview標籤頁 圖 2 繼承關係 1 cmainfra...

MFC框架程式剖析

mfc程式的執行過程 4 進入訊息迴圈。雖然也設定了預設的視窗過程函式,但是mfc應用程式實際上是採用訊息對映機制來處理各種訊息的。當收到wm quit訊息時,退出訊息迴圈,程式結束。面已經知道,在乙個windows程式中,winmain函式作為程式的入口函式,乙個程式的是 設計視窗 給視窗設定相應...