為MFC介面新增乙個Log Window

2021-09-06 20:03:58 字數 1896 閱讀 2680

由於早期的影象處理程式基於vc6.0,mfc也是採用vc6.0開發的。在實際處理中,我不僅需要介面的顯示,有很多時候,我需要演算法處理的過程中的資訊,比如每個階段的耗時,處理的影象大小,以及如果需要迭代,當前的迭代次數。

當然,有很多方法可以解決上述需求,譬如可以通過file建立乙個檔案,然後把相關資訊寫入。

但,那都不夠直觀

我希望的是,它能夠像vc或vs在編譯的時候,在下方有個「debug window」,將執行過程中的資訊實時顯示。

just勾乙個選項即可,

注意,這裡的dialog應該選擇formview

並且布局設定如下,上面的edit控制項為edit box

在標頭檔案mainfrm.h中,增加乙個dialogbar成員變數

cstatusbar  m_wndstatusbar;

c******* m_wnd*******;

...cdialogbar m_wnddlgbar; // 控制下方的dialog控制項

對onpaint函式進行重寫(這裡應該是乙個虛函式)

afx_msg int oncreate(lpcreatestruct lpcreatestruct);

...afx_msg void onpaint(); // 重寫onpaint()函式,用以控制控制項的顯示

在mainfrm.cpp檔案中

1) 在此處增加on_wm_paint()

begin_message_map(cmainframe, cframewnd)

//}afx_msg_map

end_message_map()

2)在oncreate中新增dialogbar的建立函式

// 設定dialogbar的建立

if (!m_wnddlgbar.create(this, idd_dlglog,

ws_child | cbrs_bottom | cbrs_tooltips | cbrs_flyby | cbrs_gripper, idd_dlglog))

m_wnddlgbar.enabledocking(cbrs_align_any);

3)通過onpaint函式控制大小

// 控制dialogbar 與 editlog 的大小

void cmainframe::onpaint()

在此有個小插曲,如果想讓mfc左上角的無標題等標題狀態替換成自己想要的,則,在oncreate函式中新增

setwindowtext( "demo"); // 設定標題為`demo`
並在bool cmainframe::precreatewindow(createstruct& cs)函式中新增這麼一行:

cs.style   &=   ~fws_addtotitle; // 讓以上設定的標題得以顯示
首先在該檔案中增加乙個外部變數,譬如我們要在logwnddoc.cpp上要使用,則在檔案前面加入:

為了測試效果,通過classwizardlogwnddoc.cpp上增加乙個void clogwnddoc::onfileopen()函式,如下,即可將資訊從log window上輸出資訊,**:

void clogwnddoc::onfileopen() 

最終效果如下:

為MFC介面新增乙個Log Window

由於早期的影象處理程式基於vc6.0,mfc也是採用vc6.0開發的。在實際處理中,我不僅需要介面的顯示,有很多時候,我需要演算法處理的過程中的資訊,比如每個階段的耗時,處理的影象大小,以及如果需要迭代,當前的迭代次數。當然,有很多方法可以解決上述需求,譬如可以通過file建立乙個檔案,然後把相關資...

為MFC工程新增乙個控制台

在mfc工程裡有時想要輸出一些資料,可以用trace之類的,也可以寫日誌,還可以為工程新增乙個控制台直接輸出到控制台裡,這樣可以很方便的查閱輸出的資訊。效果就是這樣的,在程式生成時建立乙個控制台,在程式關閉時會隨之銷毀,發布程式時只要把對應的 注釋掉就好了。具體的操作是在你想要建立控制台的類的建立方...

ios 為程式新增乙個懸浮框

一 uiwindow的簡介 2.ios程式啟動完畢後,建立的第乙個檢視控制項就是uiwindow,接著建立控制器的view,最後將控制器的view新增到uiwindow上,於是控制器的view就顯示在螢幕上了 3.乙個ios程式之所以能顯示到螢幕上,完全是因為它有uiwindow。也就說,沒有uiw...