MFC 視窗分割

2022-05-30 17:24:10 字數 1913 閱讀 1976

動態分割視窗:

bool cmainframe::oncreateclient(lpcreatestruct lpcs, ccreatecontext*pcontext)

else

//return cframewnd::oncreateclient(lpcs, pcontext);

}

靜態分割視窗:

為mainframe類新增兩個成員變數如下,並過載虛函式oncreateclient,以實現視窗分割。

csplitterwnd m_wndsplitter1;

csplitterwnd m_wndsplitter2;

virtual bool oncreateclient(lpcreatestruct lpcs, ccreatecontext* pcontext);

以cview為基類建立cview2,cview3,cview4類。

在mainframe.cpp包含所有檢視標頭檔案

bool cmainframe::oncreateclient(lpcreatestruct lpcs, ccreatecontext*pcontext)

固定分割視窗的分割線:

以 csplitterwnd為基類,建立新的cfixsplitterwnd 類,並在cfixsplitterwnd 類中手動新增wm_lbuttondown、wm_mousemove、wm_setcursor訊息的訊息對映和訊息響應函式。

cfixsplitterwnd 類**如下:

class

cfixsplitterwnd :

public

csplitterwnd

//鎖定分割線

void unlock() //

不鎖定分割線

declare_message_map()

afx_msg

void

onlbuttondown(uint nflags, cpoint point);

afx_msg

void

onmousemove(uint nflags, cpoint point);

afx_msg bool onsetcursor(cwnd*pwnd, uint nhittest, uint message);

};

cfixsplitterwnd::cfixsplitterwnd(bool b_lock)

cfixsplitterwnd::~cfixsplitterwnd()

begin_message_map(cfixsplitterwnd, csplitterwnd)

on_wm_lbuttondown()

on_wm_mousemove()

on_wm_setcursor()

end_message_map()

void

cfixsplitterwnd::onlbuttondown(uint nflags, cpoint point)

void

cfixsplitterwnd::onmousemove(uint nflags, cpoint point) //移動滑鼠

bool cfixsplitterwnd::onsetcursor(cwnd*pwnd, uint nhittest, uint message) //設定游標

在cmainframe類中 ,m_wndsplitter1、 m_wndsplitter2的基類由 csplitterwnd 設定為 cfixsplitterwnd.過載的 oncreateclient **如下.

bool cmainframe::oncreateclient(lpcreatestruct lpcs, ccreatecontext*pcontext)

MFC分割視窗總結

mfc提供了csplitterwnd類切分sdi程式的客戶區,步驟如下 1 建立sdi應用程式divwindow。2 為cmainframe新增兩個csplitterwnd型別的成員變數,如下所示 csplitterwndm wndsplittermain 主分隔條 csplitterwnd m w...

MFC單文件分割視窗

建立單文件程式 新建兩個對話方塊,用於分割視窗,對話方塊的style屬性改為child,border屬性改為none,最開始沒有改這個,程式執行的時候報錯了。將兩個對話方塊生成從cformview派生的類。在cmainframe中新增兩個成員變數,型別為csplitterwnd,如下所示 cspli...

單文件mfc視窗分割

說明 第一次發表部落格,全當為自己學習做個記錄,將自己的學習新東西和bug整理記錄,方便自己日後的學習。內容有借鑑別人的地方,結尾均附上別人的鏈結。1 新建單文件專案,生成如下幾個類 2 在mainfrm。h檔案中新增如下 csplitterwnd m splitwnd1 csplitterwnd ...