對”深入MDI客戶視窗編程”一文的改進和補充

來源:互聯網
上載者:User

對"深入MDI客戶視窗編程"一文的改進和補充

英業達集團電子技術有限公司
向海

---- 看了貴報刊載的"深入MDI客戶視窗編程"一文,頗有興趣,實際操作了一次,覺得很不錯 整個視窗一(略)所示:

---- 不過,美中不足的是,當我用滑鼠拖動MDI子視窗時,出現了圖二(略)所示情況:

---- 背景怎麽給抹掉了?但當我把整個架構視窗最小化,再還原它的時候,客戶視窗 的背景又恢複正常了,怎麽會是這個樣子呢? 是VC6.0/5.0出錯了嗎?不是的, 這是由於我們在拖動MDI子視窗時,客戶視窗沒有及時重繪的結果 那麽,該怎樣 去修正呢?當用滑鼠拖動子視窗時,我們應該讓當前活動子視窗給主架構視窗發 一個重繪客戶視窗背景的訊息,使用ClassWard在CChildFrame中加入OnMove訊息 處理函數如下:

void CChildFrame::OnMove(int x, int y) {CMDIChildWnd::OnMove(x, y);    //新增代碼 beginCMDIFrameWnd* p_MFrame=GetMDIFrame( );         P_MFrame- >PostMessage(WM_PAINT) ;    //新增代碼 end}

---- 再編譯、運行,剛才的現象沒有啦,一切都好了,無論怎麽拖動MDI子視窗,背景都不會有給抹掉的現象了。

---- 可是,又有問題了,當我把滑鼠放在MDI子視窗的邊框上,並拖動邊框縮小MDI子視窗的尺寸時,出現了圖三所示情況:

---- 同樣的道理,當MDI子視窗的尺寸改變時,我們也得向主架構視窗發一條重繪背景的訊息 使用ClassWard在CChildFrame中加入OnSize訊息處理函數如下:

void CChildFrame::OnSize(UINT nType, int cx, int cy) {CMDIChildWnd::OnSize(nType, cx, cy);//新增代碼 beginCMDIFrameWnd* p_MFrame=GetMDIFrame( );    P_ MFrame - >PostMessage(WM_PAINT) ;    //新增代碼 end}

---- 再編譯、運行,全正常了。

中國電腦世界出版服務公司著作權

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.