VC 6 0定製視窗的方法

2021-04-12 12:26:50 字數 2543 閱讀 8202

一、如何在多文件介面下去掉開始的子視窗

在多文件介面下,自動生成乙個新的子視窗,而乙個實際的應用系統往往是由使用者操作後再生成新的視窗。為了去掉開始的子視窗,可在應用程式檔案分析命令列的語句

ccommandlineinfo cmdinfo;

parsecommandline(cmdinfo);

後加入:

cmdinfo.m_nshellcommand=ccommandlineinfo::filenothing;

去掉子視窗後,就只剩下主框架視窗了。因為在多文件介面中,系統生成兩個選單:乙個是使用者的選單,另乙個是系統主框架選單。通常使用者工作在使用者選單。為了保證選單介面不變,可修改主框架選單資源,使其與使用者選單保持一致。

二、修改視窗標題欄

在預設情況下,視窗標題欄中顯示的文件名為檔名。若要在標題欄顯示乙個長字串,而又不修改檔名,則可將專案工作區轉換到resource view面版,選擇串表(stringtable)資源,在stringtable中雙擊idr-main-frame項,caption中顯示一字串 xx/n/yy......,將第乙個引數修改為使用者自己希望見到的主視窗標題即可。

三、修改主框架視窗、子視窗及其顯示性質

可通過覆蓋cwnd的成員函式precreatewindow來修改主視窗和子視窗。

precreatewindow

函式在即將建立視窗前被呼叫,

函式原型為:virtual bool precreatewindow(createstruct cs)。如果要覆蓋precreatewindow函式,則在建立視窗前可以修改crea testruct結構以替換預設引數。createstruct結構存放視窗特徵,如視窗座標、風格等 ,還可以定義新視窗風格。

若想修改主框架視窗,則可以在mainfrm.cpp的下列成員函式中加入待修改的內容。例如: bool cmainframe::precreatewindow(createstruct&cs)

定製子視窗的操作與上述主視窗相同,可在childfrm.cpp中加入以下內容:

bool cmainframe::precreatewindow(createstruct&cs)

要修改檢視視窗的顯示性質,則可在視**件xxview.cpp的下述成員函式中加入以下語句:

bool xxview::precreatewindow(createstruct&cs)

其中,cs的引數pszclass用於存放windows視窗類名稱。要想註冊windows視窗類,則必須呼叫全域性函式afxregisterwndclass。該函式原型為:

lpctstr afxapi afxregisterwndclass(uintnclassstyle,hcursor hcursor=0,

hbrush hbrbackground=0,hicon hicon=0)

上述各引數用於定義風格,其含義分別為游標資源控制代碼、背景資源控制代碼、圖示資源控制代碼。上述增加的語句的作用是:改變視窗大小時重畫視窗、不顯示游標圖示、設定白色背景。

四、視窗的滾動

使用cscrollview代替cview類即可實現滾動視窗。此時,系統生成oninitialupdate()成員函式:

void cmyscrollview::oninitialupdat()

其中,cs和cy分別為滾動視窗的水平、垂直分量,表明視窗的水平、垂直方向尺寸小於100畫素單位時將出現水平方向滾動條和垂直方向滾動條。通過修改滾動尺寸,可改變 出現滾動條的最小視窗。例如,若「sizetotal.cx=600;sizetotal.cy=800;」,則當窗 口尺寸小於600*800時,就會出現滾動條。

五、視窗分割

該功能可將視窗分割成多個可滾動的面板,面板之間的邊界稱為分割條,可用分割條來調整每個面板的相對大小。要想增加視窗分割功能,則必須修改主視窗類。首先,在主視窗類的標頭檔案mainfrm.h中新增以下**:

csplitterwnd m_swnd;

virtual bool oncreateclient (lpcreatestructcs,ccreatecontext *pcontext);

再在mainfrm.cpp中新增成員函式oncreateclient的定義:

bool cmainframe::oncreatecline(lpcreatestructcs,ccreatecontext *p context)

新的csplitterwnd類物件m_swnd用於建立和管理分割視窗,該視窗中可以包含乙個或多個面板。首次建立主視窗時,將呼叫成員函式oncreateclient。在預設情況下,該函 數建立乙個填充主框視窗客戶區的檢視視窗。覆蓋該函式後,將呼叫csplitterwnd的成 員函式create來建立分割視窗。其中,第乙個引數用於指定分割的父視窗(主視窗);第二個引數指定垂直方向上的面板個數為2;第三個引數指定水平方向上的面板的個數; 第四個引數用於設定每個面板的最小尺寸;第五個引數傳遞描述資訊。上述分割視窗的每個面板都是由檢視類物件管理的,當使用者在某一面板內顯示文件和圖形時,必須在其 它面板中重新繪製,從而在多個面板中均顯示相同的內容。為此,必須呼叫顯示文件類 的updateallview成員函式來更新其它面板。此時,只需加入pdoc->updataallview(null)即可。 

VC 6 0除錯方法

這是我的第一篇文章,希望能堅持寫下去。加油 程式最討厭的就是bug,所以掌握一手好的除錯技能是非常重要的。本文章將介紹 1 啟動除錯,按f5或除錯工具欄的向下箭頭圖示 作用 按下f5,程式進入除錯,會一直執行到斷點或者末尾。2 增加斷點,按f9或除錯工具欄的手背圖示 作用 除錯中,程式會在斷點處停止...

vc 6 0除錯dll的方法

基本上vc6.0除錯dll有兩種方法,我認為的兩種方法 第一種方法 1.設定project settings link標籤,修改 output file name 到乙個exe檔案的目錄 2.設定project settings debug標籤,依次修改 executable for debug s...

vc6 0 開啟多個工程的方法

在vc6.0中,我們經常想開啟多個工程,但是開啟乙個工程後再開啟下乙個時就會覆蓋當前工程或者打不開新工程,解決方法如下 1 winxp系統 1 開啟 我的電腦 工具 資料夾選項 檔案型別 2 在 已註冊的檔案型別 的 副檔名 列中的選擇 dsw 然後點右下角的 高階 3 在彈出的 編輯檔案型別 框的...