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

發表于:2007-04-27來源:作者:點擊數: 標簽:開發題的C++答案visual
1、簡述VC6下如何進行程序的調試 在主菜單"Build"中,有一個Start Build的子菜單,它下面包含了Go菜單(快捷鍵為F5),選擇后,程序將從當前語句進入調試運行,直到遇到斷點或程序結束。 將鼠標移動到要調試的代碼行,單擊鼠標右鍵選擇“Insert/Remove Breakpo
  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,并在其中添加代碼:

clearcase/" target="_blank" >cc66 width="90%" align=center bgColor=#dadacf border=1>
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);

原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
...
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97