• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            從vc6升級到vc7的一些問題及解決方法

            1. 編譯時出現:WINVER not defined. Defaulting to 0×0501 (Windows XP and Windows .NET Server)
            這個問題是因為沒有指定工程要使用的平臺SDK的版本。
            Minimum system required
            Macros to define
            Windows Server 2003 family
            _WIN32_WINNT>=0×0502
            Windows XP
            _WIN32_WINNT>=0×0501
            Windows 2000
            _WIN32_WINNT>=0×0500
            Windows NT 4.0
            _WIN32_WINNT>=0×0400
            Windows Me
            _WIN32_WINDOWS=0×0490
            Windows 98
            _WIN32_WINDOWS>=0×0410
            Internet Explorer 6.0
            _WIN32_IE>=0×0600
            Internet Explorer 5.01, 5.5
            _WIN32_IE>=0×0501
            Internet Explorer 5.0, 5.0a, 5.0b
            _WIN32_IE>=0×0500
            Internet Explorer 4.01
            _WIN32_IE>=0×0401
            Internet Explorer 4.0
            _WIN32_IE>=0×0400
            Internet Explorer 3.0, 3.01, 3.02
            _WIN32_IE>=0×0300
            解決辦法:
            屬性,C/C++,命令行,附加項中添加 /D_WIN32_WINNT=0×0501 (因為我是在xp下工作的所以是0×0501)
            ?
            2. Link是出現:LINK?: warning LNK4075: 忽略”/EDITANDCONTINUE”(由于”/INCREMENTAL:NO”規范)
            這個問題是因為在vc6中,工程使用的增量編譯。
            解決辦法:
            屬性,鏈接器,常規,啟動增量鏈接 選擇 是(INCREMENTAL)
            ?
            3. 編譯時出現:warning C4129: “U” : 不可識別的字符轉義序列
            error C3847: 通用字符中的錯誤符號;必須使用十六進制數字
            原因:為開發全球通用的應用程序,.NET Framework 使用 Unicode UTF-16(Unicode 轉換格式,16 位編碼形式)來表示字符。在某些情況下,.NET Framework 在內部使用 UTF-8。引入通用字符名稱的格式是 \u####\U########
            解決辦法:
            //#include MAKEPATH(MAIN_IMAGE_PATH, FunUtil\\Unit_star.txt)
            #include “..\\ImageData\\ML128160\\FunUtil\\Unit_star.txt”
            ?
            4. 鏈接是出現:LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit 已經在 MSVCRTD.lib(MSVCR71D.dll) 中定義 等類似錯誤
            原因:
            Run-Time Library
            ?Run-Time Library是編譯器提供的標準庫,提供一些基本的庫函數和系統調用。
            我們一般使用的Run-Time Library是C Run-Time Libraries。當然也有Standard C++ libraries。
            C Run-Time Libraries實現ANSI C的標準庫。VC安裝目錄的CRT目錄有C Run-Time庫的大部分源代碼。 C Run-Time Libraries有靜態庫版本,也有動態鏈接庫版本;有單線程版本,也有多線程版本;還有調試和非調試版本。
            ?動態鏈接庫版本:
            /MD Multithreaded DLL 使用導入庫MSVCRT.LIB
            /MDd Debug Multithreaded DLL 使用導入庫MSVCRTD.LIB
            ?靜態庫版本:
            /ML Single-Threaded 使用靜態庫LIBC.LIB
            /MLd Debug Single-Threaded 使用靜態庫LIBCD.LIB
            /MT Multithreaded 使用靜態庫LIBCMT.LIB
            /MTd Debug Multithreaded 使用靜態庫LIBCMTD.LIB
            若要使用此運行時庫
            請忽略這些庫
            單線程 (libc.lib)
            libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
            多線程 (libcmt.lib)
            libc.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
            使用 DLL 的多線程 (msvcrt.lib)
            libc.lib、libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib
            調試單線程 (libcd.lib)
            libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib
            調試多線程 (libcmtd.lib)
            libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib
            使用 DLL 的調試多線程 (msvcrtd.lib)
            libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib
            解決方法:
            屬性,鏈接器,輸入,忽略指定庫 libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib (這是我需要忽略的,你可以根據你工程的實際情況選擇。)

            update(20060205):
            5. 鏈接是出現不能打開mfc4xx.lib的錯誤時,這是因為VC7對MFC的dll進行了升級。

            解決辦法:
            屬性,鏈接器,輸入,附加依賴項 中 添加mfc71d.lib。
            ?
            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);


            FROM:http://blog.csdn.net/d007879/archive/2006/03/14/623895.aspx

            posted on 2006-09-24 19:09 楊粼波 閱讀(1229) 評論(1)  編輯 收藏 引用 所屬分類: C++

            評論

            # re: 從vc6升級到vc7的一些問題及解決方法[未登錄] 2007-03-26 09:59 thinkinnight

            不錯,有耐心去一個個找,收藏  回復  更多評論   

            亚洲av日韩精品久久久久久a | 久久久久AV综合网成人 | 久久99精品久久久久婷婷| 久久夜色精品国产亚洲| 无码国内精品久久人妻| 久久九九亚洲精品| 亚洲国产香蕉人人爽成AV片久久| 午夜精品久久久久| 久久99久久99小草精品免视看| 韩国三级中文字幕hd久久精品| 久久中文字幕视频、最近更新 | 亚洲精品综合久久| 69久久夜色精品国产69| 亚洲一区精品伊人久久伊人| 亚洲精品午夜国产VA久久成人| 久久996热精品xxxx| 国产∨亚洲V天堂无码久久久| 久久婷婷五月综合色99啪ak| 亚洲国产天堂久久综合网站| 久久棈精品久久久久久噜噜| 国产99久久久国产精品小说| 国产亚洲色婷婷久久99精品91| 99国产欧美精品久久久蜜芽| 久久久亚洲裙底偷窥综合| 欧美久久亚洲精品| 国产精品热久久无码av| 久久青青草原综合伊人| 狠狠色丁香婷婷久久综合不卡| 国产成人精品综合久久久| 热久久视久久精品18| 99久久精品免费看国产| 久久亚洲国产中v天仙www| 国产99精品久久| 嫩草影院久久国产精品| 久久亚洲精品视频| 91精品国产高清久久久久久国产嫩草| 久久精品国产精品亚洲毛片| 狠狠色婷婷久久一区二区三区| 午夜天堂精品久久久久| 国产精品无码久久综合 | 久久精品一本到99热免费|