走在架構(gòu)師的大道上 Jack.Wang's home

          Java, C++, linux c, C#.net 技術(shù),軟件架構(gòu),領(lǐng)域建模,IT 項(xiàng)目管理 Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            195 Posts :: 3 Stories :: 728 Comments :: 0 Trackbacks
          Visual C++開發(fā)中常見問題的答案


          1、簡述VC6下如何進(jìn)行程序的調(diào)試

            在主菜單"Build"中,有一個(gè)Start Build的子菜單,它下面包含了Go菜單(快捷鍵為F5),選擇后,程序?qū)漠?dāng)前語句進(jìn)入調(diào)試運(yùn)行,直到遇到斷點(diǎn)或程序結(jié)束。


            將鼠標(biāo)移動(dòng)到要調(diào)試的代碼行,單擊鼠標(biāo)右鍵選擇“Insert/Remove Breakpoint”,或者按下F9,可以在該行上添加斷點(diǎn),此時(shí)斷點(diǎn)代碼行前面出現(xiàn)一個(gè)棕色的圈,再次選擇將清除斷點(diǎn)。進(jìn)入調(diào)試狀態(tài)后,Debug菜單將取代Build菜單出現(xiàn)在菜單欄中,它下面包含常用的調(diào)試操作,如Step Over,單步運(yùn)行并不跟蹤到調(diào)用的函數(shù)內(nèi)部;其他還包括Step Into,Step Out, Stop Debugging等調(diào)試方法。

            2、簡述在VC6建立的工程中后綴為.cpp,.h,.rc,.dsp,.dsw的文件的作用是什么?

             .cpp是源程序代碼C++文件

             .h是包含函數(shù)聲明和變量定義的頭文件

             .rc是定義資源的資源腳本文件

             .dsp是工程文件,記錄當(dāng)前工程的有關(guān)信息

             .dsw是工作區(qū)文件,一個(gè)工作區(qū)可能包含一個(gè)或多個(gè)工程

            3、已知一個(gè)對(duì)話框上有一個(gè)編輯框控件,ID為IDC_EDIT1,為其關(guān)聯(lián)了CEdit類型的變量m_edit1,使用兩種方法,說明如何改變編輯框內(nèi)部的文本為"Hello",寫出程序代碼的片斷。

            第一種方法:

            m_edit1.SetSel(0,-1);

            m_edit1.ReplaceSel("Hello");

            第二種方法:

            SetWindowText("Hello");

            4、簡述使用Windows API編寫的一個(gè)基本的Windows應(yīng)用程序框架的結(jié)構(gòu)。

            Windows API編寫的基本應(yīng)用程序框架至少應(yīng)該包含程序入口函數(shù)WinMain和窗口函數(shù)WndProc。在主函數(shù)WinMain里面包含窗口類的定義和注冊(cè),窗口的創(chuàng)建和顯示以及消息循環(huán)。

            5、消息在Windows中的數(shù)據(jù)類型是什么,它有哪些成員變量,各有什么含義

            消息的數(shù)據(jù)類型是MSG,它是一個(gè)結(jié)構(gòu)體,其成員變量主要包括hwnd,表示消息的窗口句柄;message代表消息的類型;wParam和lParam包含消息的附加信息,隨不同的消息有所不同。

            6、Windows的鼠標(biāo)消息的長參數(shù)lParam與字參數(shù)wParam的含義是什么

            鼠標(biāo)消息的長參數(shù)lParam的低字節(jié)包含了鼠標(biāo)光標(biāo)位置的x坐標(biāo)值,lParam的高字節(jié)包含了鼠標(biāo)光標(biāo)位置的y坐標(biāo)值;字參數(shù)wParam內(nèi)包含了指示當(dāng)前按下的各種虛鍵狀態(tài)的值。

            7、說明使用一個(gè)非模態(tài)對(duì)話框的注意問題和用到的Windows API函數(shù)

            使用一個(gè)非模態(tài)對(duì)話框應(yīng)該注意一定要在樣式中包含WS_VISIBLE才能正常顯示;創(chuàng)建對(duì)話框使用CreateDialog函數(shù);消息循環(huán)部分應(yīng)該使用IsDialogMessage過濾消息;關(guān)閉對(duì)話框使用函數(shù)DestroyWindow。

            8、簡述在MFC應(yīng)用程序中UpdateData函數(shù)的作用及其參數(shù)含義與使用場(chǎng)合。

            UpdateData只有一個(gè)BOOL類型的參數(shù),UpdateData(FALSE)一般用于對(duì)話框控件連接的變量值刷新屏幕顯示;UpdateData(TRUE)用于獲取屏幕數(shù)據(jù)到對(duì)話框控件連接的變量中。

            9、列舉列表框控件能夠接受的三個(gè)消息類型,并說明其作用

            LB_ADDSTRING用于在列表框中加入一項(xiàng)字符串;LB_DIR用于在列表框中列出指定文件;LB_GETTEXT用于獲取指定項(xiàng)的文本。

            10、在一個(gè)對(duì)話框上添加了三個(gè)單選按鈕,要使它們之間自動(dòng)實(shí)現(xiàn)互斥,應(yīng)該注意什么問題,在VC環(huán)境下如何操作?

            要實(shí)現(xiàn)一組單選按鈕的自動(dòng)互斥,應(yīng)該讓它們的控件ID值連續(xù),并設(shè)置第一個(gè)單選按鈕的Group屬性,其他的不設(shè)。

            11、簡述由一個(gè)文檔類派生自己的文檔類,并實(shí)現(xiàn)文檔的存取需要哪些步驟。

            首先為每一個(gè)文檔類型從CDocument派生一個(gè)相應(yīng)的文檔類;然后為該文檔類添加成員變量以保存數(shù)據(jù);最后重載Serialize成員函數(shù)以實(shí)現(xiàn)文檔數(shù)據(jù)的串行化。

            12、列舉視圖類(CView)的三個(gè)子類,并簡要說明其作用。

            CScrollView類提供視圖的滾動(dòng)顯示;CEditView類支持在視圖中的文本編輯操作;CHtmlView類支持在視圖中顯示和操作html文件。

            13、Visual C++ 6.0如何進(jìn)入調(diào)試狀態(tài),在調(diào)試狀態(tài)下能夠顯示哪些調(diào)試窗口,列舉三個(gè),其作用分別是什么?

            啟動(dòng)調(diào)試后,在View菜單的Debug Window子菜單下可以打開一些輔助調(diào)試的窗口

            Watch:顯示察看當(dāng)前語句和前面語句中變量值的窗口

            Call Stack:顯示察看調(diào)用堆棧的窗口

            Memory:顯示察看內(nèi)存中內(nèi)容的窗口

            14、說明位圖資源的創(chuàng)建及顯示過程的步驟,并給出相應(yīng)的Windows API函數(shù)名。

            首先定義位圖句柄HBITMAP hBitmap;第二步使用LoadBitMap加載位圖;第三步,調(diào)用CreateCompatibleDC向系統(tǒng)申請(qǐng)內(nèi)存設(shè)備環(huán)境句柄,并調(diào)用函數(shù)SelectObject把位圖選入內(nèi)存設(shè)備環(huán)境;第四步,調(diào)用BitBlt函數(shù)將位圖從內(nèi)存設(shè)備環(huán)境輸出到指定的窗口設(shè)備環(huán)境中,從而實(shí)現(xiàn)顯示位圖。

            15、如何獲取字體句柄從而實(shí)現(xiàn)字體的輸出,并給出相應(yīng)的Windows API函數(shù)名。

            首先定義字體句柄變量HFONT hF;然后調(diào)用函數(shù)GetStockObject獲取系統(tǒng)的字體句柄,或者調(diào)用CreateFont得到自定義的字體句柄;最后調(diào)用SelectObject把字體句柄選入設(shè)備環(huán)境。

            16、列舉三種按鈕的類型,并說明其作用和創(chuàng)建方法之間的不同之處。

            常用的按鈕有普通按鈕、單選按鈕、復(fù)選框,和組框。普通按鈕作用是幫助用戶觸發(fā)指定動(dòng)作;單選按鈕一般各選項(xiàng)之間存在互斥性;復(fù)選框用來顯示一組選項(xiàng)供用戶選擇,各選項(xiàng)之間不存在互斥;組框主要用于把控件分成不同的組并加以說明.

            17、要使一個(gè)靜態(tài)控件顯示一個(gè)位圖并能接受用戶輸入,應(yīng)該注意什么問題。

            要使靜態(tài)控件顯示位圖,必須設(shè)定其風(fēng)格包含SS_BITMAP,并在創(chuàng)建靜態(tài)控件窗口,即調(diào)用CreateWindow時(shí)指定并加載位圖;要使靜態(tài)控件能夠接收用戶輸入,必須設(shè)定其風(fēng)格包含SS_NOTIFY。

            18、列舉滾動(dòng)條控件的四種類型的動(dòng)作標(biāo)識(shí),并說明其發(fā)生的場(chǎng)合。

            常用的滾動(dòng)條控件的動(dòng)作標(biāo)識(shí)包括(對(duì)于垂直滾動(dòng)條):SB_LINEUP表示向上滾動(dòng)一行;SB_LINEDOWN表示向下滾動(dòng)一行;SB_PAGEUP表示向上滾動(dòng)一頁;SB_PAGEDOWN表示向下滾動(dòng)一頁。

            19、說明使系統(tǒng)定時(shí)器消息(WM_TIMER)的使用方法及其用到的Windows API函數(shù)

            使用定時(shí)器消息的方法是:首先調(diào)用SetTimer函數(shù)定義定時(shí)器消息,包括消息產(chǎn)生的時(shí)間間隔等;然后在相應(yīng)的WM_TIMER消息處理里添加定時(shí)器消息響應(yīng)代碼;最后調(diào)用KillTimer釋放該定時(shí)器。

            20、MFC應(yīng)用程序向?qū)軌騽?chuàng)建那幾種類型的應(yīng)用程序框架,哪些采用了文檔/視圖結(jié)構(gòu)。

            MFC應(yīng)用程序向?qū)芙⒒趩挝臋n(SDI),基于多文檔(MDI)和基于對(duì)話框(Dialog Based)三種應(yīng)用程序的框架。其中前兩種采用了文檔/視圖結(jié)構(gòu)。

            21、列舉五種控件,說明其作用和MFC對(duì)應(yīng)的類名

            CStatic是靜態(tài)文本控件窗口,用于標(biāo)注、分隔對(duì)話框或窗口中的其他控件;CButton是按鈕控件窗口,為對(duì)話框或窗口中的按鈕、單選按鈕和多選按鈕等提供一個(gè)總的類;CScrollBar是滾動(dòng)條控件窗口,提供滾動(dòng)條的功能,用于在對(duì)話框或窗口中的一個(gè)控件,通過它在某一范圍內(nèi)定位;CListBox是列表框控件窗口,列表框用于顯示一組列表項(xiàng),用戶可以進(jìn)行觀察和選擇;CProgressCtrl是進(jìn)度條控件窗口,用于指示一個(gè)操作的進(jìn)度。

            22、MFC的文檔/視圖結(jié)構(gòu)中說明視圖類如何訪問文檔類,文檔類如何通知視圖類進(jìn)行更新,給出成員方法名?

            MFC的文檔/視圖結(jié)構(gòu)中,視圖類通過其成員方法GetDocument獲得對(duì)應(yīng)文檔類的指針,從而訪問文檔類的數(shù)據(jù);文檔類通過其成員方法UpdateAllViews通知所有視圖,文檔已經(jīng)被修改,視圖應(yīng)該被重畫。

            23、簡述在一個(gè)基于對(duì)話框的MFC應(yīng)用程序框架中添加一個(gè)編輯框(編輯框的控件ID是IDC_EDIT1,已經(jīng)為其連接了變量m_edit1),要求在其中動(dòng)態(tài)顯示示當(dāng)前時(shí)間,時(shí)間格式為“HH:mm:ss",如"15:20:16",每一秒鐘刷新一次,如何實(shí)現(xiàn),給出代碼片斷。(提示:使用定時(shí)器SetTimer)

            實(shí)現(xiàn)方法:實(shí)現(xiàn)定時(shí)器,每隔一秒鐘發(fā)出WM_TIMER消息,并在該消息相應(yīng)函數(shù)中添加代碼更新編輯框內(nèi)容。

            第一步:為對(duì)話框的WM_INITDIALOG的消息響應(yīng)函數(shù)OnInitDialog中添加代碼: SetTimer(1,100,NULL);

            第二步: 為對(duì)話框添加WM_TIMER的消息相應(yīng)函數(shù)OnTimer,并在其中添加代碼:

          CTime tNow;

          tNow=CTime::GetCurrentTime();

          CString sNow=tNow.Format("%I:%M:%S");

          m_edit1.SetSel(0,-1);

          m_edit1.ReplaceSel(sNow);

            第二步: 為對(duì)話框的WM_DESTRYOY的消息響應(yīng)函數(shù)OnDestroy中添加代碼 KillTimer(1);



          本博客為學(xué)習(xí)交流用,凡未注明引用的均為本人作品,轉(zhuǎn)載請(qǐng)注明出處,如有版權(quán)問題請(qǐng)及時(shí)通知。由于博客時(shí)間倉促,錯(cuò)誤之處敬請(qǐng)諒解,有任何意見可給我留言,愿共同學(xué)習(xí)進(jìn)步。
          posted on 2008-01-23 17:04 Jack.Wang 閱讀(1424) 評(píng)論(0)  編輯  收藏 所屬分類: 開發(fā)技術(shù)
          主站蜘蛛池模板: 普宁市| 耿马| 甘洛县| 鄂托克前旗| 英德市| 台州市| 巩留县| 恭城| 乾安县| 和平县| 南开区| 常德市| 彭州市| 肥乡县| 澎湖县| 交城县| 新闻| 阿克陶县| 大同市| 同心县| 石门县| 杭锦后旗| 徐汇区| 神木县| 信丰县| 涞水县| 邵阳市| 股票| 厦门市| 昌江| 苏尼特右旗| 通山县| 合阳县| 潼南县| 沙湾县| 泾源县| 玉门市| 黎川县| 星子县| 扬州市| 嵊州市|