国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MFC多文檔如何分割窗口

這篇具有很好參考價值的文章主要介紹了MFC多文檔如何分割窗口。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文記錄如何在MFC多文件中分割窗口并實現(xiàn)窗口之間的數(shù)據(jù)傳遞

1、在ChildFrame中定義一個分割嵌入一個CSplitterWnd成員變量。

CSplitterWnd m_splitterWnd;

2、創(chuàng)建兩個對話框,設(shè)置對話框的屬性:將‘樣式’設(shè)置為‘下層’;禁止使用標題欄;邊框選擇‘調(diào)整大小’;其他格式暫時都不設(shè)置;

MFC多文檔如何分割窗口

?文章來源地址http://www.zghlxwxcb.cn/news/detail-461145.html

MFC多文檔如何分割窗口

?

?

MFC多文檔如何分割窗口

?

?

?為對話框添加類,類名CLeftView和CRightView;父類選擇為CFormView;

我們希望左邊的對話框輸入兩個加數(shù),通過點擊按鈕將兩個加數(shù)傳遞給文本,文本計算兩個加數(shù)的和并傳遞給右邊的對話框,并將結(jié)果輸出在右邊的編輯框中。之后點擊右邊對話框中的按鈕又可以將值傳遞給左邊的對話框,并將傳遞的數(shù)據(jù)顯示在左邊的編輯框中,因此為圖中各個編輯框添加CString類型的值變量,并設(shè)置各個控件ID。右邊編輯框的ID為IDC_EDIT_RESULT,左邊編輯框從上到下的ID分別為IDC_EDIT_NUM1、IDC_EDIT_NUM2、IDC_EDIT_SUM。

在CLeftView中添加如下變量

public:
	// 第一個加數(shù)
	CString num1;
	// 第二個加數(shù)
	CString num2;
	// 兩個加數(shù)的和
	CString sum;

在CRightView中添加如下變量

public:
	// 兩個加數(shù)的結(jié)果
	CString result;

由于通過文本進行交互,故需要在文本CSplitDoc中添加如下變量

public:
	CString m_num1;
	CString m_num2;
	CString m_sum;
	CString m_result;

3、接下來開始分割窗口,由于是多文檔結(jié)構(gòu),故在子框架中進行分割,在ChildFrame中重寫OnCreateClient函數(shù)。

BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
	// TODO: 在此添加專用代碼和/或調(diào)用基類
	CRect rect;
	GetClientRect(&rect);
	m_splitterWnd.CreateStatic(this, 1, 2);//一行兩列
	m_splitterWnd.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(rect.Width() / 4, rect.Height()), pContext);//第一行第一列中放入第一個對話框
	m_splitterWnd.CreateView(0, 1, RUNTIME_CLASS(CRightView), CSize(rect.Width() - rect.Width() / 5, rect.Height()), pContext);//第一行第二列中放入第二個對話框
	return TRUE;

	//return CMDIChildWnd::OnCreateClient(lpcs, pContext);
}

此時運行應(yīng)該可以得到如圖所示的結(jié)果:

MFC多文檔如何分割窗口

4、接下來考慮數(shù)據(jù)交互的問題

我們希望點擊左邊對話框的Button1可以實現(xiàn)將加數(shù)1和加數(shù)2的值傳遞給文本,則給Button1添加事件處理程序。并在處理程序中定義一個文檔類的指針,通過指針將值傳遞給文檔。

void CLeftView::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知處理程序代碼
	UpdateData();
	CSplitDoc* pDoc = (CSplitDoc*)GetDocument();
	pDoc->m_num1 = num1;
	pDoc->m_num2 = num2;
	pDoc->UpdateAllViews(NULL);
}

?那么對于數(shù)據(jù)接收呢,要在右邊的對話框中接收,則在CRightView中重寫ondraw函數(shù)

void CRightView::OnDraw(CDC* pDC)
{
	// TODO: 在此添加專用代碼和/或調(diào)用基類
	CSplitDoc* pDoc = (CSplitDoc*)GetDocument();
	ASSERT_VALID(pDoc);
	pDoc->m_sum = pDoc->m_num1 + pDoc->m_num2;
	//pDC->TextOutW(500, 200, pDoc->m_sum);
	SetDlgItemText(IDC_EDIT_RESULT, pDoc->m_sum);
}

?同樣的,在右邊對話框要向左邊對話框傳遞數(shù)據(jù)也是一樣的,具體代碼如下:

void CRightView::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知處理程序代碼
	UpdateData();
	CSplitDoc* pDoc = (CSplitDoc*)GetDocument();
	pDoc->m_result = result;
	pDoc->UpdateAllViews(NULL);
}
void CLeftView::OnDraw(CDC* /*pDC*/)
{
	// TODO: 在此添加專用代碼和/或調(diào)用基類
	CSplitDoc* pDoc = (CSplitDoc*)GetDocument();
	ASSERT_VALID(pDoc);
	SetDlgItemText(IDC_EDIT_SUM, pDoc->m_result);
}

至此,基本上完成了兩個分割視圖的數(shù)據(jù)交互。這里我認為接收的代碼不一定要重寫ondraw函數(shù),不過還是在嘗試階段,先在ondraw中接收吧。下面是程序運行的結(jié)果:

MFC多文檔如何分割窗口

MFC多文檔如何分割窗口?

MFC多文檔如何分割窗口?

?

