Visual C++(包含Windows API和MFC)開發中常見問題的答案

來源:互聯網
上載者:User

Visual C++(包含Windows API和MFC)開發中常見問題的答案

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,並在其中添加代碼:     
        CTime tNow;
        tNow=CTime::GetCurrentTime();
        CString sNow=tNow.Format("%I:%M:%S");
        m_edit1.SetSel(0,-1);
        m_edit1.ReplaceSel(sNow);
第二步: 為對話方塊的WM_DESTRYOY的訊息響應函數OnDestroy中添加代碼 KillTimer(1);

(原創yanqlv) 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.