Visual C++開發中常見問題的答案
阿新 • • 發佈:2019-02-04
1、簡述VC6下如何進行程式的除錯
在主選單"Build"中,有一個Start Build的子選單,它下面包含了Go選單(快捷鍵為F5),選擇後,程式將從當前語句進入除錯執行,直到遇到斷點或程式結束。
將滑鼠移動到要除錯的程式碼行,單擊滑鼠右鍵選擇“Insert/Remove Breakpoint”,或者按下F9,可以在該行上新增斷點,此時斷點程式碼行前面出現一個棕色的圈,再次選擇將清除斷點。進入除錯狀態後,Debug選單將取代Build選單出現在選單欄中,它下面包含常用的除錯操作,如Step Over,單步執行並不跟蹤到呼叫的函式內部;其他還包括Step Into,Step Out, Stop Debugging等除錯方法。
2、簡述在VC6建立的工程中字尾為.cpp,.h,.rc,.dsp,.dsw的檔案的作用是什麼?
.cpp是源程式程式碼C++檔案
.h是包含函式宣告和變數定義的標頭檔案
.rc是定義資源的資源指令碼檔案
.dsp是工程檔案,記錄當前工程的有關資訊
.dsw是工作區檔案,一個工作區可能包含一個或多個工程
3、已知一個對話方塊上有一個編輯框控制元件,ID為IDC_EDIT1,為其關聯了CEdit型別的變數m_edit1,使用兩種方法,說明如何改變編輯框內部的文字為"Hello",寫出程式程式碼的片斷。
第一種方法:
m_edit1.SetSel(0,-1);
m_edit1.ReplaceSel("Hello");
第二種方法:
SetWindowText("Hello");
4、簡述使用Windows API編寫的一個基本的Windows應用程式框架的結構。
Windows API編寫的基本應用程式框架至少應該包含程式入口函式WinMain和視窗函式WndProc。在主函式WinMain裡面包含視窗類的定義和註冊,視窗的建立和顯示以及訊息迴圈。
5、訊息在Windows中的資料型別是什麼,它有哪些成員變數,各有什麼含義
訊息的資料型別是MSG,它是一個結構體,其成員變數主要包括hwnd,表示訊息的視窗控制代碼;message代表訊息的型別;wParam和lParam包含訊息的附加資訊,隨不同的訊息有所不同。
6、Windows的滑鼠訊息的長引數lParam與字引數wParam的含義是什麼
滑鼠訊息的長引數lParam的低位元組包含了滑鼠游標位置的x座標值,lParam的高位元組包含了滑鼠游標位置的y座標值;字引數wParam內包含了指示當前按下的各種虛鍵狀態的值。
7、說明使用一個非模態對話方塊的注意問題和用到的Windows API函式
使用一個非模態對話方塊應該注意一定要在樣式中包含WS_VISIBLE才能正常顯示;建立對話方塊使用CreateDialog函式;訊息迴圈部分應該使用IsDialogMessage過濾訊息;關閉對話方塊使用函式DestroyWindow。
8、簡述在MFC應用程式中UpdateData函式的作用及其引數含義與使用場合。
UpdateData只有一個BOOL型別的引數,UpdateData(FALSE)一般用於對話方塊控制元件連線的變數值重新整理螢幕顯示;UpdateData(TRUE)用於獲取螢幕資料到對話方塊控制元件連線的變數中。
9、列舉列表框控制元件能夠接受的三個訊息型別,並說明其作用
LB_ADDSTRING用於在列表框中加入一項字串;LB_DIR用於在列表框中列出指定檔案;LB_GETTEXT用於獲取指定項的文字。
10、在一個對話方塊上添加了三個單選按鈕,要使它們之間自動實現互斥,應該注意什麼問題,在VC環境下如何操作?
要實現一組單選按鈕的自動互斥,應該讓它們的控制元件ID值連續,並設定第一個單選按鈕的Group屬性,其他的不設。
11、簡述由一個文件類派生自己的文件類,並實現文件的存取需要哪些步驟。
首先為每一個文件型別從CDocument派生一個相應的文件類;然後為該文件類新增成員變數以儲存資料;最後過載Serialize成員函式以實現文件資料的序列化。
12、列舉檢視類(CView)的三個子類,並簡要說明其作用。
CScrollView類提供檢視的滾動顯示;CEditView類支援在檢視中的文字編輯操作;CHtmlView類支援在檢視中顯示和操作html檔案。
13、Visual C++ 6.0如何進入除錯狀態,在除錯狀態下能夠顯示哪些除錯視窗,列舉三個,其作用分別是什麼?
啟動除錯後,在View選單的Debug Window子選單下可以開啟一些輔助除錯的視窗
Watch:顯示察看當前語句和前面語句中變數值的視窗
Call Stack:顯示察看呼叫堆疊的視窗
Memory:顯示察看記憶體中內容的視窗
14、說明點陣圖資源的建立及顯示過程的步驟,並給出相應的Windows API函式名。
首先定義點陣圖控制代碼HBITMAP hBitmap;第二步使用LoadBitMap載入點陣圖;第三步,呼叫CreateCompatibleDC向系統申請記憶體裝置環境控制代碼,並呼叫函式SelectObject把點陣圖選入記憶體裝置環境;第四步,呼叫BitBlt函式將點陣圖從記憶體裝置環境輸出到指定的視窗裝置環境中,從而實現顯示點陣圖。
15、如何獲取字型控制代碼從而實現字型的輸出,並給出相應的Windows API函式名。
首先定義字型控制代碼變數HFONT hF;然後呼叫函式GetStockObject獲取系統的字型控制代碼,或者呼叫CreateFont得到自定義的字型控制代碼;最後呼叫SelectObject把字型控制代碼選入裝置環境。
16、列舉三種按鈕的型別,並說明其作用和建立方法之間的不同之處。
常用的按鈕有普通按鈕、單選按鈕、複選框,和組框。普通按鈕作用是幫助使用者觸發指定動作;單選按鈕一般各選項之間存在互斥性;複選框用來顯示一組選項供使用者選擇,各選項之間不存在互斥;組框主要用於把控制元件分成不同的組並加以說明.
17、要使一個靜態控制元件顯示一個位圖並能接受使用者輸入,應該注意什麼問題。
要使靜態控制元件顯示點陣圖,必須設定其風格包含SS_BITMAP,並在建立靜態控制元件視窗,即呼叫CreateWindow時指定並載入點陣圖;要使靜態控制元件能夠接收使用者輸入,必須設定其風格包含SS_NOTIFY。
18、列舉滾動條控制元件的四種類型的動作標識,並說明其發生的場合。
常用的滾動條控制元件的動作標識包括(對於垂直滾動條):SB_LINEUP表示向上滾動一行;SB_LINEDOWN表示向下滾動一行;SB_PAGEUP表示向上滾動一頁;SB_PAGEDOWN表示向下滾動一頁。
19、說明使系統定時器訊息(WM_TIMER)的使用方法及其用到的Windows API函式
使用定時器訊息的方法是:首先呼叫SetTimer函式定義定時器訊息,包括訊息產生的時間間隔等;然後在相應的WM_TIMER訊息處理裡新增定時器訊息響應程式碼;最後呼叫KillTimer釋放該定時器。
20、MFC應用程式嚮導能夠建立那幾種類型的應用程式框架,哪些採用了文件/檢視結構。
MFC應用程式嚮導能建立基於單文件(SDI),基於多文件(MDI)和基於對話方塊(Dialog Based)三種應用程式的框架。其中前兩種採用了文件/檢視結構。
21、列舉五種控制元件,說明其作用和MFC對應的類名
CStatic是靜態文字控制元件視窗,用於標註、分隔對話方塊或視窗中的其他控制元件;CButton是按鈕控制元件視窗,為對話方塊或視窗中的按鈕、單選按鈕和多選按鈕等提供一個總的類;CScrollBar是滾動條控制元件視窗,提供滾動條的功能,用於在對話方塊或視窗中的一個控制元件,通過它在某一範圍內定位;CListBox是列表框控制元件視窗,列表框用於顯示一組列表項,使用者可以進行觀察和選擇;CProgressCtrl是進度條控制元件視窗,用於指示一個操作的進度。
22、MFC的文件/檢視結構中說明檢視類如何訪問文件類,文件類如何通知檢視類進行更新,給出成員方法名?
MFC的文件/檢視結構中,檢視類通過其成員方法GetDocument獲得對應文件類的指標,從而訪問文件類的資料;文件類通過其成員方法UpdateAllViews通知所有檢視,文件已經被修改,檢視應該被重畫。
23、簡述在一個基於對話方塊的MFC應用程式框架中新增一個編輯框(編輯框的控制元件ID是IDC_EDIT1,已經為其連線了變數m_edit1),要求在其中動態顯示示當前時間,時間格式為“HH:mm:ss",如"15:20:16",每一秒鐘重新整理一次,如何實現,給出程式碼片斷。(提示:使用定時器SetTimer)
實現方法:實現定時器,每隔一秒鐘發出WM_TIMER訊息,並在該訊息相應函式中新增程式碼更新編輯框內容。
第一步:為對話方塊的WM_INITDIALOG的訊息響應函式OnInitDialog中新增程式碼: SetTimer(1,100,NULL);
第二步: 為對話方塊新增WM_TIMER的訊息相應函式OnTimer,並在其中新增程式碼:
在主選單"Build"中,有一個Start Build的子選單,它下面包含了Go選單(快捷鍵為F5),選擇後,程式將從當前語句進入除錯執行,直到遇到斷點或程式結束。
將滑鼠移動到要除錯的程式碼行,單擊滑鼠右鍵選擇“Insert/Remove Breakpoint”,或者按下F9,可以在該行上新增斷點,此時斷點程式碼行前面出現一個棕色的圈,再次選擇將清除斷點。進入除錯狀態後,Debug選單將取代Build選單出現在選單欄中,它下面包含常用的除錯操作,如Step Over,單步執行並不跟蹤到呼叫的函式內部;其他還包括Step Into,Step Out, Stop Debugging等除錯方法。
2、簡述在VC6建立的工程中字尾為.cpp,.h,.rc,.dsp,.dsw的檔案的作用是什麼?
.cpp是源程式程式碼C++檔案
.h是包含函式宣告和變數定義的標頭檔案
.rc是定義資源的資源指令碼檔案
.dsp是工程檔案,記錄當前工程的有關資訊
.dsw是工作區檔案,一個工作區可能包含一個或多個工程
3、已知一個對話方塊上有一個編輯框控制元件,ID為IDC_EDIT1,為其關聯了CEdit型別的變數m_edit1,使用兩種方法,說明如何改變編輯框內部的文字為"Hello",寫出程式程式碼的片斷。
第一種方法:
m_edit1.SetSel(0,-1);
m_edit1.ReplaceSel("Hello");
第二種方法:
SetWindowText("Hello");
4、簡述使用Windows API編寫的一個基本的Windows應用程式框架的結構。
Windows API編寫的基本應用程式框架至少應該包含程式入口函式WinMain和視窗函式WndProc。在主函式WinMain裡面包含視窗類的定義和註冊,視窗的建立和顯示以及訊息迴圈。
5、訊息在Windows中的資料型別是什麼,它有哪些成員變數,各有什麼含義
訊息的資料型別是MSG,它是一個結構體,其成員變數主要包括hwnd,表示訊息的視窗控制代碼;message代表訊息的型別;wParam和lParam包含訊息的附加資訊,隨不同的訊息有所不同。
6、Windows的滑鼠訊息的長引數lParam與字引數wParam的含義是什麼
滑鼠訊息的長引數lParam的低位元組包含了滑鼠游標位置的x座標值,lParam的高位元組包含了滑鼠游標位置的y座標值;字引數wParam內包含了指示當前按下的各種虛鍵狀態的值。
7、說明使用一個非模態對話方塊的注意問題和用到的Windows API函式
使用一個非模態對話方塊應該注意一定要在樣式中包含WS_VISIBLE才能正常顯示;建立對話方塊使用CreateDialog函式;訊息迴圈部分應該使用IsDialogMessage過濾訊息;關閉對話方塊使用函式DestroyWindow。
8、簡述在MFC應用程式中UpdateData函式的作用及其引數含義與使用場合。
UpdateData只有一個BOOL型別的引數,UpdateData(FALSE)一般用於對話方塊控制元件連線的變數值重新整理螢幕顯示;UpdateData(TRUE)用於獲取螢幕資料到對話方塊控制元件連線的變數中。
9、列舉列表框控制元件能夠接受的三個訊息型別,並說明其作用
LB_ADDSTRING用於在列表框中加入一項字串;LB_DIR用於在列表框中列出指定檔案;LB_GETTEXT用於獲取指定項的文字。
10、在一個對話方塊上添加了三個單選按鈕,要使它們之間自動實現互斥,應該注意什麼問題,在VC環境下如何操作?
要實現一組單選按鈕的自動互斥,應該讓它們的控制元件ID值連續,並設定第一個單選按鈕的Group屬性,其他的不設。
11、簡述由一個文件類派生自己的文件類,並實現文件的存取需要哪些步驟。
首先為每一個文件型別從CDocument派生一個相應的文件類;然後為該文件類新增成員變數以儲存資料;最後過載Serialize成員函式以實現文件資料的序列化。
12、列舉檢視類(CView)的三個子類,並簡要說明其作用。
CScrollView類提供檢視的滾動顯示;CEditView類支援在檢視中的文字編輯操作;CHtmlView類支援在檢視中顯示和操作html檔案。
13、Visual C++ 6.0如何進入除錯狀態,在除錯狀態下能夠顯示哪些除錯視窗,列舉三個,其作用分別是什麼?
啟動除錯後,在View選單的Debug Window子選單下可以開啟一些輔助除錯的視窗
Watch:顯示察看當前語句和前面語句中變數值的視窗
Call Stack:顯示察看呼叫堆疊的視窗
Memory:顯示察看記憶體中內容的視窗
14、說明點陣圖資源的建立及顯示過程的步驟,並給出相應的Windows API函式名。
首先定義點陣圖控制代碼HBITMAP hBitmap;第二步使用LoadBitMap載入點陣圖;第三步,呼叫CreateCompatibleDC向系統申請記憶體裝置環境控制代碼,並呼叫函式SelectObject把點陣圖選入記憶體裝置環境;第四步,呼叫BitBlt函式將點陣圖從記憶體裝置環境輸出到指定的視窗裝置環境中,從而實現顯示點陣圖。
15、如何獲取字型控制代碼從而實現字型的輸出,並給出相應的Windows API函式名。
首先定義字型控制代碼變數HFONT hF;然後呼叫函式GetStockObject獲取系統的字型控制代碼,或者呼叫CreateFont得到自定義的字型控制代碼;最後呼叫SelectObject把字型控制代碼選入裝置環境。
16、列舉三種按鈕的型別,並說明其作用和建立方法之間的不同之處。
常用的按鈕有普通按鈕、單選按鈕、複選框,和組框。普通按鈕作用是幫助使用者觸發指定動作;單選按鈕一般各選項之間存在互斥性;複選框用來顯示一組選項供使用者選擇,各選項之間不存在互斥;組框主要用於把控制元件分成不同的組並加以說明.
17、要使一個靜態控制元件顯示一個位圖並能接受使用者輸入,應該注意什麼問題。
要使靜態控制元件顯示點陣圖,必須設定其風格包含SS_BITMAP,並在建立靜態控制元件視窗,即呼叫CreateWindow時指定並載入點陣圖;要使靜態控制元件能夠接收使用者輸入,必須設定其風格包含SS_NOTIFY。
18、列舉滾動條控制元件的四種類型的動作標識,並說明其發生的場合。
常用的滾動條控制元件的動作標識包括(對於垂直滾動條):SB_LINEUP表示向上滾動一行;SB_LINEDOWN表示向下滾動一行;SB_PAGEUP表示向上滾動一頁;SB_PAGEDOWN表示向下滾動一頁。
19、說明使系統定時器訊息(WM_TIMER)的使用方法及其用到的Windows API函式
使用定時器訊息的方法是:首先呼叫SetTimer函式定義定時器訊息,包括訊息產生的時間間隔等;然後在相應的WM_TIMER訊息處理裡新增定時器訊息響應程式碼;最後呼叫KillTimer釋放該定時器。
20、MFC應用程式嚮導能夠建立那幾種類型的應用程式框架,哪些採用了文件/檢視結構。
MFC應用程式嚮導能建立基於單文件(SDI),基於多文件(MDI)和基於對話方塊(Dialog Based)三種應用程式的框架。其中前兩種採用了文件/檢視結構。
21、列舉五種控制元件,說明其作用和MFC對應的類名
CStatic是靜態文字控制元件視窗,用於標註、分隔對話方塊或視窗中的其他控制元件;CButton是按鈕控制元件視窗,為對話方塊或視窗中的按鈕、單選按鈕和多選按鈕等提供一個總的類;CScrollBar是滾動條控制元件視窗,提供滾動條的功能,用於在對話方塊或視窗中的一個控制元件,通過它在某一範圍內定位;CListBox是列表框控制元件視窗,列表框用於顯示一組列表項,使用者可以進行觀察和選擇;CProgressCtrl是進度條控制元件視窗,用於指示一個操作的進度。
22、MFC的文件/檢視結構中說明檢視類如何訪問文件類,文件類如何通知檢視類進行更新,給出成員方法名?
MFC的文件/檢視結構中,檢視類通過其成員方法GetDocument獲得對應文件類的指標,從而訪問文件類的資料;文件類通過其成員方法UpdateAllViews通知所有檢視,文件已經被修改,檢視應該被重畫。
23、簡述在一個基於對話方塊的MFC應用程式框架中新增一個編輯框(編輯框的控制元件ID是IDC_EDIT1,已經為其連線了變數m_edit1),要求在其中動態顯示示當前時間,時間格式為“HH:mm:ss",如"15:20:16",每一秒鐘重新整理一次,如何實現,給出程式碼片斷。(提示:使用定時器SetTimer)
實現方法:實現定時器,每隔一秒鐘發出WM_TIMER訊息,並在該訊息相應函式中新增程式碼更新編輯框內容。
第一步:為對話方塊的WM_INITDIALOG的訊息響應函式OnInitDialog中新增程式碼: SetTimer(1,100,NULL);
第二步: 為對話方塊新增WM_TIMER的訊息相應函式OnTimer,並在其中新增程式碼: