六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

在Visual C++中完成特征表

[摘要]Windows 95 以及Windows NT 4.0 較之以前的Windows 操作系統增加了許多先進特性,特性表就是其中一個。大家熟知的特性表的實例是Windows 中屏幕顯示屬性的設置,它包括背景、屏幕保護程序、外觀、設置等特性頁。使用特性表的最大的好處在于它可以非常方便地將大量的信息提供給...
Windows 95 以及Windows NT 4.0 較之以前的Windows 操作系統增加了許多先進特性,特性表就是其中一個。大家熟知的特性表的實例是Windows 中屏幕顯示屬性的設置,它包括背景、屏幕保護程序、外觀、設置等特性頁。使用特性表的最大的好處在于它可以非常方便地將大量的信息提供給用戶,從而有效地節省屏幕空間,因為它是包含若干個其它對話框的對話框。
創建特性表
---- Visual C++ 中MFC 提供了兩個類,CPropertySheet 和CPropertyPage,使編程人員可以輕松地在程序中實現特性表。以VC4.0 為例,在程序中建立一個特性表可按如下步驟進行:
---- 1. 在Microsoft Developer Studio 中選擇菜單Insert /Component...,屏幕上會彈出一個"Component Gallery "對話框。(注意,此對話框本身就是特性表的一種。)

---- 2. 在對話框中的Microsoft 頁選中Property Sheet,單擊"Insert ",屏幕上出現創建特性表的向導。

---- 3. 在向導的第一步選擇"Property Sheet ";第二步選擇是否生成無模式的特性表以及是否要在特性表中支持預覽功能;第三步選擇創建特性表函數作為哪一個類的成員函數(即在哪一個類中起用特性表);第四步設置特性表所包含的頁數;第五步為新生成的類(特性表本身及其包含的每一頁都是一個單獨的類)確定名稱。這樣,一個特性表就生成了。Visual C++ 已經為你編寫了基本的源代碼。

---- 4. 自動生成的代碼中,啟動此特性表的函數一般名為OnProperties( ),在你需要的地方調用它,然后編譯,連接,運行,你會看到一個特性表已經可以在你需要的地方彈出來了。

---- 5. 截止目前,特性表中的每一頁還是空白。在一頁中加入需要的控件(controls)和一般的對話框一樣簡單,因為它本身就是一種對話框。打開ResourceView 中的Dialog,特性表的每一頁都作為一個對話框列于其中,只要對它們進行編輯,再在程序中實現相應功能就可以了�,F在,一個特性表已經全部完成。

---- 特性表中的頁雖然和普通對話框基本一致,但還有幾點需要注意的問題:

---- 1. 頁中的各控件不能使用其擴展風格(extended styles);

---- 2. 頁中的各控件不能使用Help ID;

---- 3. control ID 不能是DWORD 類型;

---- 4. 不能在頁的字體中設置粗細、斜體、字符集等屬性。

---- 如果不能遵循以上規則,程序運行時將會出現錯誤。

特性表的使用技巧
---- 用Com ent Gallery 創建的特性表的下端包括三個按鈕:確定、取消、應用、幫助。但是,有時侯你需要的不是這幾個按鈕,甚至完全不需要按鈕,那么如何修改呢?
---- 在MFC 程序內部,這幾個按鈕都有著自己ID,分別為IDOK、IDCANCEL、ID_APPLY_NOW、IDHELP。這些宏在文件AFXRES.H 和WINRES.H 中定義,應用程序一般已經間接地包含了它們,可以直接引用。利用它們調用GetDlgItem 函數可以得到各按鈕的窗口句柄。有了句柄,對按鈕進行改動就變得非常簡單:用SetWindowText 改變按鈕的字符,用ShowWindow 和EnableWindow 隱含按鈕,用MoveWindow 改變按鈕位置。

---- 假設特性表的類名為CMyPropertySheet,以隱含`應用'、`幫助'兩個按鈕為例,應該在特性表的程序中加入如下代碼:

......
static int rgiButtons[] =
{ IDOK, IDCANCEL, ID_APPLY_NOW, IDHELP };
......
BOOL CMyPropertySheet::OnInitDialog()
{
BOOL bResult = CPropertySheet::OnInitDialog();

for ( int i = 2; i < 4; i++ )
{
HWND hWnd = ::GetDlgItem( m_hWnd, rgiButtons[i] );
if ( hWnd != NULL )
{
::ShowWindow( hWnd, SW_HIDE );
::EnableWindow( hWnd, FALSE );
}
}

CenterWindow();
return bResult;
}
---- 如果在四個按鈕之外還需加入另外的按鈕則相對復雜一些,因為這不能在ResourceView 中實現,必須完全在代碼中完成。首先,在類CMyPropertySheet 中加入成員變量:

---- protected:
---- CButton m_btn;

---- 還要為按鈕加入點按響應的成員函數的定義。為了使之能為ClassWizard 所識別,代碼如下:

protected:
//{{AFX_MSG(CMyPropertySheet)
afx_msg void OnBnClicked();
//}}AFX_MSG
程序中還要加入消息映射如下:
BEGIN_MESSAGE_MAP(CMyPropertySheet, CPropertySheet)
//{{AFX_MSG_MAP(CMyPropertySheet)
ON_BN_CLICKED(ID_MYBUTTON,OnBnClicked)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
準備工作完畢之后,要在OnInitDialog函數中創建此按鈕:
CRect rect;
rect.SetRect
(BUTTONLEFT, BUTTNTOP, BUTTONRIGHT, BUTTONBOTTOM);
m_btn.Create("MyButton", BS_PUSHBUTTON WS_VISIBLE,
rect, this, ID_MYBUTTON);
最后,在程序中完成點按按鈕的響應函數:
void CMyPropertySheet::OnBnClicked()
{
......
}

結論
---- 基本上大部分Windows 95 程序都會用到特性表,特性表可以有效地節省屏幕空間。本文介紹了一些相關技術。相似的技術也可以用在另一項先進技術──向導(Wizard)中,讀者可以自己去嘗試。


主站蜘蛛池模板: 亚洲1区2区3区4区 | 日本h在线 | 欧美特级视频 | 又硬又粗又长又爽免费看 | 热99热 | 中文字幕免费视频精品一 | 日韩黄a级成人毛片 | 最新69国产成人精品视频69 | 亚洲视频欧美视频 | 欧美综合图区亚洲综合图区 | 三级黄色片在线观看 | 色影音先锋色资源网站 | 天天舔日日干 | 午夜国产精品影院在线观看 | 中文字幕高清免费不卡视频 | 欧美一级特黄aaaaaa在线看片 | 日韩a一级欧美一级在线播放 | 天天躁 | 人人爱人人看 | 日本a黄色片 | 亚洲色在线视频 | 天堂中文在线资源 | 亚洲网站色 | 综合五月天婷婷丁香 | 最近最新中文字幕免费的一页 | 亚洲国产成人久久综合一 | 日韩v片| 日本高清视频在线www色下载 | 四虎影院紧急入口 | 全部免费国产潢色一级 | 青青草原影院 | 四虎在线永久免费视频网站 | 越南一级淫片高清视频 | 日韩精品一区二区三区中文 | 亚洲a级大片 | 亚洲美女性视频 | 亚洲欧美天堂综合久久 | 色婷婷一区二区三区四区成人 | 呦呦国产| 一级毛片免费毛片一级毛片免费 | 色噜噜狠狠色综合中文字幕 |