Visual C++開發中常見問題的答案

來源:互聯網
上載者:User
 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);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.