Visual C++ 2010 Windows 7觸控程式設計

42 篇文章 4 订阅
15 篇文章 1 订阅
Visual C++ 2010除了支援程式設計方便地設計Ribbon式的使用者介面,支援使用者於應用程式的執行時期改變應用程式的佈景主題,以及一堆好用的新控制項以外,還支援於Windows的工作列預覽應用程式文件的內容,利用Task Dialog顯示豐富的溝通選項和使用者互動,提供最新的觸控與手勢操作支援,以及對高解析度螢幕(High-DPI)的顯示支援等等,如果讀者的電腦安裝了Visual Studio 2010 SP1,還可以利用Visual C++ 2010,搭配Direct2D動畫技術,為所開發的應用程式加上生動的動畫展現效果。

支援在Windows工作列預覽應用程式文件的Taskbar Preview

Windows 7支援在工作列預覽應用程式目前編輯的文件的內容,不管應用程式目前編輯的文件內容是文件、圖片、甚至是影片,都可以在Windows 7的工作列進行預覽。

要讓應用程式編輯的文件的內容顯示到Windows 7的工作列,你只要在使用Visual C++ 2010建立[MFC應用程式]型態的專案的時候,於選擇[應用程式類型]的畫面勾選[索引標籤式文件]選項,應用程式編輯的文件的內容就會自動顯示到Windows 9的工作列供使用者預覽,不需要另外透過程式碼控制。圖1所示即為建立[MFC應用程式]型態的專案時勾選[索引標籤式文件]選項的畫面:


▲圖1:勾選[索引標籤式文件]選項的畫面。



圖2所示即為建立成索引標籤式文件的MFC應用程式開啟了三個圖形檔案進行編輯時,於Windows 7的工作列預覽應用程式編輯的圖形文件的情形:
▲圖2:Windows 7的工作列預覽應用程式編輯的圖形文件的情形。

[提示]
未勾選[索引標籤式文件]選項的MFC應用程式,包括單一文件的應用程式和多重文件的應用程式所編輯的應用程式文件一樣能夠被顯示到Windows 7的工作列供使用者預覽,但是預覽的效果不如採用[索引標籤式文件]的應用程式。特別是多重文件應用程式會以傳統的多重文件顯示方式供使用者進行預覽,不像採用索引標籤式文件的應用程式編輯的文件透過Windows工作列進行預覽的時候,不同文件的內容會被顯示在一個獨立的小視窗中,可以比較清楚地進行預覽。

Windows 7的工作列不但能夠預覽應用程式編輯的文件,還能夠在工作列上顯示重疊的應用程式圖示(Overlay Icon),讓應用程式可以依據應用程式的狀態顯示不同的圖示,協助使用者了解應用程式目前的狀態。

要在工作列顯示重疊的圖示,我們可以先在應用程式專案的資源中準備好欲顯示的圖示,再利用CMainFrame類別的SetTaskbarOverlayIcon方法將指定的圖示重疊顯示在Windows 7工作列顯示的應用程式圖示的上方,所以稱為重疊圖示,例如我們只要的CMainFrame類別的方法中執行以下的程式碼,並事先於專案的資源中準備好ID為IDR_TaskbarContentTYPE的圖示資源,就可以在Windows 7的工作列的應用程式圖示的右下角顯示ID為IDR_TaskbarContentTYPE的圖示當做重疊圖示

SetTaskbarOverlayIcon(IDR_TaskbarContentTYPE, _T("我的圖示"));
圖3所示即為Windows 7工作列上顯示的重疊圖示,位於應用程式圖示右下角的小圖示就是透過CMainFrame類別的SetTaskbarOverlayIcon方法顯示的重疊圖示:


▲圖3:Windows 7工作列顯示的重疊圖示。

Windows 7作業系統除了支援在工作列上顯示重疊的圖示以外,也支援在工作列上顯示應用程式的工作進度,例如應用程式可以將執行網際網路下載的進度顯示到工作列,將檔案壓縮/解壓的進度顯示到工作列,或是將影像處理的進度顯示到工作列,讓使用者了解最新的工作進度。

應用程式可以呼叫CMainFrame類別的SetProgressBarRange方法指定欲顯示的進度表的上下限,呼叫CMainFrame類別的SetProgressBarPosition方法設定進度表的目前進度。如果要顯示非決定性(InDeterminate)的進度表,則可以呼叫CMainFrame類別的SetProgressBarState方法,並傳入TBPF_INDETERMINATE當做參,就可以建立非決定性的進度表。