到了這里,關(guān)于MFC多文檔如何分割窗口的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【MFC】06.MFC六大機制:窗口創(chuàng)建機制-筆記

    接上文【MFC】05.MFC第一大機制:程序啟動機制-筆記,這一篇文章來帶領(lǐng)大家逆向分析MFC第二大機制:窗口創(chuàng)建機制的源碼。 我們知道,在Win32編程中,如果我們要創(chuàng)建一個窗口,基本步驟為: 注冊窗口 創(chuàng)建一個窗口,必須要給一個類名稱 消息處理回調(diào)函數(shù) 那么MFC的窗口創(chuàng)建

    2024年02月13日
    瀏覽(22)
  • 【MFC】06.MFC第二大機制:窗口創(chuàng)建機制-筆記

    接上文【MFC】05.MFC第一大機制:程序啟動機制-筆記,這一篇文章來帶領(lǐng)大家逆向分析MFC第二大機制:窗口創(chuàng)建機制的源碼。 我們知道,在Win32編程中,如果我們要創(chuàng)建一個窗口,基本步驟為: 注冊窗口 創(chuàng)建一個窗口,必須要給一個類名稱 消息處理回調(diào)函數(shù) 那么MFC的窗口創(chuàng)建

    2024年02月14日
    瀏覽(22)
  • MFC 隱藏窗口

    親測能用 改變主窗體的創(chuàng)建方式 將?C***App::InitInstance() 函數(shù)中的代碼 替換為

    2024年02月11日
    瀏覽(18)
  • mfc 浮動窗口

    mfc 浮動窗口

    參考 MFC模擬360懸浮窗加速球窗口

    2024年02月09日
    瀏覽(25)
  • MFC 第二部分 : 窗口類成員接口

    所有窗口類的基類:類 CWnd,封裝了 Windows 窗口句柄 HWND。 成員函數(shù) DestroyWindow 可以消毀 Windows 窗口,而不需要消毀 CWnd 對象。 m_hWnd 與該 CWnd 對象相關(guān)聯(lián)的 Windows 窗口句柄(HWND); 窗口大小和位置 GetWindowRgn 獲得窗口的窗口區(qū)域的拷貝 SetWindowRgn 設(shè)置窗口區(qū)域 IsIconic 判斷窗口是

    2024年02月06日
    瀏覽(56)
  • MFC窗口透明化以及透明穿透

    MFC窗口透明化以及透明穿透

    MFC編程時,有時候我們需要實現(xiàn)窗口透明化,可以通過SetLayeredWindowAttributes設(shè)置窗口透明色和透明度來實現(xiàn)窗口透明化。而要使窗口擁有透明效果,前提是窗口要有WS_EX_LAYERED擴展屬性,需用SetWindowLong設(shè)置窗口支持拓展風格。 一、窗口透明化說明 1.窗口透明化有三種模式: 第一

    2024年02月09日
    瀏覽(17)
  • MFC 簡單的SendMessage子窗口調(diào)用主窗口函數(shù)(消息映射)的實現(xiàn)

    MFC 簡單的SendMessage子窗口調(diào)用主窗口函數(shù)(消息映射)的實現(xiàn)

    只說實現(xiàn),不講原理 環(huán)境:VS2022 community版 0.先建立一個全局調(diào)用的主對話框的指針g_pMainThis; 1.建立一個基于對話框的MFC工程; 2.在預(yù)編譯頭文件“phc.h”或“stdafx.h”定義消息調(diào)用的宏,其值要“WM_USER+100”以上; 3.在主對話框類建立消息映射的功能實現(xiàn)函數(shù); 4.建立一個子

    2024年02月11日
    瀏覽(25)
  • Opencv顯示圖片(MFC基于對話框窗口)

    Opencv顯示圖片(MFC基于對話框窗口)

    #1.編輯對話框按鈕,修改各個按鈕窗口ID和綁定變量 picture 控件 “打開圖片”按鈕控件 #2.編寫顯示圖片函數(shù) void DrawMat(cv::Mat img, UINT nID); .h文件進行聲明 .cpp進行定義 #3.定義CString fun_LoadImg();函數(shù) .h文件進行聲明 .cpp文件進行定義 #4.雙擊“打開圖片”按鈕 系統(tǒng)自動彈出響應(yīng)函數(shù)

    2024年04月15日
    瀏覽(38)
  • 【MFC】10.MFC六大機制:RTTI(運行時類型識別),動態(tài)創(chuàng)建機制,窗口切分,子類化-筆記

    【MFC】10.MFC六大機制:RTTI(運行時類型識別),動態(tài)創(chuàng)建機制,窗口切分,子類化-筆記

    C++: ##是拼接 #是替換成字符串 這是MFC提供的運行時類信息的使用,如果我們自己創(chuàng)建一個類,如果想用這些方法,必須要滿足三個條件: 這個類必須繼承于CObject類 類內(nèi)必須聲明DECLARE_DYNAMIC 類外必須實現(xiàn)IMPLENENT_DYNAMIC 我們來看看是如何實現(xiàn)的: 這里給出RTTI的圖,每一個類中

    2024年02月13日
    瀏覽(24)
  • strimzi實戰(zhàn)之三:prometheus+grafana監(jiān)控(按官方文檔搞不定監(jiān)控?不妨看看本文,已經(jīng)踩過坑了)

    strimzi實戰(zhàn)之三:prometheus+grafana監(jiān)控(按官方文檔搞不定監(jiān)控?不妨看看本文,已經(jīng)踩過坑了)

    這里分類和匯總了欣宸的全部原創(chuàng)(含配套源碼):https://github.com/zq2599/blog_demos 由于整個系列的實戰(zhàn)都涉及到消息生產(chǎn)和消費,所以咱們需要一套監(jiān)控服務(wù),用于觀察各種操作的效果,例如生產(chǎn)消息是否成功、消息是否被消費、有沒有發(fā)生堆積等 因此,在前文完成了最基本的部

    2024年02月08日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包