VC練習題(網上收集)

zhangtaolmq

VC習題1

1.2 下列對于WinMain函數的描述中,錯誤的是( C )。

AWinMain函數的名稱是固定的

BWinMain函數是Windows程序的入口點

CWinMain函數不能有參數

D)窗口函數與WinMain的關聯是通過窗口類的注冊實現的

 

1.3 以下四個特性中哪一個不屬于面向對象的三大特性( A)。

  A)封裝性   B)多態性   C)抽象性         D)繼承性

 

1.4 下列關鍵字中哪一個不是用于類的訪問控制的( B )。

Apublic Bfriend Cprivate   Dprotected

 

1.5 下面四個MFC類中哪一個是管理MFC應用程序的( A)。

    ACWinApp   BCMainFrame    CCDocument DCView

 

1.6 下列類中不屬于MFC框架基本類的是()。

ACWinApp   BCFrameWnd    CCView      DCObject

 

1.7 傳統的軟件開發主要采用 過程 驅動的方法,而Windows程序的開發使用消息       驅動模型,該模型靠事件機制來實現其功能。

 

1.8 主框架類是應用程序中負責控制菜單、工具欄和狀態欄等界面元素的最主要的類。

 

 

習題2

2.1 Windows 應用程序的消息來源主要包括 輸入消息、控制消息和系統消息、用戶消息

 

2.2 SendMessage CWnd對象發送一個消息,直到這條消息被處理之后才返回 

PostMessage 將一條消息放入應用程序的消息隊列,然后不等窗口處理這條消息直接返回 

 

2.3 CCmdUI類的主要功能是主要用來更新命令用戶接口的狀態。如子菜單。工具欄上的按鈕等                

 

2.4 代碼ON_UPDATE_COMMAND_UIID_TEST, OnUpdateTest)的功能是:將對ID_TEST的更新命令接口消息的處理映射到OnUpdateTest函數上。

 

2.5 CString類的功能是處理字符串,其Format函數的功能是格式化字符串 。

 

2.6 CTime類的功能是 處理日期時間,其Format函數的功能是將時間對象格式化為字符串

 

2.7 MessageBox函數的第一個參數表示 消息文字,第二個參數表示 標題文字,第三個參數表示 圖標與按鈕組合              。

2.8 windows中,按下一個字符鍵,會依次觸發WM_KEYDOWN   WM_CHAR、和WM_KEYUP三個消息。

 

2.9 Windows窗口內部需要重新繪制時,會得到一個  WM_PAINT  消息,當釋放鼠標右鍵時,會得到一個 WM_RBUTTONUP  消息。

 

 

習題三

3.1 Visual C++提供的資源編輯器不能編輯下列哪個資源(C   )。

A)菜單  B)工具欄      C)狀態欄    D)位圖

 

3.2 MFC應用程序框架為狀態欄定義的靜態數組indicators放在哪個文件中( A )。

 AMainFrm.cpp       BMainFrm.h       Cstdafx.cpp     Dstdafx.h

 

3.3 deletemenu用來刪除某個菜單項,如果被刪除的菜單項有相關的彈出菜單,則該彈出菜單的句柄也要被刪除并釋放內存。appendmenu用來追加某個菜單項, trackpopupmenu                用來在一個POINT結構所指定的位置顯示一個上下文菜單

 

3.4工具欄上的按鈕能觸發的消息 command update_command_ui

 

3.5 狀態欄上的窗格可以分為信息行窗格和 指示器窗格兩類。

 

3.6 getsubmenu 可以得到指向某列菜單的指針

 

3.7 下列函數中,可以實現畫圓功能的是(B   )。

 ARectangle   BEllipse CCircle   DLine

 

3.8 CDC類為用戶提供了下列四個文本輸出函數,其中,能使輸出的文本呈現一個多列列表格式的是(C )。

 ATextOut BExtTextOut   CTabbedTextOut   DDrawText

 

3.9下列類中哪一個不是GDI對象類(B )。

ACPen   BCWnd CCbrush  DCRgn

 

習題四

4.1下面哪個不是CDC類的派生類( A  )。

AGDI     BCPaintDC   CCClientDC DCWindowDC

 

4.2 CDC類中實現繪制矩形功能的函數是  Rectangle,實現繪制橢圓功能的函數是 Ellipse,改變文本顏色的函數是 SetTextColo改變文本背景顏色的函數是 SetBkcolor在指定位置顯示字符串的函數是  Textout              。

 

4.3 MFC繪圖要素主要分為兩大類,即  設備場景 和基本繪圖工具 。

 

4.4 Windows引入圖形設備接口的目的是屏蔽底層硬件的繪圖細節,使編程更加容易  

 

4.5 Windows   COLORREF 類型的數據存放顏色,它采用3個參數表示紅、綠、藍三元基本色的分量值,這3個值的取值范圍為 0255               。

 

4.6 創建畫筆后,必須調用CDC類的成員函數   SelectObject將新畫筆選進當前的繪圖環境。

 

4.7 MFC中的CDialog類封裝了對話框的顯示、關閉等常用功能,其中,用來顯示模態對話框的是函數( )。