[說明]
非決定性的進度表不像一般的進度表有上限與下限,當進度表從下限前進到上限就代表工作結束了。非決定性的進度表沒有指定進度表的下限與上限,當應用程式顯示非決定性的進度表時,進度表會反覆不停地一直左右跑動,直到應用程式停止顯示進度表為止,而不是當到達進度表的上限值就停止,適合用在應用程式不知道所執行的工作需要多久的時間的時候使用。例如當應用程式執行連線到資料庫的動作時,因為不知道要花多少時間才能夠完成連線資料庫的動作,就很適合顯示非決定性的進度表,直到完成連線資料庫的動作為止,不管連線資料庫需要花費多少時間,非決定性的進度表都會一直顯示,直到被應用程式關閉。

程式設計師只要在CMainFrame類別的方法中執行以下的程式碼,就可以在Windows 7的工作列顯示應用程式的工作進度:

SetProgressBarRange(0, 100); //設定進度表的下限與上限
for(int i=1;i<=100;i++) //利用迴圈執行欲執行的工作
{ //執行工作
SetProgressBarPosition(i); //於Windows 7的工作列顯示進度表
CString s; //宣告存放代表進度數字的字串變數
s.Format(_T("%d%%"), i); //於字串變數填入代表進度的數字
SetWindowText(s); //於Windows 7工作列顯示
}
SetWindowText(_T("")); //清除Windows 7工作列顯示的進度數字
SetProgressBarPosition(0); //將進度表顯示的進度歸零


執行上列的程式碼,你就可以在Windows 7的工作列看到應用程式顯示的進度表,如圖4所示:


▲圖4:於Windows 7工作列顯示進度表的應用程式執行的情形。

[提示]
如果應用程式在執行工作時發生錯誤,例如從網際網路下載檔案發生錯誤,連線資料庫發生錯誤,或是壓縮檔案時發生錯誤,可以呼叫CMainFrame類別的SetProgressBarState方法,並傳入TBPF_ERROR當做參數,於Windows 7工作列顯示代表錯誤的訊號,通知使用者應用程式的工作發生錯誤,Windows 7就會在工作列顯示出紅色的進度表,而不是代表工作正常的綠色進度表,表示工作發生錯誤,做法如下:

SetProgressBarState(TBPF_ERROR); //顯示代表錯誤的進度表狀態


使用CJumpList類別定義Jump List內容

應用程式除了可以利用Windows 7的工作列顯示工作進度或是代表應用程式狀態的重疊圖示以外,也可以客製應用程式顯示在工作列的[工作列按鈕]的右鍵功能表,加入自訂的項目種類,以顯示自訂的資訊或與應用程式有關的工作,協助使用者方便地叫用和應用程式有關的功能。

[說明]
顯示在Windows 7工作列的[工作列按鈕]的右鍵功能表預設會顯示應用程式最近開啟過的文件,最常開啟的文件,啟動應用程式的連結,關閉應用程式的連結,以及將應用程式釘選在Windows 7工作列上的連結。應用程式可以視需要加入和應用程式有關的超連結,例如連結到應用程式最新的說明文件或免費提供給使用者的下載,讓使用者可以很方便地瀏覽和下載所需要的資訊。

應用程式可以利用MFC類別庫提供的CJumpList類別要為Windows 7的工作列顯示[工作列按鈕]加入客製化的右鍵功能表,例如我們可以先於專案的App類別的Header檔案中宣告以下的變數,負責管理應用程式的[工作列按鈕]的右鍵功能表:
CJumpList m_JumpList; //宣告CJumpList類別的物件


再於App類別的InitInstance方法加入以下的程式碼,加入自訂的超連結當做工作項目:

m_JumpList.InitializeList(); //初始化右鍵功能表清單
m_JumpList.AddKnownCategory(KDC_FREQUENT); //加入最常開啟的文件的連結
m_JumpList.AddKnownCategory(KDC_RECENT); //加入最近開啟的文件的連結
m_JumpList.AddTask(_T("http://www.iiiedu.org.tw/taipei"), NULL,
_T("資策會資訊技術中心"), NULL, 0); //加入超連結當做自訂工作項目
m_JumpList.CommitList(); //確認[工作列按鈕]的內容無誤


做好之後執行應用程式,並使用滑鼠的右鍵點選Windows 7工作列中代表所執行的應用程式的[工作列按鈕],就可以看到類似圖5所示的功能表清單,其中文字為[資策會資訊技術中心]的連結就是上述的程式碼加入的客製工作項目。


