亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

VC++實現混合靜態分裂視窗的方法

2019-11-17 05:16:34
字體:
來源:轉載
供稿:網友
摘要 本文以MFC(Microsoft Foundation Class Library)的CsplitterWnd類別為基礎,通過對單文檔視窗的靜態分裂原理進行分析,介紹混合靜態分裂視窗的實現方法,并深入闡述子視窗的視圖動態切換技術。要害詞 靜態分裂視窗 動態切換視圖 混合分裂視窗前言在許多視窗應用軟件中,通常要在屏幕上同時顯示若干個子視窗,以顯示同一個文檔的不同部分,或者是在每個視窗中分別顯示不同文檔的內容。為了實現多視窗界面,可以采用MDI(Multiple Document Interface)的多文檔模式進行處理,但是多文檔的應用程序設計與維護相對于單文檔的應用程序而言比較復雜。而且,假如要在屏幕上同時顯示多個子視窗,通常要利用視窗重疊函數進行治理,每個子視窗的位置往往需要用鼠標人為設定,過多的人為干預降低了程序使用的效率。因此,假如能對單文檔視窗做適當的分裂,無疑程序使用者將可以得到更易于操作的接口,數據的顯示也更加直觀和方便。本文通過對單文檔視窗的靜態分裂原理進行分析,實現上述要求。 二分裂視窗的類型視窗的分裂可分為兩種類型,一是動態分裂,二是靜態分裂。動態分裂可以讓使用者通過拖曳分裂方塊的使用,將視窗分裂。但是,動態分裂最多只可以將視窗分裂為2×2個子視窗,不能進行混合分裂視窗,所有子視窗的屬性和父視窗都是一樣的,而且子視窗的數據通常來源于同一處。而靜態分裂,使用者除了可以調整子視窗的大小和進行混合分裂視窗外,最多可將視窗分裂為16×16個子視窗,每個子視窗可以有各自不同的視圖類(CView),各個子視窗顯示的數據可以來自于不同的數據源。不論是要創建動態分裂視窗還是靜態分裂視窗,都必須要利用MFC的CSplitterWnd類別來完成視窗的分裂?;旌响o態分裂視窗的實現混合分裂視窗是指在子視窗中進行視窗的再分裂。在MFC的框架下,混合分裂視窗必須完成三件工作:⑴在視窗框架類別中定義CSplitterWnd控件為其屬性(數據成員)。⑵重載視窗框架類別中的OnCreateClient函數(CFrameWnd::OnCreateClient),建立靜態分裂子視窗,為靜態分裂子視窗填充視圖。⑶建立維持各子視窗同步更新的機制。首先,利用MFC AppWizard生成一個單文檔應用程序,在應用程序的CMainFrame類別中聲明CSplitterWnd類別的數據成員。其次,重載CMainFrame類別中的OnCreateClient(LPCREATESTRUCT,CCreateContext* pContext)函數。在該函數中利用CsplitterWnd類別的構造函數Create Static(CWnd *pParentWnd,int nRows,int nCols,DWord dwstyle,UINT nID) 創建混合靜態分裂子視窗,即在Create Static分裂出的子視窗中利用CsplitterWnd類別的控件再一次分裂視窗。Create Static函數的參數含義為:·pParentWnd是預備建立靜態分裂視窗的視窗框架控件的指針;·nRows和nCols是預備建立靜態分裂視窗行數(nRows)與列數(nCols)因此,創建的靜態分裂子視窗個數為nRows × nCols個,這兩個參數最小不得小于0,最大不可超過16;dwstyle是設定子視窗的形式;nID靜態分裂的代號(ID),此代號預設為AFX_IDW_PANE_FIRST,若靜態分裂視窗位于另一個分裂視窗內時,不可以使用默認值,可以利用CsplitterWnd類別的成員函數IdFromRowCol(int row,int col)獲得。利用CsplitterWnd類別的成員函數Create View (int row,int col,CruntimeClass* pViewClass,SIZE sizeinit,CcreateContext* pContext) 為靜態分裂子視窗填充視圖,在將視圖與子視窗關聯時必須先完成子視窗的創建。Create View函數的參數含義為: ·row和col是指定預備建立View控件的子視窗,其指定的方式是以表示該子視窗所在的行列位置;·pViewClass是指定用于建立子視窗View控件的View類別,該類別需要被聲明為Run-Time類別;·Sizeini是View控件的起始大小;pContext是一個指向記錄應用程序所使用的視窗框架控件、Document控件,以及View控件之變量的指針,此參數在CMainFrame::OnCreateClient函數被調用時傳入,再由該函數傳遞給此函數?!splitterWnd類別的成員函數SetColumnInfo(int col,int cxIdeal,int cxMin)和SetRowInfo(int row,int cyIdeal,cyMin)為設置子視窗的寬度和高度,參數cxIdeal和cxMin是指定子視窗的寬度和最小寬度,cyIdeal和cyMin是指定子視窗的高度和最小高度,在使用這兩個函數調整子視窗的大小后還應該使用該類別的成員函數RecalLayout()重新調整視窗框架的布局。假如要設定視窗框架里的活動子視窗,可以通過CsplitterWnd類別的成員函數SetActivePane(int row,int col,CWnd* pWnd=NULL)來完成,該函數指定子視窗的方式有兩種,一是指出子視窗所在的行列,二是傳入指向該子視窗的控件指針。
最后,將視窗分裂成多個子視窗后,整個視窗程序中將存在多個View控件。當在其中一個View控件執行更新操作時,如何讓其它View控件同步更新數據?可以通過文檔類別(CDocument)的UpdateAllViews(CView* pSender,LPARAM lHint,CObject* pHint)成員函數的調用,再由該函數分別調用目前存在于視窗程序中各View控件的On Update函數來完成數據的同步更新。UpdateAllViews函數的參數含義為:·pSender是指向引發更新操作的View控件指針,假如傳入NULL表示所有視圖都要執行更新操作;·lHint是用于傳送更新視圖時,需要傳送的額外信息參數;·pHint是指向記錄更新視圖所需額外信息的控件。在調用該函數時,將View控件的指針傳入的目的是要告訴該函數該子視圖已經完成數據更新,該函數不需要再調用該子視圖的On Update進行數據更新。 三層交換技術 交換機與路由器密碼恢復 交換機的選購 路由器設置專題 路由故障處理手冊 數字化校園網解決方案 子視圖的動態切換在多視圖應用程序中,可以通過改變CCreateContext對象的值,來創建更加靈活的視圖,實現多視圖的動態切換。CCreateContext是MFC框架所使用的一種數據結構,它將構成文檔/視圖結構的組件聯系起來。這個結構包括指向文檔的指針、視窗框架的指針、視圖的指針以及文檔模板的指針,它還包含一個指向CRuntimeClass結構的指針,以指明所創建的視圖的類型。其數據成員如下:·m_pNewViewClass是指向創建上下文的視圖的CRuntimeClass結構的指針; ·m_pNewDocTemplate是指向與視窗框架的創建相聯系的文檔模板的指針;·m_pCurrentDoc是指向文檔對象的指針,以和新視圖聯系起來;·m_pLastView是指向已存在的視圖的指針,它是新產生的視圖的模型;·m_pCurrentFrame是指向已存在的視窗框架的指針,它是新產生的視窗框架的模型。此外,任何一個從CObject類別繼續而來的子類別,在使用宏DECLARE_DYNAMIC、DECLARE_DYNCREATE、DECLARE_SERIAL三個中的任意一個時都會產生一個CRuntimeClass結構的靜態對象,RUNTIME_CLASS返回的就是這個對象的指針,這個對象包含了其基類和本身在運行時刻的信息。在單文檔靜態分裂視窗的應用程序中,利用CsplitterWnd類別的成員函數Delete View(int row,int col)可以刪除子視窗的原有視圖,然后再通過該類別的成員函數Create View為子視窗創建新的視圖。但是,創建新視圖前必須初始化創建上下文相關指針,即對CCreateContext結構賦值。值得注重的是,使用Create View函數創建的新視圖不能自動調用視圖類別的成員函數OnInitialUpdate和自動顯示并且激活新視圖,需要人工調用OnInitialUpdate函數和ShowWindow(SW_SHOW) 函數,這些函數的調用都可以通過CsplitterWnd類別的成員函數Get Pane(int row,int col)獲得新視圖的指針來完成。結束語在MFC的框架下,混合分裂視窗有多種編程方法,本文只是從CsplitterWnd類別的角度去分析混合靜態分裂視窗的實現方法,希望能給讀者起到拋磚引玉的作用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线性爱视频| 日本中文字幕久久看| 精品久久久久久| 青青在线视频一区二区三区| 国产成人啪精品视频免费网| 992tv在线成人免费观看| 久久久久久久久久久免费精品| 欧美日韩中国免费专区在线看| 91精品久久久久| 成人免费观看网址| 热门国产精品亚洲第一区在线| 成人免费网站在线观看| 亚洲美女性视频| 日韩中文字幕视频在线观看| 韩国一区二区电影| 日韩中文理论片| 日本不卡免费高清视频| 91丝袜美腿美女视频网站| 免费97视频在线精品国自产拍| 国产欧美久久久久久| 欧美日韩视频免费播放| 九色精品免费永久在线| 亚洲91精品在线观看| 久久久久久亚洲精品| 中文字幕精品久久久久| 26uuu亚洲国产精品| 亚洲精品白浆高清久久久久久| 亚洲精品国产综合区久久久久久久| 欧美日韩国产一区中文午夜| 欧美整片在线观看| 成人久久18免费网站图片| 欧美性xxxx极品高清hd直播| 久久久久久久久久久91| 在线国产精品播放| 中文字幕无线精品亚洲乱码一区| 日韩欧美中文字幕在线播放| 国产日韩欧美综合| 一本色道久久综合亚洲精品小说| 超碰97人人做人人爱少妇| 欧美大片欧美激情性色a∨久久| 欧美在线视频播放| 国产亚洲精品久久久优势| 久久频这里精品99香蕉| 在线播放国产一区二区三区| 日韩av电影在线网| 久久精品一区中文字幕| 欧美高清无遮挡| 国产一区二区三区高清在线观看| 日韩不卡中文字幕| 欧美丝袜一区二区三区| 亚洲成人精品在线| 亚洲美女视频网站| 欧洲永久精品大片ww免费漫画| 国产精品88a∨| 欧美麻豆久久久久久中文| 国产精品无码专区在线观看| 久久亚洲综合国产精品99麻豆精品福利| 国产精品极品尤物在线观看| 91精品国产综合久久男男| 久久久久久久av| 国产在线拍揄自揄视频不卡99| 美女av一区二区三区| 亚洲欧美另类在线观看| 欧美色另类天堂2015| 欧美激情中文字幕乱码免费| 韩曰欧美视频免费观看| xvideos国产精品| 美女视频黄免费的亚洲男人天堂| 国产丝袜一区二区三区免费视频| 国产精品一区二区av影院萌芽| 亚洲国产精品国自产拍av秋霞| 精品亚洲男同gayvideo网站| 精品亚洲一区二区三区在线播放| 色婷婷综合久久久久中文字幕1| 美日韩精品免费观看视频| 免费97视频在线精品国自产拍| 91国在线精品国内播放| 欧美裸体xxxx极品少妇| 国模叶桐国产精品一区| 欧美日韩一二三四五区| 亚洲成年人在线播放| 亚洲精品国精品久久99热| 亚洲iv一区二区三区| 国产精品国产亚洲伊人久久| 国内精品免费午夜毛片| 国产91色在线| 亚洲人成电影网站色| 欧美激情a∨在线视频播放| 成人av.网址在线网站| 成人黄色免费片| 国产裸体写真av一区二区| 精品一区二区三区四区在线| 精品久久久精品| 草民午夜欧美限制a级福利片| 韩国欧美亚洲国产| 国产精品精品国产| 国产精品欧美亚洲777777| 清纯唯美亚洲激情| 国产999精品久久久| 国产精品视频网站| 久久久成人av| 欧美夫妻性生活xx| 欧美性xxxx极品高清hd直播| 热久久美女精品天天吊色| 欧美大片欧美激情性色a∨久久| 亚洲а∨天堂久久精品9966| 亚洲视频电影图片偷拍一区| 日韩一级裸体免费视频| 国产精品久久久久久影视| 伊人伊成久久人综合网小说| 国产精品久久久久国产a级| 欧美成人午夜免费视在线看片| 51色欧美片视频在线观看| 欧美黑人极品猛少妇色xxxxx| 欧美激情亚洲精品| 欧美电影在线观看网站| 成人网在线观看| 国产精品综合不卡av| 亚洲男人天堂网站| 国产精品久久久久久久av大片| 深夜福利日韩在线看| 26uuu国产精品视频| 色噜噜久久综合伊人一本| 欧美视频专区一二在线观看| 日本精品一区二区三区在线播放视频| 精品偷拍一区二区三区在线看| 国产精品久久久久av| 中文字幕日韩专区| 欧美日韩国产在线| 亚洲一二在线观看| 欧美激情第6页| 国产亚洲一级高清| 97精品一区二区三区| 中文国产成人精品| 国产精品高潮呻吟久久av黑人| 91在线观看免费| www.日韩.com| 在线精品国产欧美| 欧美激情网友自拍| 亚洲第一网站免费视频| 欧美激情免费视频| 色中色综合影院手机版在线观看| 日韩一区二区av| 97色在线播放视频| 日韩人体视频一二区| 91探花福利精品国产自产在线| 国产亚洲精品激情久久| 久久久国产精品亚洲一区| 国产精品老女人视频| 成人久久一区二区| 亚洲精品一区中文字幕乱码| 欧美黑人性猛交| 国产精品久久久久高潮| 亚洲在线视频观看| 国产精品黄色影片导航在线观看| 欧洲美女7788成人免费视频| 成人黄色免费网站在线观看| 欧美中文字幕视频| 亚洲三级黄色在线观看| 精品久久久久久久中文字幕| 国产精品v片在线观看不卡| 77777少妇光屁股久久一区| 国产69精品99久久久久久宅男| 91视频国产高清|