窗體分割模塊詳細(xì)設(shè)計_第1頁
窗體分割模塊詳細(xì)設(shè)計_第2頁
窗體分割模塊詳細(xì)設(shè)計_第3頁
窗體分割模塊詳細(xì)設(shè)計_第4頁
窗體分割模塊詳細(xì)設(shè)計_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

項目名稱:NeusoftMediaPlayer項目編號:NEU-TRAINING-2008001文檔編號:D09-PMT08004窗體分割模塊詳細(xì)設(shè)計總頁數(shù)16正文14附錄生效日期編制李曉奇批準(zhǔn)目錄TOC\o"1-5"\h\z\o"CurrentDocument"文檔概述1\o"CurrentDocument"文檔目的和范圍1\o"CurrentDocument"術(shù)語/縮略語1\o"CurrentDocument"參考文檔1\o"CurrentDocument"窗體分割模塊功能描述2\o"CurrentDocument"數(shù)據(jù)結(jié)構(gòu)定義2數(shù)據(jù)類型定義2SPC_NMHDR2\o"CurrentDocument"全局變量定義2\o"CurrentDocument"常量定義2\o"CurrentDocument"CSplitterControl類功能實現(xiàn)3\o"CurrentDocument"類數(shù)據(jù)成員3\o"CurrentDocument"類成員函數(shù)3\o"CurrentDocument"CreateSplitter4\o"CurrentDocument"SetRange6\o"CurrentDocument"ChangeWidth7\o"CurrentDocument"ChangeHeight9\o"CurrentDocument"MoveWindowTo11\o"CurrentDocument"DrawLine131文檔概述1.1文檔目的和范圍本文檔描述了使用分隔條對主窗體進(jìn)行分割的相關(guān)內(nèi)容,為日后開發(fā)提供相關(guān)參考和依據(jù)。1.2術(shù)語/縮略語序號術(shù)語/縮略語說明1GUI(GraphicalUserInterface)圖形用戶界面2DC(DeviceContext)圖形設(shè)備環(huán)境1.3參考文檔序號文檔名作者時間版本1NeusoftMediaPlayer項目要求書胡本仁2009-02-04Ver1.22概要設(shè)計_第二組2009-02-24Ver1.02窗體分割模塊功能描述窗體分割模塊位于GUI層,其功能是通過用戶對分隔條的水平或豎直方向的拖拽動態(tài)改變主窗體各個控件尺寸的大小。2.1數(shù)據(jù)結(jié)構(gòu)定義2.1.1數(shù)據(jù)類型定義2?1?1.1SPC_NMHDRtypedefstructSPC_NMHDR{NMHDRhdr;intdelta;}SPC_NMHDR;SPC_NMHDR結(jié)構(gòu)體由通知消息結(jié)構(gòu)體和偏移量兩部分組成,通知消息結(jié)構(gòu)。變量hdr用于記錄消息內(nèi)的具體信息,偏移量:delta記錄水平或豎直方向的拖拽距離2.1.2全局變量定義staticHCURSORSplitterControl_hCursor1=NULL;〃分隔條水平拖拽可選狀態(tài)圖標(biāo)指針staticHCURSORSplitterControl_hCursor2=NULL;〃分隔條垂直拖拽可選狀態(tài)圖標(biāo)指針2.1.3常量定義#defineCW_LEFTALIGN1〃左對齊#defineCW_RIGHTALIGN2//右對齊#defineCW_TOPALIGN3〃頂端對齊#defineCW_BOTTOMALIGN4//底對齊#defineSPS_VERTICAL1〃分隔條垂直拖拽#defineSPS_HORIZONTAL2〃分隔條水平拖拽2.2CSplitterControl類功能實現(xiàn)用戶拖拽分隔條通過對鼠標(biāo)事件的捕獲判斷出拖拽方向和偏移量并表示出拖拽效果,然后逐個設(shè)置需要進(jìn)行改變的控件的寬度或高度,最后更新窗口,從而實現(xiàn)了分割窗口的效果。2.2.1類數(shù)據(jù)成員BOOLm_bIsPressed;//判斷是否選中了分隔條標(biāo)志intm_nType;//分隔條退拽類型intm_nX;//分隔條中心點(diǎn)水平坐標(biāo)intm_nY;//分隔條中心點(diǎn)垂直坐標(biāo)intm_nMin;//分隔條拖拽最小值intm_nMax;//分隔條拖拽最大值intm_nSavePos;//存儲分隔條拖拽過程中的前一水平或垂直坐標(biāo)2.2.2類成員函數(shù)voidCreateSplitter(DWORDdwStyle,constCRect&rect,CWnd*pParent,UINTnID);voidSetRange(intnMin,intnMax);staticvoidChangeWidth(CWnd*pWnd,intdx,DWORDdwFlag=CW_LEFTALIGN);staticvoidChangeHeight(CWnd*pWnd,intdy,DWORDdwFlag=CW_TOPALIGN);voidMoveWindowTo(CPointpt);virtualvoidDrawLine(CDC*pDC,intx,inty);