▲圖5:應用程式客製Windows 7工作列的[工作列按鈕]的右鍵功能表的內容。

[提示] 使用舊版本的Visual C++開發的專案的原始碼可以利用Visual C++ 2010重新編譯,並連結新版本的MFC DLL或LIB檔案,就可以立即享有在Windows 7工作列預覽應用程式編輯的文件內容,以及為應用程式的工作列按鈕提供右鍵功能表等功能,不需要加入任何的程式碼進行控制。不過預覽應用程式編輯的文件的內容對非使用索引標籤式文件的應用程式效果較差,而且要客製化應用程式顯示在Windows 7工作列的[工作列按鈕]的右鍵功能表,還是必須透過程式碼的幫助才能夠達成。

功能升級的MessageBox - Task Dialog

Visual Studio 2010支援的MFC類別庫提供的CTaskDialog類別提供較AfxMessageBox函數或是MessageBox函數更豐富的資訊供使用者選擇,而不是只能夠顯示訊息和使用者溝通而已。應用程式可以利用CTaskDialog類別顯示供使用者檢視的訊息與圖示通知使用者應用程式目前的狀態,顯示超連結供使用者點選,顯示進度表反應應用程式的工作進度,甚至顯示RadioButton、CheckBox、 和Command按鈕供使用者選擇以指示應用程式處理的方向。

[注意] 截至目前為止,僅有Windows Vista或更高版本的Windows支援Task Dialog功能,應用程式最好先呼叫CTaskDialog類別的IsSupported方法判斷應用程式執行所在的Windows版本是否支援Task Dialog,如果支援Task Dialog,則利用Task Dialog顯示和使用者溝通的畫面,否則就使用傳統的AfxMessageBox函數或是MessageBox函數顯示簡單的訊息和使用者溝通。

欲使用CTaskDialog類別顯示豐富的資訊和使用者溝通,應用程式必須先引入以下的標頭檔:

#include
再利用以下的程式碼建立並顯示Task Dialog:
if (CTaskDialog::IsSupported()) //判斷Windows作業系統是否支援顯示Task Dialog
{ CTaskDialog dlg(_T("簡單的Task Dialog"), _T("Task Dialog使用說明"),
_T("Task Dialog範例"), TDCBF_YES_BUTTON | TDCBF_NO_BUTTON,
TDF_ENABLE_HYPERLINKS | TDF_ALLOW_DIALOG_CANCELLATION,
_T("Task Dialog操作補充說明!"));//建立只有文字內容,與[是]和[否]兩個按鍵的Task Dialog
INT_PTR nResult = dlg.DoModal(); //以Modal的型式顯示Task Dialog
}


執行上述的程式碼,你將會看到如圖6所示的畫面:


▲圖6:利用只有文字內容,與[是]和[否]兩個按鍵和使用者溝通的Task Dialog。

上述的程式碼顯示的Task Dialog和使用AfxMessageBox函數或是MessageBox函數顯示的訊息畫面並沒有很大的差別,不過以下的範例顯示的Task Dialog中會有供使用者選擇的RadioButton按鈕和Command按鈕,其提供給使用者的選擇就不是利用AfxMessageBox函數或是MessageBox函數可以達成的。

if (CTaskDialog::IsSupported()) //判斷Windows作業系統是否支援顯示Task Dialog
{
CTaskDialog dlg(_T("較複雜的Task Dialog"), _T("Task Dialog使用說明"),
_T("Task Dialog範例"), 0, TDF_ENABLE_HYPERLINKS | TDF_USE_COMMAND_LINKS , _T("Task Dialog操作補充說明!")); //建立只有文字內容的Task Dialog
dlg.AddCommandControl( 10, _T("放棄")); //為Task Dialog加入文字為[放棄]的Command按鈕
dlg.AddCommandControl( 20, _T("重試")); //為Task Dialog加入文字為[重試]的Command按鈕
dlg.AddCommandControl( 25, _T("忽略")); //為Task Dialog加入文字為[忽略]的Command按鈕
dlg.AddRadioButton(3, _T("讚")); //為Task Dialog加入文字為[讚]的RadioButton按鈕
dlg.AddRadioButton(7,_T("普通讚"));//為Task Dialog加入文字為[普通讚]的RadioButton按鈕
dlg.AddRadioButton( 4, _T("不讚")); //為Task Dialog加入文字為[不讚]的RadioButton按鈕
dlg.SetMainIcon(TD_SHIELD_ICON); //指定Task Dialog左上角顯示的大圖示
dlg.SetFooterIcon(TD_INFORMATION_ICON); //指定Task Dialog左下角顯示的小圖示
INT_PTR nResult = dlg.DoModal(); //以Modal的型式顯示Task Dialog
}


