日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC单文档框架编程(一): 分隔窗口的实现

發布時間:2025/3/21 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC单文档框架编程(一): 分隔窗口的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 在SDI窗口中添加Splitter(1)在stdafx.h中添加:#include <afxcview.h>#include <afxrich.h>(2)在MainFrm.h中添加protected:CSplitterWnd m_wndSplitterLR;CSplitterWnd m_wndSplitterLTB;(3)在MainFrm.cpp中重載OnCreateClientBOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext){// TODO: 在此添加專用代碼和/或調用基類//return CFrameWnd::OnCreateClient(lpcs, pContext);CRect rect;GetClientRect(&rect);int x = rect.Width();int y = rect.Height();int rx = rect.Width()/3;int lx = x - rx;int lyb = rect.Height()/3;int lyt = y - lyb;int ry = rect.Height()/2;m_wndSplitterLR.CreateStatic(this, 1, 2, WS_CHILD|WS_VISIBLE|WS_BORDER);? ? //分隔為左右兩列m_wndSplitterLR.CreateView(0, 1, RUNTIME_CLASS(CFileConfigView),????????????? ? //右邊一列添加視圖:?CFileConfigViewCSize(rx, ry), pContext);m_wndSplitterLTB.CreateStatic(&m_wndSplitterLR, 2, 1,????????????????????????????????????? ? //把左邊一列分隔為上下兩行WS_CHILD|WS_VISIBLE, m_wndSplitterLR.IdFromRowCol(0, 0));m_wndSplitterLTB.CreateView(0, 0, RUNTIME_CLASS(CBrdListView),????????????????? ? //左上窗格添加視圖:?CBrdListViewCSize(lx, lyt), pContext);m_wndSplitterLTB.CreateView(1, 0, RUNTIME_CLASS(CBrdInfoView),????????????????? ? //左下窗格添加視圖:?CBrdInfoViewCSize(lx, lyb), pContext);return TRUE;}(4)?在類視圖中添加類CBrdListView,父類為CListView重載OnInitialUpdate函數,以初始化視圖類CBrdListView。在本例中只初始化列表頭void CBrdListView::OnInitialUpdate(){CListView::OnInitialUpdate();// TODO: 在此添加專用代碼和/或調用基類//添加列表的標頭const int columNumber = 7;CString m_ColumnLabelStr[] = {_T("狀態"),_T("設備名稱"), ?_T("MAC"), _T("IP"),?_T("固件版本"), _T("所在位置"), _T("設備型號")};CListCtrl& listCtrl = GetListCtrl();//獲取列表控件DWORD dwStyle = listCtrl.GetExtendedStyle();dwStyle |= LVS_EX_FULLROWSELECT;dwStyle |= LVS_EX_GRIDLINES;dwStyle |= LVS_EX_UNDERLINEHOT;listCtrl.SetExtendedStyle(dwStyle);CRect rect;GetClientRect(rect);?for(int i = 0; i < columNumber; i++){listCtrl.InsertColumn(i, m_ColumnLabelStr[i], LVCFMT_LEFT, rect.Width()/8);}}(5)?CFileConfigView是一個窗體視圖創建一個窗口,為窗口添加類:CFileConfigView,其父類為CFormView。(6)?CBrdInfoView的父類為CEditView,創建方法同CBrdListView(7) 窗口拖動,重載CMainFrm的OnSize函數,重新設置分隔條比例void CMainFrame::setSplitLayout()? ? //OnSize調用該私有函數{CRect rect;GetClientRect(&rect);int x = rect.Width();int y = rect.Height();int rx = rect.Width()/3;int lx = x - rx;int lyb = rect.Height()/3;int lyt = y - lyb;int ry = rect.Height()/2;m_wndSplitterLR.SetColumnInfo(0, lx, 0);????//給一列設置一個“理想的”寬度m_wndSplitterLR.SetColumnInfo(1, rx, 0);????//第1列,寬度xr,最小寬度0m_wndSplitterLTB.SetRowInfo(0, lyt, 0);//給一行設置一個“理想的”高度m_wndSplitterLTB.SetRowInfo(1, lyb, 0);//第1行,高度yb,最小高度0RecalcLayout();}(7)窗口效果

總結

以上是生活随笔為你收集整理的MFC单文档框架编程(一): 分隔窗口的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。