先看下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函式作為程式的入口函式,乙個程式的是 設計視窗 給視窗設定相應...