執行上述的程式碼你將會看到如圖7的畫面顯示的結果:


▲圖7:提供更多選項供使用者選擇的Task Dialog。

[提示] 除了Command按鈕與RadioButton控制項以外,程式設計師還可以利用CTaskDialog類別的NavigateTo方法做出精靈式的訊息畫面,協助使用者完成複雜的操作,或是利用SetProgressBarMarquee、SetProgressBarPosition、SetProgressBarRange、和SetProgressBarState方法在Task Dialog上顯示進度表,協助使用者了解應程式執行工作的進度。

觸控與手勢操作支援

支援觸控螢幕與手勢操作是Visual C++ 2010另外一項重要的功能,這個功能同時也可以讓使用Visual C++ 2010開發的應用程式適合安裝到沒有配備鍵盤的平板電腦上執行,讓使用者可以僅靠觸控螢幕,就可以指揮應用程式完成所需要的功能。

Visual C++ 2010內建的MFC類別庫支援處理觸控相關的訊息,以及使用者手勢操作的能力。程式設計師可以利用CWnd類別提供的OnTouchInput、OnGestureZoom、OnGesturePan、OnGestureRotate、OnGestureTwoFingerTap、以及OnGesturePressAndTap方法處理使用者的手勢操作。

表1所示為CWnd類別支援手勢操作的方法對應的手勢操作,以及功能是否預設啟用的詳細說明:


▲表1:CWnd類別支援的五種基本手勢操作動作及預設是否啟用的狀態。

欲支援使用者透過觸控螢幕和手勢操作指揮應用程式,應用程式必須先判斷使用者使用的螢幕是否支援觸控操作,以及支援使用者同時可以同時觸碰的點數,做法如下:
if (::GetSystemMetrics(SM_DIGITIZER) == 0) //判斷電腦的螢幕是否支援觸控操作
{
AfxMessageBox(_T("你使用的螢幕是未支援觸控操作")); //顯示未支援觸控操作的訊息
}
BYTE nInputs=(BYTE)GetSystemMetrics(
SM_MAXIMUMTOUCHES); //查詢使用者可以同時碰觸螢幕的點數


如果使用者使用的電腦螢幕支援觸控操作,應用程式就可以處理因為使用者觸控與手勢操作引發的訊息,以反應使用者的操作。請注意如果應用程式欲處理的手勢操作預設未啟用,則應用程式必須預先啟用欲處理的手勢操作功能,否則使用者的操作將會沒有任何效果。

應用程式可以利用CGestureConfig類別,以及GetGestureConfig與SetGestureConfig函數啟用未啟用的手勢操作功能,例如以下的程式碼就會啟用預設未啟用的Rotate手勢操作功能:

CGestureConfig config; //宣告CGestureConfig類別的物件
GetGestureConfig(&cfg); //取得目前觸控功能的啟用狀態
config.EnableRotate(); //設定啟用Rotate手勢操作
SetGestureConfig(&cfg); //設定目前觸控功能的啟用狀態


[提示] 請注意上述的程式碼只啟用Rotate手勢操作功能,讓使用者可以利用手勢操作旋轉物體,而沒有啟用表1所列的其他四種手勢操作功能,因為其他四項手勢操作功能預設為啟用,所以不需要再另外啟用。

欲處理使用者的觸控操作,應用程式可以在CWnd類別的衍生類別中直接處理WM_GESTURE訊息或是override CWnd類別的OnTouchInput方法,例如以下的程式碼便是在CWnd類別的衍生類別中override CWnd類別的OnTouchInput方法,並在OnTouchInput方法中利用名稱為pInput的參數的dwFlags成員判斷使用者是否有執行觸控操作:

