VC練習(xí)題(網(wǎng)上收集)

zhangtaolmq

VC習(xí)題1

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

AWinMain函數(shù)的名稱是固定的

BWinMain函數(shù)是Windows程序的入口點

CWinMain函數(shù)不能有參數(shù)

D)窗口函數(shù)與WinMain的關(guān)聯(lián)是通過窗口類的注冊實現(xiàn)的

 

1.3 以下四個特性中哪一個不屬于面向?qū)ο蟮娜筇匦裕?/span> A)。

  A)封裝性   B)多態(tài)性   C)抽象性         D)繼承性

 

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

Apublic Bfriend Cprivate   Dprotected

 

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

    ACWinApp   BCMainFrame    CCDocument DCView

 

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

ACWinApp   BCFrameWnd    CCView      DCObject

 

1.7 傳統(tǒng)的軟件開發(fā)主要采用 過程 驅(qū)動的方法,而Windows程序的開發(fā)使用消息       驅(qū)動模型,該模型靠事件機制來實現(xiàn)其功能。

 

1.8 主框架類是應(yīng)用程序中負(fù)責(zé)控制菜單、工具欄和狀態(tài)欄等界面元素的最主要的類。

 

 

習(xí)題2

2.1 Windows 應(yīng)用程序的消息來源主要包括 輸入消息、控制消息和系統(tǒng)消息、用戶消息

 

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

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

 

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

 

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

 

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

 

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

 

2.7 MessageBox函數(shù)的第一個參數(shù)表示 消息文字,第二個參數(shù)表示 標(biāo)題文字,第三個參數(shù)表示 圖標(biāo)與按鈕組合              

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

 

2.9 當(dāng)Windows窗口內(nèi)部需要重新繪制時,會得到一個  WM_PAINT  消息,當(dāng)釋放鼠標(biāo)右鍵時,會得到一個 WM_RBUTTONUP  消息。

 

 

習(xí)題三

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

A)菜單  B)工具欄      C)狀態(tài)欄    D)位圖

 

3.2 MFC應(yīng)用程序框架為狀態(tài)欄定義的靜態(tài)數(shù)組indicators放在哪個文件中( A )。

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

 

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

 

3.4工具欄上的按鈕能觸發(fā)的消息 command update_command_ui

 

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

 

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

 

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

 ARectangle   BEllipse CCircle   DLine

 

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

 ATextOut BExtTextOut   CTabbedTextOut   DDrawText

 

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

ACPen   BCWnd CCbrush  DCRgn

 

習(xí)題四

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

AGDI     BCPaintDC   CCClientDC DCWindowDC

 

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

 

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

 

4.4 Windows引入圖形設(shè)備接口的目的是屏蔽底層硬件的繪圖細(xì)節(jié),使編程更加容易  

 

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

 

4.6 創(chuàng)建畫筆后,必須調(diào)用CDC類的成員函數(shù)   SelectObject將新畫筆選進(jìn)當(dāng)前的繪圖環(huán)境。

 

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

ACreateWindow   BShowWindow   CDoModal      DUpdateWindow

 

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

AWM_PAINT    BWM_INITDIALOG    CWM_CREATE DWM_SIZE

 

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

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

習(xí)題五

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

 ACFileDialog      BCColorDialog      CCPrintDialog     DCFontDialog

 

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

 AOnOK     BOnCancel      COnInitDialog        DDoModal

 

5.3所有通用對話框都是由公共基CCommonDialog派生出來的,                      CColorDialog實現(xiàn)了標(biāo)準(zhǔn)的顏色對話框。

 

5.4 MFC中,與屬性對話框相關(guān)的兩個類是 CPropertyPage CPropertySheet

 

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

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

 

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

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

 

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

 ACWnd::UpdateData函數(shù)實現(xiàn)對控件中數(shù)值的輸入和讀取

  BUpdateData只有一個為TRUEFALSE的參數(shù)

 C)當(dāng)調(diào)用UpdateDataFALSE)時,數(shù)據(jù)由控件關(guān)聯(lián)的變量向控件傳輸

 D)當(dāng)調(diào)用UpdateDataTRUE)時,數(shù)據(jù)由控件關(guān)聯(lián)的變量向控件傳輸

 

5.8 有兩種方法可以創(chuàng)建靜態(tài)文本控件,一種是使用資源編輯器添加,另一種是 使用create函數(shù)動態(tài)創(chuàng)建。

 

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

習(xí)題六

6.1 判斷一組單選按鈕中哪一個被選中了,要應(yīng)用GetCheckedRadioButton                               函數(shù)。

 

6.2 GetScrollpos函數(shù)可以得到滾動條的滑塊位置, SetScrollpos函數(shù)可以設(shè)置滾動條的滑塊位置, Getpos可以得到滑動條的當(dāng)前位置, Setpos 函數(shù)可以設(shè)置滑動條的當(dāng)前位置。

 

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

 

6.4當(dāng)程序需要與界面交換數(shù)據(jù)時,應(yīng)該調(diào)用 UpdataData 函數(shù)。

 

6.5  GetDocument 是視圖類的成員函數(shù),調(diào)用它可以得到指向與之關(guān)聯(lián)的文檔對象的指針,文檔的串行化在Serialize 函數(shù)中進(jìn)行。

 

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

 

6.7基于單文檔/視圖結(jié)構(gòu)的框架程序中包含的類有 CWinApp CFrameWnd    CDocumentCDocTemplate Cview  

 

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

   AODBC管理器    B)數(shù)據(jù)源     C)驅(qū)動程序管理器     D)數(shù)據(jù)庫管理系統(tǒng)DBMS

 

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

習(xí)題七

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

 

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

 

7.3下列函數(shù)中,能為狀態(tài)欄第二個信息格設(shè)定文字的是( A

 

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

 

 

 

 

 

簡答題:

 

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

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

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

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

2.什么是消息映射?

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

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

 

3.創(chuàng)建一個窗口的步驟?

創(chuàng)建一個完整的窗口需要經(jīng)過下面四個操作步驟

設(shè)計一個窗口類;

注冊窗口類;

創(chuàng)建窗口;

顯示及更新窗口。

 

4.什么是模態(tài)對話框?什么是非模態(tài)對話框?

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

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

 

5.文檔/視圖結(jié)構(gòu)的工作機制

視圖通過GetDocument成員函數(shù)獲得指向相關(guān)聯(lián)的文檔對象的指針

通過該指針調(diào)用文檔類的成員函數(shù)來從文檔中讀取數(shù)據(jù)

視圖把數(shù)據(jù)顯示于計算機屏幕上

用戶通過與視圖的交互來查看數(shù)據(jù)并對數(shù)據(jù)進(jìn)行修改

視圖通過相關(guān)聯(lián)的文檔類的成員函數(shù)將經(jīng)過修改的數(shù)據(jù)傳遞給文檔對象

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

 

 

 

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

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

 

7. 串行化的好處

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

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

 

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

 

創(chuàng)建畫刷(可調(diào)用畫刷創(chuàng)建函數(shù)CreateSolidBrushCreateHatchBrush

將畫刷選入設(shè)備環(huán)境(調(diào)用SelectObject

使用該刷子進(jìn)行繪畫

刪除畫刷

 

9、簡述文檔/視圖結(jié)構(gòu)中包含的主要的類及各個類之間的相互關(guān)系。

包括 CWinApp CDocument CView CDocTemplate CFrameWnd

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

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

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

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

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

 

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

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、下面左圖為菜單結(jié)構(gòu),右圖為運行結(jié)果,寫出彈出菜單的代碼。

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);

}