ACreateWindow   BShowWindow   CDoModal      DUpdateWindow

 

4.8 對話框創建后,還沒顯示前就會觸發( B  )消息。

AWM_PAINT    BWM_INITDIALOG    CWM_CREATE DWM_SIZE

 

4.9 通用對話框中,屬于非模態對話框的是(D)。

   A)文件對話框    B)顏色對話框    C)打印對話框    D)查找對話框

習題五

5.1 要打開文件,應該使用哪個通用對話框( A )。

 ACFileDialog      BCColorDialog      CCPrintDialog     DCFontDialog

 

5.2 通常將對話框的初始化工作放在下列哪個函數中進行( )。

 AOnOK     BOnCancel      COnInitDialog        DDoModal

 

5.3所有通用對話框都是由公共基CCommonDialog派生出來的,                      CColorDialog實現了標準的顏色對話框。

 

5.4 MFC中,與屬性對話框相關的兩個類是 CPropertyPage CPropertySheet

 

5.5下列控件中不屬于按鈕的是 )。

   A)下壓按鈕    B)列表框    C)單選框    D)復選框

 

5.6 如果在輸入時采用選擇的方法進行,以下哪個控件不能實現( D  )。

   A)列表框控件    B)單選按鈕      C)復選框       D)編輯框

 

5.7 下面對UpdateData函數的描述中錯誤的是( D  )。

 ACWnd::UpdateData函數實現對控件中數值的輸入和讀取

  BUpdateData只有一個為TRUEFALSE的參數

 C)當調用UpdateDataFALSE)時,數據由控件關聯的變量向控件傳輸

 D)當調用UpdateDataTRUE)時,數據由控件關聯的變量向控件傳輸

 

5.8 有兩種方法可以創建靜態文本控件,一種是使用資源編輯器添加,另一種是 使用create函數動態創建。

 

5.9 使用滾動條控件一般要用到控件所在對話框類的WM_HSCROLL WM_VSCROLL            消息。

習題六

6.1 判斷一組單選按鈕中哪一個被選中了,要應用GetCheckedRadioButton                               函數。

 

6.2 GetScrollpos函數可以得到滾動條的滑塊位置, SetScrollpos函數可以設置滾動條的滑塊位置, Getpos可以得到滑動條的當前位置, Setpos 函數可以設置滑動條的當前位置。

 

6.3 CListBox類中的 InsertString 函數可以為列表框插入一個新的字符串, ResetContent              函數可以清空所有列表項內容。

 

6.4當程序需要與界面交換數據時,應該調用 UpdataData 函數。

 

6.5  GetDocument 是視圖類的成員函數,調用它可以得到指向與之關聯的文檔對象的指針,文檔的串行化在Serialize 函數中進行。

 

6.6 在程序的任何一個類中訪問應用程序類的函數為 AfxGetApp ,在程序的任何一個類中訪問框架窗口類的函數為AfxGetMainWnd()                。

 

6.7基于單文檔/視圖結構的框架程序中包含的類有 CWinApp CFrameWnd 、   CDocument、CDocTemplate Cview  

 

6.8 ODBC體系結構中不包括下列哪個組件( C  )。

   AODBC管理器    B)數據源     C)驅動程序管理器     D)數據庫管理系統DBMS

 

6.9 記錄集可以分為 Dynaset(動態集)    Snapshot(快照)兩種。

習題七

7.1 MFCODBC類主要包括5個類,分別是CDatabase、CRecordset CRecordView CDBException CFieldExchange 

 

7.2可以利用CRecordset類的 AddNew函數添加一條新記錄,利用CRecordset類的 MoveFirst函數將記錄指針移動到第一條記錄上,利用CRecordset類的Update               函數實現數據庫記錄的保存。

 

7.3下列函數中,能為狀態欄第二個信息格設定文字的是( A

 

a)SetPaneText    b)SetWindowText   c)SetPaneInfo    d)SetText

 

 

 

 

 

簡答題:

 

1. 定義和使用消息映射表的步驟

 在頭文件的類聲明中添加DECLARE_MESSAGE_MAP聲明消息映射;

在類的定義文件(.cpp)定義消息映射表,方法是在 文件的開始處添加BEIGN_MESSAGE_MAPEND_MESSAGE_MAP 這一對宏,在它們之間放置消息映射宏,定義并初始化消息映射表,在消息與處理消息的函數之間建立聯系;

 在類的定義文件(.cpp)中添加消息處理函數。

2.什么是消息映射?

所謂消息映射,簡單地講,就是讓程序員指定要某個MFC類(有消息處理能力的類)處理某個消息。MFC提供了工具ClassWizard來幫助實現消息映射,在處理消息的類中添加一些有關消息映射的內容和處理消息的成員函數。程序員將完成消息處理函數,實現所希望的消息處理能力。

如果派生類要覆蓋基類的消息處理函數,就用ClassWizard在派生類中添加一個消息映射條目,用同樣的原型定義一個函數,然后實現該函數。這個函數覆蓋派生類的任何基類的同名處理函數。

 

3.創建一個窗口的步驟?

