MFC Feature Pack/VC2008 SP1提供了新的控件,這包括以前需要花費(fèi)購買的控件,這些控件原來由BCG Soft 開發(fā),在VS2008發(fā)布后,被收入后以FeaturePack或SP1的方式發(fā)布(VS2008安裝包原本沒有此功能包,必須額外安裝)。對(duì)很多用戶來說,屬性列表控件、真彩色工具條、工具條、停靠欄、更換皮膚、標(biāo)簽式多文檔、智能停靠、個(gè)性化布局,還有Office、VS中眾多的的控件都包含在這個(gè)功能包中,這個(gè)SP1,是MFC控件庫在1998年發(fā)布后的首次重大更新,對(duì)于MFC程序員,值得體驗(yàn)。
因?yàn)檫@些新的控件給開發(fā)帶來很多便利,我們使用了VS2008,但是這兩個(gè)月一直被一個(gè)問題所困擾,那就是CMFCToolBar。向?qū)?chuàng)建的項(xiàng)目,運(yùn)行得非常好,界面也很漂亮,還支持換膚,但是當(dāng)應(yīng)用程序添加第二個(gè)工具條時(shí),問題就出現(xiàn)了。
我們添加第2個(gè)工具條的方法和示例代碼中的一樣,但出現(xiàn)了各種奇怪問題,癥狀表現(xiàn)為:
1.最大化時(shí),兩個(gè)工具條是連接在一起的,但是左側(cè)工具條會(huì)自動(dòng)移動(dòng)一段距離;
2.重啟應(yīng)用程序,界面依然是混亂的;
3.重新啟動(dòng)程序,再退出后,偶爾有內(nèi)存泄露,未正常釋放的對(duì)象是工具套按鈕對(duì)象,具體原因不詳,跟蹤后發(fā)現(xiàn)泄露發(fā)生在LoadState時(shí)。
如果退出程序后,把注冊(cè)表中此工程相關(guān)項(xiàng)刪除再啟動(dòng)程序,則界面正常,但是再重啟后,問題依舊。
當(dāng)我找到解決問題的辦法時(shí),才后悔沒多看看SP1的Sample。以下是正確的創(chuàng)建第2個(gè)CMFCToolBar的方法,這里貼上缺省的m_wndToolBar的創(chuàng)建代碼,以便進(jìn)行比較。謝天謝地,這個(gè)問題還是解決了。由于時(shí)間有限,問題的原因到底出現(xiàn)在哪里,還不得而知,如果有朋友細(xì)細(xì)研究過,還望不吝賜教。
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME)) { TRACE0("未能創(chuàng)建工具欄/n"); return -1; // 未能創(chuàng)建 } if (!m_wndToolBarNew.Create(this, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,IDR_TOOLBAR1) || !m_wndToolBarNew.LoadToolBar( IDR_TOOLBAR1)) { TRACE0("未能創(chuàng)建工具欄/n"); return -1; // 未能創(chuàng)建 }
SP1 Sample可以在以下位置找到:
X:/Program Files/Microsoft Visual Studio 9.0/Samples/AllVCLanguageSamples.zip
解壓后的路徑為:
AllVCLanguageSamples/C++/MFC/Visual C++ 2008 Feature Pack
也可以在這個(gè)位置下載到:
http://www.microsoft.com/downloads/details.aspx?familyid=9761BB57-F066-4B70-9318-3965C5E68AAD&displaylang=en
Keyword: Microsoft Visual C++ 2008 SP1 Sample Library
SP1下載地址:
http://msdn.microsoft.com/en-us/library/bb982354.aspx
|
新聞熱點(diǎn)
疑難解答
圖片精選