CreateSplitter2.通過判斷分隔條拖拽方向設(shè)置分隔條的寬度和高度3.調(diào)用父類創(chuàng)建方法【函數(shù)式樣】表2-12.通過判斷分隔條拖拽方向設(shè)置分隔條的寬度和高度3.調(diào)用父類創(chuàng)建方法函數(shù)名CreateSplitter函數(shù)作用范圍public類名CSplitterControl功能概要創(chuàng)建分隔條,并對分隔條屬性進(jìn)行設(shè)置記述形式BOOLCSplitterControl::CreateSplitter(DWORDdwStyle,constCRect&rect,CWnd*pParent,UINTnID)參數(shù)類型變量名I/O說明DWORDdwStyleI分隔條類型屬性constCRectrectI控件屏幕坐標(biāo)值CWndpParentI窗口指針UINTnIDI控件ID返回值類型BOOL說明值TRUE分隔條創(chuàng)建成功FALSE分隔條創(chuàng)建失敗詳細(xì)說明1.獲取分隔條屬性信息4.判斷拖拽光標(biāo)指針是否為空如果為空則標(biāo)載入水平或垂直標(biāo)準(zhǔn)光標(biāo)4.CreateSplitter函數(shù)處理邏輯:(見圖2-1)圖2-1CreateSplitter流程圖SetRange【函數(shù)式樣】表2-2函數(shù)名SetRange函數(shù)作用范圍public類名CSplitterControl功能概要設(shè)置分隔條拖拽范圍的最小值和最大值記述形式BOOLCSplitterControl::SetRange(intnMin,intnMax)參數(shù)類型變量名I/O說明intnMinI拖動范圍最小值inttnMaxI拖動范圍最大值返回值類型BOOL說明值TRUE拖動范圍設(shè)置完畢詳細(xì)說明1.對成員變量中的范圍最小值和最大值進(jìn)行賦值使用注意事

ChangeWidth【函數(shù)式樣】表2-3函數(shù)名ChangeWidth函數(shù)作用范圍public類名CSplitterControl功能概要改變控件寬度記述形式BOOLCSplitterControl::ChangeWidth(CWnd*pWnd,intnOffset,DWORDdwFlag)參數(shù)類型變量名I/O說明CWndpWndI控件指針intnOffsetI需要改變的寬度或高度DWORDdwFlagI控件的對齊方式返回值類型BOOL說明值TRUE寬度設(shè)置結(jié)束詳細(xì)說明1.獲取父窗口指針判斷父窗口是否存在且類型為Window類型獲取控件的屏幕坐標(biāo)并轉(zhuǎn)換為窗口的相對坐標(biāo)4.判斷控件的對齊方式改變控件的寬度調(diào)用控件的MoveWindow方法改變控件寬度使用注意事ChangeWidth函數(shù)處理邏輯:(見圖2-3)控件是否為左對齊否結(jié)束開始改變控件的寬度父窗口指針不為空且類型為Window獲取控件的屏幕坐標(biāo)并轉(zhuǎn)換為窗口的相對坐標(biāo)增加寬度減小寬度獲取父窗口指針ChangeHeight【函數(shù)式樣】表2-4函數(shù)名ChangeHeight函數(shù)作用范圍public類名CSplitterControl功能概要改變控件高度記述形式BOOLCSplitterControl::ChangeHeight(CWnd*pWnd,intnOffset,DWORDdwFlag)參數(shù)類型變量名I/O說明CWndpWndI控件指針intnOffsetI需要改變的寬度或高度DWORDdwFlagI控件的對齊方式返回值類型BOOL說明值TRUE寬度設(shè)置結(jié)束詳細(xì)說明1.獲取父窗口指針判斷父窗口是否存在且類型為Window類型獲取控件的屏幕坐標(biāo)并轉(zhuǎn)換為窗口的相對坐標(biāo).判斷控件的對齊方式.改變控件的高度6.調(diào)用控件的MoveWindow方法改變控件高度使用注意事ChangeHeight函數(shù)處理邏輯:(見圖2-4)圖2-4ChangeHeight流程圖MoveWindowTo2.判斷父窗口是否存在且類型為Window類型3.獲取控件的屏幕坐標(biāo)并轉(zhuǎn)換為窗口的相對坐標(biāo)4.判斷分隔條的拖動方向5.改變分隔條的坐標(biāo)【函數(shù)式樣】表2-52.判斷父窗口是否存在且類型為Window類型3.獲取控件的屏幕坐標(biāo)并轉(zhuǎn)換為窗口的相對坐標(biāo)4.判斷分隔條的拖動方向5.改變分隔條的坐標(biāo)函數(shù)名MoveWindowTo函數(shù)作用范圍protected類名CSplitterControl功能概要改變控件寬度記述形式BOOLCSplitterControl::MoveWindowTo(CPointpt)參數(shù)類型變量名I/O說明CPointptI當(dāng)前光標(biāo)坐標(biāo)返回值類型BOOL說明值TRUE分隔條移動結(jié)束FALSE不存在父窗口詳細(xì)說明1.獲取父窗口指針6.調(diào)用控件的MoveWindow方法改變分隔條的位置使用注意事

MoveWindowTo函數(shù)處理邏輯:(見圖2-56.c開始)1T獲取父窗口指針1<■■■■■■■父窗口指車'”?一?.美型為、十不為空且〉Window--""獲取控件的方換為窗口白辛幕坐標(biāo)并轉(zhuǎn)勺相對坐標(biāo)分隔條是否為水平拖

拽圖2-5MoveWindowTo流程圖

DrawLine【函數(shù)式樣】表2-6函數(shù)名DrawLine函數(shù)作用范圍protected類名CSplitterControl功能概要改變控件寬度記述形式BOOLCSplitterControl:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論