創建一個完整的窗口需要經過下面四個操作步驟

設計一個窗口類;

注冊窗口類;

創建窗口;

顯示及更新窗口。

 

4.什么是模態對話框?什么是非模態對話框?

所謂“模態對話框”是指對話框被彈出后用戶必須在對話框中作出相應的操作;在退出對話框之前,會阻止其他應用程序的運行(包括它所在的應用程序)

所謂“非模態對話框”是指當對話框被彈出后,將一直保留在屏幕上,但不影響其他應用程序的運行,用戶可以繼續在對話框所在的應用程序中進行其他操作;當需要使用對話框時,只需像激活一般窗口一樣單擊對話框所在的區域即可。例如在Microsoft Word中的“查找”和“替換”對話框。

 

5.文檔/視圖結構的工作機制

視圖通過GetDocument成員函數獲得指向相關聯的文檔對象的指針

通過該指針調用文檔類的成員函數來從文檔中讀取數據

視圖把數據顯示于計算機屏幕上

用戶通過與視圖的交互來查看數據并對數據進行修改

視圖通過相關聯的文檔類的成員函數將經過修改的數據傳遞給文檔對象

文檔對象獲得修改過的數據之后,對其進行必要的修改,最后保存到永久介質(如磁盤文件)

 

 

 

6.CDocument類派生新的文檔類的一般過程如下:

為每一個文檔類型從CDocument類派生一個相應的文檔類。為文檔類添加成員變量,這些變量主要用來保存文檔的數據,并使其它的對象(如視圖對象)可以訪問這些成員變量,從而實現文檔和視圖的相互搭配使用。重載Serialize成員函數,實現文檔數據的串行化。

 

7. 串行化的好處

使用串行化的好處:是不需要重載文件打開、文件保存之類的方法,MFC框架會自動完成這些任務,并自動調用文檔類的Serialize方法來完成串行化過程。

如果文檔的抽象數據只有一個字符串,那么你只需要在Serialize中添加相映語句就可以完成串行化過程。

 

8、簡述在MFC Windows應用程序中使用CBrush對象的基本步驟。

 

創建畫刷(可調用畫刷創建函數CreateSolidBrush、CreateHatchBrush

將畫刷選入設備環境(調用SelectObject

使用該刷子進行繪畫

刪除畫刷

 

9、簡述文檔/視圖結構中包含的主要的類及各個類之間的相互關系。

包括 CWinApp、 CDocument 、CView、 CDocTemplate 、 CFrameWnd

一個 App可以包含多個文檔模版( CDocTemplate ),但是 MFC AppWizard (無論是 SDI 還是 MDI )都只是默認生成一個。但是在實際開發中一個文檔模版不夠,需要自己手工添加。這個結構是通過 MFC CWinApp 的成員變量 CDocManager * m_pDocManager 實現的。

CDocTemplate 擁有 3 個成員變量,分別保存著 Document 、 View Frame CRuntimeClass 指針,另外持有成員變量 m_nIDResource ,用來指定這個 Document 顯示時候采用的菜單資源。

一個文檔可以有多個視圖,由 Document 中成員變量 CPtrList m_ViewList 維護。

CFrameWnd 擁有一個成員變量 CView* m_pActiveView 指向當前活動的 View

CView 中擁有一個成員變量 CDocument* m_pDocument 指向該視圖相關的 Document

 

10、寫出按鈕ShowShow the Age響應單擊消息的函數OnEnable()、OnShow()和OnShowage()。函數OnShow()使編輯框IDC_EDIT1IDC_EDIT2處于顯示狀態,函數OnShowage()要能夠判斷出單選按鈕IDC_RADIO1IDC_RADIO2IDC_RADIO3哪個被選中,并將被選中單選按鈕的標題添加到組合框IDC_COMBO1中,設為組合框的默認選項。

CMyDialog::OnEnable()

{

 GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE);

 GetDlgItem(IDC_EDIT2)->ShowWindow(SW_HIDE);

}

 

CMyDialog::OnShow()

{

 GetDlgItem(IDC_EDIT1)->ShowWindow(SW_SHOW);

 GetDlgItem(IDC_EDIT2)->ShowWindow(SW_SHOW);

}

CMyDialog::Onshowage()

{

 CString strText;

 int i=-1;

 i=GetCheckedRadioButton(IDC_RADIO1,IDC_RADIO3);

 if(i==IDC_RADIO1)

 strText=">20";

 else if(i==IDC_RADIO2)

 strText="15-20";

 else if(i==IDC_RADIO3)

 strText="<15";

 GetDlgItem(IDC_COMBO1)->SetWindowText(strText);

 

}

2、下面左圖為菜單結構,右圖為運行結果,寫出彈出菜單的代碼。

void CPopupmenuView::OnContextMenu(CWnd* pWnd, CPoint point)

{

CMenu menuPopup ;

if(menuPopup.LoadMenu(IDR_MAINFRAME))

menuPopup.GetSubMenu (4)->TrackPopupMenu (TPM_LEFTALIGN | TPM_RIGHTBUTTON , point.x , point.y , this);

}