BOOL CMainFrame::OnTouchInput(CPoint pt, int nInputNumber, int nInputsCount, PTOUCHINPUT pInput)
{
if( (pInput.jpg'>dwFlags & TOUCHEVENTF_DOWN) ==
TOUCHEVENTF_DOWN ) //判斷使用者是否有執行觸碰螢幕的操作
{
}
}
[提示]
將上述的程式碼中的TOUCHEVENTF_DOWN更改成TOUCHEVENTF_UP可以判斷使用者是否已放開所觸碰的點。

欲處理手勢操作相關訊息,應用程式可以在CWnd類別的衍生類別中覆寫OnGestureZoom、OnGesturePan、OnGestureRotate、OnGesturePressAndTap、和OnGestureTwoFingerTap,以處理使用者的手勢操作。例如:

BOOL CGestureDemoView::OnGestureZoom(CPoint ptCenter, long lDelta) //處理Zoom操作
{ if ((m_pCurrentGestureInfo.jpg'>dwFlags & GF_BEGIN) == GF_BEGIN) //Zoom操作開始
{
m_bInZoom = TRUE; //將代表Zoom操作執行中的變數設定為true
}
else if ((m_pCurrentGestureInfo.jpg'>dwFlags & GF_END) == GF_END) //Zoom操作結束
{
m_bInZoom = FALSE; //將代表Zoom操作執行中的變數設定為false
}
else if (abs((int)lDelta) > 5) //判斷變動量是否大於5
{
const double dblZoomRatioOld = m_dblZoomRatio; //記下原有的放大縮小比例
m_dblZoomRatio += .001 * lDelta; //將lDelta參數的內容值*0.01後當做放大縮小比例
m_dblZoomRatio = min(m_dblZoomRatio, 100.); //限制放大縮小比例不可超過100
m_dblZoomRatio = max(m_dblZoomRatio, .1); //限制放大縮小比例不可小於0.1
const double dblDelta = m_dblZoomRatio – dblZoomRatioOld; //計算新的放大縮小比例與原先的放大縮小比例的差異
m_ptOffset.x += (int)(.5 + dblDelta *
(m_ptOffset.x - ptCenter.x)); //計算X軸的位移量
m_ptOffset.y += (int)(.5 + dblDelta *
(m_ptOffset.y - ptCenter.y)); //計算Y軸的位移量
//重新繪製應用程式顯示的內容
}
return TRUE;
}
BOOL CGestureDemoView::OnGesturePan(CPoint ptFrom, CPoint ptTo) //處理Pan操作
{
const int dx = ptTo.x - ptFrom.x; //計算X軸的位移

const int dy = ptTo.y - ptFrom.y; //計算Y軸的位移
if ((m_pCurrentGestureInfo.jpg'>dwFlags & GF_BEGIN) == GF_BEGIN) //Pan操作開始
{ m_bInPan = TRUE; //將代表Pan操作執行中的變數設定為true
}
else if ((m_pCurrentGestureInfo.jpg'>dwFlags & GF_END) == GF_END) //Pan操作結束
{
m_bInPan = FALSE; //將代表Pan操作執行中的變數設定為true
}
else if (dx != 0 || dy != 0) //依據X軸的位移和Y軸的位移更新移動距離
{
m_ptOffset.x += dx; //更新X軸的位置
m_ptOffset.y += dy; //更新Y軸的位置
//重新繪製應用程式顯示的內容 } return TRUE;
}

BOOL CGestureDemoView::OnGestureRotate(CPoint ptCenter, double dblAngle)//處理Rotate操作
{
if ((m_pCurrentGestureInfo.jpg'>dwFlags & GF_BEGIN) == GF_BEGIN) //Rotate操作開始
{
m_ptCenter = ptCenter; //記錄圓心的位置
m_dblAngleStart = m_dblAngle; //記錄旋轉前的角度
m_bInRotate = TRUE; //將代表Rotate操作執行中的變數設定為true
}
else if ((m_pCurrentGestureInfo.jpg'>dwFlags & GF_END) == GF_END) //Rotate操作結束
{
m_bInRotate = FALSE; //將代表Rotate操作執行中的變數設定為false
}
else if (dblAngle != 0.) //如果旋轉角度不等於0
{
m_dblAngle = m_dblAngleStart - dblAngle; //計算應旋轉的角度
//重新繪製應用程式顯示的內容
}
return TRUE;
}
BOOL CGestureDemoView::OnGestureTwoFingerTap(CPoint ptCenter) //處理TwoFingerTap操作
{
m_dblZoomRatio = 1.; //設定Zoom的比例
m_ptOffset = CPoint(0, 0); //設定位移量
m_dblAngle = 0.; //設定旋轉角度
m_dblAngleStart = 0; //設定旋轉開始角度
//重新繪製應用程式顯示的內容
return TRUE;
}

BOOL CGestureDemoView::OnGesturePressAndTap(CPoint ptFirstFinger, long lDelta) //處理TwoFingerTap操作
{
ClientToScreen(&ptFirstFinger); //將Client座標轉成螢幕座標
theApp.GetContextMenuManager().jpg'>ShowPopupMenu(IDR_POPUP_EDIT, ptFirstFinger.x,
ptFirstFinger.y, this, TRUE); //顯示指定的功能表
return TRUE;
}
如果應用程式編輯的是一張圖片,透過上述程式的幫助,使用者可以旋轉或是放大/縮小圖片,如圖8和圖9所示:


▲圖8:使用者利用兩隻手指觸碰螢幕後放大/縮小圖片的操作示意圖


▲圖9:使用者利用兩隻手指觸碰螢幕後旋轉圖片的操作示意圖

High-DPI支援(DPI感知)

使用Visual C++ 2010建立的應用程式預設會自動偵測電腦的螢幕是否設定High-DPI(Dot Per Inch),也就是每英吋要顯示的像點大於標準的96點,並據以調整應用程式使用者介面的顯示解析度,不會以固定的解析度(96點)顯示應用程式的使用者介面,造成使用者介面配置失準,或是應用程式所顯示文字和圖片模糊。

[提示]
DPI感知設定預設為啟用,也就是使用Visual C++ 2010開發的MFC應用程式可以在High-DPI的顯示環境下呈現清晣的顯示結果,而使用舊版本的Visual C++開發的MFC應用程式在High-DPI的顯示環境下呈現的畫面就會出現模糊的現象。程式設計師可以經由設定專案的屬性,設定[組態屬性 | 資訊清單工具 | 輸入和輸出]項目底下的[啟用DPI感知]設定,來改變DPI感知設定,如圖10所示:


▲圖10:改變DPI感知設定的設定畫面。

你可以利用[控制台]的[外觀及個人化]設定中的[顯示]項目設定螢幕解析度,再透過左方的[設定自訂文字大小]功能,改變每英吋欲顯示的點數,例如設定每英吋要顯示200個像點,如圖11所示:


▲圖11:按下圖11畫面中的[設定自訂文字大小]連結,就可以設定每英吋要顯示的點數。

使用舊版的Visual C++開發的應用程式在高於96點的解析度下,就會出現模糊的現象,因為使用舊版的Visual C++製作的應用程式不管螢幕的解析度與DPI的設定,固定每英吋只顯示96個像點,在設定為高DPI的螢幕上就會因為每英吋的像點數太少,造成顯示內容模糊的結果,如圖12所示:


▲圖12:使用舊版的Visual C++開發的應用程式的畫面在High-DPI的螢幕顯示時會呈現模糊的現象

而使用新版的Visual C++ 2010開發的應用程式在這種解析度下,畫面仍然很清晣,因為使用新版的Visual C++ 2010開發的應用程式會依據螢幕設定的DPI在每英吋的空間顯示足夠的像點,所以不會產生模糊的現象,如圖13所示:


▲圖13:使用新版的Visual C++ 2010開發的應用程式的畫面在High-DPI的螢幕顯示時仍然很清晣。

久違了 - MFC Class Wizard

在Visual C++ 6.0的時代,要為類別加入變數或方法,覆寫父類別的virtual方法,或是為類別加入訊息處理程序,都可以依靠Class Wizard這個方便的工具來完成,但是到了Visual C++ 2002,Visual C++ 2003,Visual C++ 2005,Visual C++ 2008的年代,Class Wizard這個工具消失了,程式設計師要為類別加入變數或方法,覆寫父類別的virtual方法,或是為類別加入訊息處理程序,都可以利用[屬性]視窗來完成,其實這兩者的功能都一樣,只是操作介面不同而已。不過新版的Visual C++ 2010再度加入許多Visual C++程式設計師期待的Class Wizard,協助程式設計師可以在不改變熟悉的操作技巧下,進行程式設計的工作。

要啟用Class Wizard,請開啟[類別檢視]視窗,使用滑鼠的右鍵點選[類別檢視]視窗顯示的類別名稱,再選擇[類別精靈]功能,或是直接按下CTRL+SHIFT+X組合鍵,就可以看到Class Wizard工具執行的畫面,如圖14所示:


▲圖14:Class Wizard執行的畫面。

Visual C++ 2010提供的Class Wizard工具的功能與操作畫面幾乎和Visual C++ 6.0版提供的Class Wizard工具完全相同,所以Visual C++程式設計師可以完全不需要學習就可以立刻使用新版的Class Wizard工具進行開發應用程式的工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值