動態分割視窗:
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 類**如下:
classcfixsplitterwnd :
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 ...