MFC單文件檢視切換
1 首先利用資源編輯器新建4個對話方塊,在對話方塊中新增需要的控制元件,各個對話方塊的ID分別為IDD_MULTIVIEW_FORM,IDD_MULTIVIEW_FORM2,IDD_MULTIVIEW_FORM3,IDD_MULTIVIEW_FORM4
2 為每一個對話方塊建立一個CFormView類的派生類,分別為:CView1,CView2,CView3,CView4
3 在應用程式的初始化檔案中用CView1替換原先的檢視,這樣程式啟動後的預設顯示檢視是CView1,修改後的部分程式碼如下:
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CMultiViewDoc),
RUNTIME_CLASS(CMainFrame), // main SDI frame window
RUNTIME_CLASS(CView1));
AddDocTemplate(pDocTemplate);
4 利用資源編輯器,新增幾個選單,並新增相應的訊息處理函式:
void CMainFrame::OnViewView1()
{
SwitchToForm(IDD_MULTIVIEW_FORM);
}
void CMainFrame::OnViewView2()
{
SwitchToForm(IDD_MULTIVIEW_FORM2);
}
void CMainFrame::OnViewView3()
{
SwitchToForm(IDD_MULTIVIEW_FORM3);
}
void CMainFrame::OnViewView4()
{
SwitchToForm(IDD_MULTIVIEW_FORM4);
}
在SDI中CFrame的派生類即CMainFrame控制著所有的檢視,而且它允許使用者通過訊息處理進行檢視的切換。進行檢視切換的原理很簡單,只是斷開和舊檢視的連線並把他刪除,建立一個新檢視,將文件和它相連,設定幾個標誌,然後顯示新檢視,SwitchToForm函式是進行檢視切換的程式碼函式。
void CMainFrame::SwitchToForm(int nForm)
{
//CDocument* pDoc = GetActiveDocument();
CView *pOldActiveView=GetActiveView(); //儲存舊檢視
CView *pNewActiveView=(CView*)GetDlgItem(nForm); //取得新檢視
if(pNewActiveView==NULL)
{
switch(nForm)
//這些ID是對話方塊的標誌符,但也可以用其他的標誌
{
case IDD_MULTIVIEW_FORM :
pNewActiveView=(CView*)new CView1;
break;
case IDD_MULTIVIEW_FORM2 :
pNewActiveView=(CView*)new CView2;
break;
case IDD_MULTIVIEW_FORM3 :
pNewActiveView=(CView*)new CView3;
break;
case IDD_MULTIVIEW_FORM4 :
pNewActiveView=(CView*)new CView4;
break;
}
CCreateContext context; //將文擋和檢視相連
context.m_pCurrentDoc=pOldActiveView->GetDocument();
pNewActiveView->Create(NULL, NULL, WS_BORDER|WS_CHILD ,
CFrameWnd::rectDefault, this, nForm, &context);
pNewActiveView->OnInitialUpdate();
}
SetActiveView(pNewActiveView); //改變活動的檢視
pNewActiveView->ShowWindow(SW_SHOW); //顯示新的檢視
pOldActiveView->ShowWindow(SW_HIDE); //隱藏舊的檢視
if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CView1))
pOldActiveView->SetDlgCtrlID(IDD_MULTIVIEW_FORM);
else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CView2))
pOldActiveView->SetDlgCtrlID(IDD_MULTIVIEW_FORM2);
else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CView3))
pOldActiveView->SetDlgCtrlID(IDD_MULTIVIEW_FORM3);
else if(pOldActiveView->GetRuntimeClass() ==RUNTIME_CLASS(CView4))
pOldActiveView->SetDlgCtrlID(IDD_MULTIVIEW_FORM4);
pNewActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST);
delete pOldActiveView; //刪除舊檢視
RecalcLayout(); //調整框架視窗
}
相關推薦
MFC單文件檢視切換
在一些情況下,應用程式有許多資訊要顯示,當一個視窗內顯示不下時,VC提供的MDI應用程式可以解決這個問題,但是如果應用程式只是對單個文件,採用多種方式顯示,則採用SDI更合適。那麼,如何在單文件應用程式中實現多檢視呢?預設情況下,派生類的建構函式是pretected型別的,必須將它改為publi
MFC單文件檢視之圖片載入
//方法一CDC memDC; HBITMAP H_bit; BITMAP bit; H_bit = (HBITMAP)LoadImage(::AfxGetInstanceHandle(),
[Windows]MFC單文件實現選單切換
我們在載入單文件主介面時找到如下程式碼,當然可以在解決方案中尋找IDR_MAINFRAME,以確定其位置 // 註冊應用程式的文件模板。文件模板 // 將用作文件、框架視窗和檢視之間的連線
MFC的單文件檢視結構(摘錄)
文件 文件物件用於管理和維護資料,包括儲存資料、取出資料以及修改資料等操作,在資料被修改以後,文件可以通知其對應的所有檢視更新顯示。 檢視 檢視物件將文件中的資料視覺化,負責從文件物件中取出資料顯示給使用者,並接受使用者的輸
VS2010中單文件檢視中增加對話方塊
1,建立一個對話方塊類CMyFormDlg,基類為CFormView;建立類時會自動關聯生成一個對話方塊資源,IDD_MYFORMDLG 注意:基類應為CFormView 2,在MainFrm.h中的CMainFrame類中定義一個視窗拆分類: CSplit
MFC 單文件自定義exe程式左上角圖示
我使用的是vs2012。 1、首先新建一個單文件工程 2、開啟MainFrm.cpp,在OnCreat()函式中return 0;之前新增下列語句: TCHAR path[100]; GetCurrentDirectory(255,pa
MFC單文件生成多個CMFCToolbar時需要解決的問題
1. 單文件預設生成的工具欄只有一個,但很多時候我們需要新增多個工具欄,比如: m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);m_wndFileToolBar.EnableDocking(CBRS_ALIGN_ANY);m_wndCalibrateT
VS2010-MFC:單文件左側可停靠對話方塊(包含樹控制元件)的實現
在程式開發中我們經常看見有一些軟體左側有目錄樹或者是圖層樹,點選之後就可以右側View視窗顯示相關的內容,其實實現這種機制有兩種方法,第一種就是對MFC的View視窗進行視窗分割,左側的視窗view類派生於CTreeView,其中CTreeView自帶一個變數用於View中的樹控制元件的控制。第二
OpenCV下MFC單文件顯示影象
1、vs2008中新建SDI,最後view類選擇ScorllView以形成帶滾動條的檢視視窗 2、新增OpenCV的連結庫 3、新增相應標頭檔案"cv.h" "highgui.h"到doc.h和view.h(要新增在.h檔案中,不要新增在.cpp中,否則容易出錯) 4、doc類中新增變數
MFC-單文件-各個類之間的獲取
View 中獲取Doc //獲取文件類指標物件 XXXDoc *pDoc = (XXXDoc*)GetDocument(); 在Doc中 獲得 View //獲取檢視類指標物件 CUserTreeView *pTreeView; //文件其
MFC-單文件-拆分視窗
自定義兩個類CUserTreeView(繼承於CTreeView,顯示使用者資訊)、CMedicListView(繼承於CListView,顯示藥品資訊): 類檢視中,選中頂層資料夾 -> 右擊 -> 新增類 -> MFC -> ……
MFC單文件框架分析及執行流程(轉)
原文轉自 https://blog.csdn.net/u011619422/article/details/40402705 首先來分析一下MFC單文件類的結構: 它包括如下幾個類: CAboutDlg : 對話方塊框類,對應應用程式的“幫助”->“關於”選單,彈出“關
MFC 單文件新增按鈕
VS 單文件 新增按鈕 今天做專案需要在單文件中建立按鈕來響應函式,即點選按鈕,呼叫某函式,特此記錄。 1. 在XXXView中新增CButton變數,例如 CButton start; 2. 下來就是 建立按鈕 了 ① 在資源 Rescource.h 中註冊一下 按鈕 #define
MFC單文件修改標題和標題圖示
一.修改標題 在doc類中OnNewDocument函式修改,新增修改的標題,如下: BOOL CKTLXSubjectShowDoc::OnNewDocument(){if (!CDocument::OnNewDocument())return FALSE;SetTitl
openGL三維網格座標,旋轉,縮放,燈光設定,紋理讀取,模型讀取(MFC單文件)
1.三維網格座標建立 2.基本3維圖形建立 3.滑鼠相應旋轉縮放 4.鍵盤相應旋轉縮放 5.燈光設定 6.紋理載入對映 7.讀取模型 關於MFC配置編寫openGL網上有很多教程 需要的函式建立一般是: OnCreat()
MFC單文件開啟檔案
開啟檔案類之間關聯 在嚮導建立的應用程式中,程式的預設選單有“檔案”、“編輯”、“檢視”和“幫助”。當執行程式後,開啟“檔案”選單中的“開啟”命令時,應用程式會自動開啟相應的“開啟”檔案通用對話方塊。之所以有這功能,是因為嚮導建立的應用程式框架中,自動將“開啟”選單命令與CWinApp的OnFileOpen成
VTK與MFC單文件程式聯合程式設計
興趣需要,想做下VTK與MFC想結合的程式,MFC快要在桌面程式上面失去市場份額了,現在大多使用QT來做,但是本科的時候學的就是MFC,也相對來說比較熟悉,所以就想使用MFC來寫一個簡單的單文件程式。首先我們需要在編譯的時候將USEGUISUPPORT->USEMFC勾
mfc 單文件 退出
vc++建立一個文件,通過但是檢視上的按鈕來關閉這個檢視。 語句如下: void CXXXXView::OnCancel() { // TODO: Add your control notification handler code here ::PostMess
MFC 單文件中新增OnPaint
單文件中新增OnPaint()方法: 1、在xxxView.h裡新增 // 生成的訊息對映函式 protected: DECLARE_MESSAGE_MAP() public: afx_msg void OnPaint(); 2、實現OnPaint 3、在xx
滑鼠滾輪實現單文件檢視的放大與縮小
滑鼠滾輪實現單文件檢視的放大與縮小 其主要原理是利用SetWindowExt和SetViewportExt函式來動態調節視窗區和視口區的比例,設視窗區與視口區之間的比例係數為m_delta,滑鼠滾輪每滾動一次,在檢視View類的響應函式OnPrepareDC中就改變一次m_delta,然後呼叫O