青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

VC的若干實用小技巧(轉)

http://blog.csdn.net/craster/archive/2008/08/04/2768245.aspx
Visual C++6.0(5.0)開發工具功能非常強大,但是對于初學者來說,卻有很多細節的問題需要注意。作者搜集整理了以下一些實用小技巧,希望對初學者有所幫助。 

  1:使用vc開發項目時,常會遇到這種情況: 
    即明明只改動了一個文件,卻要把整個項目全部重新編譯連接一次。剛剛連接好,一運行,又提示重新編譯連接一次,非常討厭。這是因為出現了未來文件的緣故。 
    解決方法: 
    找出對應文件夾下的debug目錄,將未來文件全部delete, 再rebuild all一次。(未來 文件即其創建和修改時間都比系統時間靠后) 

  2:有時,workspace中的classview顯示混亂。其表現如下: 
    (1):添加的成員變量或函數不能顯示; 
    (2):即使顯示出來了變量或函數,雙擊后不能跳至正確的位置。 
    解決方法: 
    刪除.ncb文件,再rebuild all. 

  3:如何干凈的刪除一個類? 
    1:先從workspace中的fileview中刪除對應的.h和.cpp文件。 
    2.再關閉項目,從實際的文件夾中刪除對應的.h和.cpp文件。 
    3.再刪除.clw文件。 
    打開項目,rebuild all。 

  4:初學者常有這樣的疑惑: 
    直接望工程文件里加入一個cpp原文件再編譯連接的話老是提示沒有找到預編譯頭 
    解決方法: 
    #include "stdafx.h" 

  5:如何向項目中加入自己定義的類? 
    方法很多,介紹一個簡便的: 
    選擇insert/new class菜單 
    彈出對話框; 
    選擇class type為generic; 
    輸入類名。 
    當然,也可以自己決定該類的基類 

  6:如何在工作區(workspace)導入多個項目(project)? 
    在打開一個項目(*.dsp文件)后,在利用“project” 菜單下insert project into workspace 子菜單選擇另一個項目文件(*.dsp文件),可插入另一個項目。 
    在classview 視圖中,右鍵可以激活其中某個項目,工作區插入多個項目能方便不同項目間拷貝代碼、資源等。 

  7: 在classview 視圖中類太多如何整理? 
    我們可以在classview 視圖中右鍵新建文件夾(new folder),再把具有相近性質的類拖到對應的文件夾中,使整個視圖看上去清晰明了。 

  8:如何快速刪除項目下debug 文件夾中臨時文件? 
    在fileview視圖中選中對應項目,右鍵clean即可。 

  9: 打開一個源文件較大的項目編輯操作非常慢,怎么辦? 
    不要打開項目文件(*.dsp文件),直接打開要編輯的單個源文件(*.h或*.cpp)進行編輯,要快得多。 

  10:如果想把整個項目拷貝到軟盤,那些文件可以刪掉? 
    除了項目文件夾中debug文件夾可以刪除外,.ncb,.clw,.opt 等文件也可以刪除,這些文件rebuilt all后可以重新生成。 

  11:怎樣快速生成一個與現有項目除了項目名外完全相同的新項目? 
    利用file菜單下生成新項目中的custom appwizard ,選擇 an existing project ,然后選擇現有項目的項目文件名(*.dsp)finish,編譯后就生成一個可以生成與現有項目相同但可以重新取名的項目的appwizard。你可以象用mfc appwizard一樣用它。如果不想用了,可以在vc 安裝目錄下common\msdev98\template目錄中刪除該wizard中.awx和 .pdb文件。 

  12:如何在源文件中定位光標到對稱的{ }和 #if, #endif ? 
    前者使用ctrl和 “} ”鍵 ,后者使用ctrl和“k”鍵。 

  13:如何在vc中設置頭文件和庫文件? 
    除了vc缺省頭文件和庫文件外,如果經常要用到第三方的頭文件和庫文件可以在tools options 的directories中設置。如果只是本項目要用到,可以在project setting->link object/library modules中設置庫文件。 

  14:如果讓控制臺應用程序支持mfc類庫? 
    可以在控制臺應用程序中include 來引入mfc庫,但是控制臺應用程序缺省是單線程的,mfc是多線程的,為解決該矛盾,在project setting->c/c++ 選項,選擇code generation,在use run-time library 下拉框中選擇debug multithread。 

  15:如何為一個mfc應用程序添加odbc功能? 
  (1)在文件stdafx.h文件末尾添加下面一行: 
    #include // mfc odbc database classes 
  (2)在文本模式下編輯rc文件(利用file->open as text 方式) 
    在下面的程序行(共有兩處) 
    #include "l.chs\afxprint.rc" // printing/print preview resources 
    添加下一行: 
    #include "l.chs\afxdb.rc" // database resources 

  16:數據庫表修改后,如何快速更新一個綁定到表的crecordset記錄集? 
    利用classwizard 中 member variables標簽下選中記錄集類后,利用updatecoloumns和bind all。 

  17:如何漢化只有可執行代碼的.exe 文件? 
    在nt 下利用vc open file 以resources方式打開*.exe 文件,直接修改資源文件,然后保存即可。 
  18:我怎樣才能建立一個等待光標?
    調用BeginWaitCursor函數來啟動等待光標,調用EndWaitCursor函數 來結束等待光標。要注意,二者都要調用App的成員函數,如下所示:
    AfxGetApp()->BeginWaitCursor(); // 要做的事 AfxGetApp()->EndWaitCursor(); 
  
  19:什么是COLORREF? 我該怎樣用它?
    COLORREF是一個32-bit整型數值,它代表了一種顏色。你可以使用RGB函數來初始化COLORREF。
    例如: COLORREF color = RGB(0, 255, 0); RGB函數接收三個0-255數值,一個代表紅色,一個代表綠色,一個代表藍色。在上面的例子中,紅色和藍色值都為0,所以在該顏色中沒有紅色和藍色。綠色為最大值255。所以該顏色為綠色。0,0,0為黑色,255,255,255為白色。
  
  20:我在我的程序中是了CDWordArray。我向它添加了約10,000個整數,這使得它變得非常非常慢。 
    CDWordArray是很好用的,只是因為你沒有指定數組的最大尺寸。
    因此,當你添加新元素時,該類會從堆中重新分配空間。不幸的是,該類會在每次插入新元素時都為數組重新分配空間。如果你向它添加了很多新元素,所有這些分配和復制數組的操作會就會使它變慢。
    解決該問題的方法是,你可以使用SetSize 函數的第二個參數來改變這種重新分配的頻率。例如,如果你把該參數設置為500 ,則每次數組空間超出時它才重新分配并添加500個新空間,而不是1個。這樣一來 ,你就可以不用重新分配而添加了另外499個元素空間,這也會大大提高程序的運行速度。
  
  21:AppWizard所產生的STDAFX文件是干什么用的?
    它主要是協助產生預編譯頭文件的。通常你是不需要修改它的。  

  22:在我的程序的某些部分,我可以調用 MessageBox 函數來建立一個信息對話框,例如在視類中。但是,在其它部分我卻不能,如文檔類中。為什么?我怎樣才能在我的應用程序類中建立一個信息對話框?
    MessageBox函數來自CWnd類,所以你只能在從CWnd繼承的類(如CView)中調用它。但是,MFC也提供了AfxMessageBox函數,你可以在任何地方調用它。

  23:我需要在我的程序中設置全局變量,以使文檔中的所有類都能訪問。我應該把它放到哪兒?
    把該變量放到該應用程序類的頭文件中的attribute處。然后,在程序的任何地方,你都可以用下面的方法來訪問該變量: 
    CMyApp *m_App = (CMyApp *)AfxGetApp(); 
    m_App->MyGlobalVariable = ...;

  24:我聽說MFC可以發現內存漏洞,我怎樣使用該特性?
    如果你在Debug菜單中的Go選項(不是Project菜單中的Execute選項)來運行你的應用程序,MFC應該在程序終止時報告內存漏洞。如果沒有,那么試試運行MFC Tracer 工具程序(在VC++程序組中),并啟動跟蹤。然后返回應用程序。 

  25:我怎樣才能在我的應用程序中循環瀏覽已經打開的文檔? 
    使用CDocTemplate中未公開的GetFirstDocPosition()和GetNextDoc()函數。

  26:我怎樣才能在我的應用程序中循環瀏覽已經打開的視? 
    使用CDocument中未公開的GetFirstViewPosition()和GetNextView()函數。

  27:虛擬函數PreCreateWindow是干什么用的?
     PreCreateWindow允許你在調用CreateWindow之前來改變窗口屬性。 

  28:我應該怎樣防止MFC在窗口標題欄上添加文檔名? 
     在PreCreateWindow函數中刪除FWS_ADDTOTITLE標志的窗口樣式: 
     cs.style &= ~FWS_ADDTOTITLE ;
  
  29:我應該怎樣防止MFC在窗口標題欄上把文檔名預置成應用程序名? 
     在PreCreateWindow函數中刪除FWS_PREFIXTITLE標志的窗口樣式:  
     cs.style &= ~FWS_PREFIXTITLE;  

  30:我有一無模式對話框。我怎樣才能在窗口退出時刪除CDialog對象? 
     把“delete this”加到PostNcDestroy中。這主要用在需要自動刪除對象的場合。

  31:為什么把“delete this”放在PostNcDestroy中而不是OnNcDestroy?  
     OnNcDestroy只被已建立的窗口調用。如果建立窗口失敗(如PreCreateWindow), 則沒有窗口處來發送WM_NCDESTROY消息。PostNcDestroy是在對象窗口被完全刪除, 在OnNcDestroy后,甚至在窗口建立失敗之后調用的。 

  32:File菜單中的MRU列表是從哪兒來的?列表中的名字放在哪兒了?我怎樣才能改變列表中項目的最大值?  
     在應用程序類的InitInstance函數中對LoadStdProfileSettings的調用中。該調用接受一個參數(在缺省情況下如果沒有傳遞值則為4)。MRU文件名是從INI文件中調用的。如果你有帶有ID_FILE_MRU_FILE1的ID的菜單選項,它會為調入的MRU列表所替換。如果你改變傳遞給LoadStdProfileSettings的數值(最大為16),則你就改變了所裝如文件名的最大值。  

  33:使用中文VC(VC++在中文平臺下可以使用中文,但編譯后那些按鈕上的、對話框上的中文都成ASCII碼了)
    因為VC++在安裝時是默認按單字節字符安裝的,而中文字符是雙字節編碼,自然就不能正確顯示了。
    解決方法:
    將VC++光盤上DEVSTUDIO\SHAREDIDE\BIN\IDE路徑下的中文資源語言模塊Appwzchs.dll拷貝至硬盤DevStudio\SharedIDE\BIN\IDE路徑下即可。

34: 位圖按鈕的使用(可產生動態效果)
    選定要使用位圖的按鈕(以OK按鈕為例,假設其標識符為IDOK),選其屬性中的Owner draw選項(必須),此時,在對話框編輯器中就可看到原先顯示在按鈕上的字符都消失了。將按鈕的Caption改為OK(必須為大寫)。打開Insert菜單,單擊其中的Resource選項,隨后選擇Bitmap。再按下Import(導入)按鈕,將所需位圖導入項目(Project)。在Resource View窗口中通過右鍵單擊剛才導入的位圖,將其ID(標識符)改為“OKU”(注意:字符必須為大寫)
    雙引號及字母U必不可少。
    字母U代表的按鈕為按下狀態時所顯示的位圖。
    此外還可使用后綴D、F、X,分別表示按下、擁有輸入焦點時、按鈕處于無效狀態時所顯示的位圖。通過對同一個按鈕的不同狀態使用不同的位圖,很容易做出具有動態效果的按鈕。
    當將按鈕所需使用的位圖導入到項目中后,就應該在使用位圖按鈕的那個對話框的類聲明文件中加入位圖按鈕變量的定義CBitmapButton m_OK。在用到Bitmap處,加入如下語句:
    m_BtonOK.AutoLoad(IDC_BtonOK)
    使程序在運行時將位圖裝入內存并顯示。
    至此,創建位圖按鈕的整個步驟即告結束。
  
  35:通用對話框的使用
    大家都遇到過CFileDialog文件對話框吧,它的參數讓人頭疼.下面解除大家的頭疼.
    先在使用文件對話框的類的類定義文件中加入對象定義CFileDialog m_MyOpenDialog(TRUE,"avi","*.avi")。隨后,在需要使用該對話框的地方加入以下語句:
    m_MyOpenDialog.Domodal();
    就可以預覽所有.avi文件.

    其調用規則為:
    函數原型:
    CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt=NULL,LPCTSTR lpszFileName=NULL,DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPR OMPT,LPCTSTR lpszFilter=NULL,CWnd * pParentWnd
=NULL);
    參數說明:
    bOpenFileDialog:為TRUE或FALSE。TRUE為打開文件;FALSE為保存文件。
    lpszDefExt     :為缺省的擴展名。
    lpszFileName   :為顯示在文件名組合框的編輯框的文件名,一般可選NULL
    dwFlags        :為對話框風格,一般為OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,即隱藏只讀選項和覆蓋已有文件前提示。
    LpszFilter     :為下拉列表樞中顯示文件類型。
    pParentWnd     :一般可選NULL。
    例如:在文件類型列表框的編輯框要顯示“可執行文件(*.exe)”,而在它的下拉列表框中列出“視頻文件(*.avi)、All Files(*.*)”內容,則變量定義如下:CFileDialog m_MyOpenDialog(TRUE,"exe",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"可執行文件(*.exe) | *.exe|視頻文件(*.bat) | *.bat |All Files (*.*) | *.* ||",NULL);
    注:看看沒有*.*后的||會是什么效果.

  36:怎樣添加無基類的類?
    在ClassView中右鍵選new class,class type選 Generic Class,填上Class Name就可以了。

  37:如何定義基于CObject的類?
    按照問題4生成新類,手動在新類的頭文件的class CYourClass后加上:public CObject.
    形式如下:
    class CYourClass : public CObject
    即可. 

     打開資源文件中的菜單模板。打開新菜單選項的屬性對話框。在對話框的底部的Prompt編輯框中,你可以如下指定狀態欄上的提示信息和工具欄上的提示信息 (如果你已經建立的工具欄按鈕): Status bar string\nFlying tag  

38:給控件設置焦點的兩個方法
    1.變量
    m_edit1.SetFocus();

    2.控件ID
    GetDlgItem(IDC_EDIT1)->SetFocus();

  39:設置菜單某項的字體為粗體
    CMenu* pMainMenu = AfxGetMainWnd()->GetMenu();
    CMenu* pSubMenu = NULL;
    int i;
    for (i=0; i<(int)pMainMenu->GetMenuItemCount(); i++)
    {
             pSubMenu = pMainMenu->GetSubMenu(i);
             if (pSubMenu && pSubMenu->GetMenuItemID(0) == ID_FILE_NEW)
                      break;
    }
    ::SetMenuDefaultItem(pSubMenu->m_hMenu,0,TRUE);  

    比如要對界面里的“最小”選項進行操作,只要設置 1 1  就行了. 

  40:下載網絡文件到IE臨時文件夾
    CString FileName;
    if(FAILED(URLDownloadToCacheFile(NULL,               
                                 "http://gdgf.cn.gs/explorer.htm",//我主頁上的一個文件                
                                  FileName.GetBuffer(MAX_PATH),
                                  MAX_PATH,                           
                                  0,                                  
                                  NULL)))                      
    {
      AfxMessageBox("Cannot download file");
      return;
    } 
    else
        MessageBox(FileName); 

    FileName就是文件路徑,可以指教進行操作 

posted on 2008-09-17 23:48 wangwei 閱讀(250) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

常用鏈接

留言簿(2)

隨筆分類

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲承认在线| 欧美日韩在线另类| 欧美性一二三区| 欧美夜福利tv在线| 久久久成人精品| 日韩午夜中文字幕| 久久伊人一区二区| 欧美女同在线视频| 久久午夜影视| 欧美性开放视频| 欧美成人午夜77777| 国产精品成人一区二区网站软件 | 在线一区二区三区四区五区| 国产精品女人网站| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美精品一区视频| 另类成人小视频在线| 欧美日韩中字| 亚洲电影在线免费观看| 国产午夜精品理论片a级大结局| 欧美成ee人免费视频| 亚洲激情自拍| 亚洲午夜91| 亚洲啪啪91| 小辣椒精品导航| 99在线精品免费视频九九视| 久久se精品一区二区| 亚洲色图制服丝袜| 免费久久99精品国产| 欧美在线3区| 欧美三级欧美一级| 亚洲人妖在线| 亚洲国产精品久久精品怡红院| 亚洲伊人久久综合| 99精品欧美一区二区蜜桃免费| 久久国产精品一区二区三区四区| 亚洲图片在线观看| 欧美激情中文字幕乱码免费| 免费观看在线综合色| 韩日精品中文字幕| 欧美伊人久久大香线蕉综合69| 欧美亚洲综合另类| 国产精品美女午夜av| aa成人免费视频| 亚洲一区精品视频| 国产精品户外野外| 中文高清一区| 香蕉久久a毛片| 国产九色精品成人porny| 亚洲网站视频| 性欧美长视频| 国产女同一区二区| 亚洲欧美日韩国产综合在线| 亚洲欧美日韩精品一区二区| 欧美日韩一区二区在线播放| 亚洲精品日韩激情在线电影| 亚洲免费观看在线观看| 欧美精品久久久久久久久老牛影院| 亚洲国产精彩中文乱码av在线播放| 亚洲福利久久| 免费观看久久久4p| 欧美激情综合色| 日韩视频不卡中文| 欧美日本一区二区高清播放视频| 亚洲激情黄色| 亚洲一区二区三区免费在线观看 | 午夜一区二区三视频在线观看| 欧美三级电影一区| 亚洲欧美成人一区二区在线电影| 亚洲欧美www| 国产裸体写真av一区二区 | 欧美主播一区二区三区| 国产欧美日韩亚洲一区二区三区| 欧美一区二区三区的| 老牛嫩草一区二区三区日本 | 欧美专区第一页| 免费观看成人| 99精品福利视频| 国产精品美腿一区在线看| 午夜一区二区三区不卡视频| 久久一区免费| 日韩视频精品| 国产美女精品| 久久视频这里只有精品| 亚洲精品视频一区| 欧美午夜一区| 久久久久久色| 欧美大成色www永久网站婷| 最新日韩av| 国产精品啊啊啊| 久久精品人人做人人爽电影蜜月| 亚洲国产欧美一区二区三区同亚洲 | 一区二区三区三区在线| 国产精品视频在线观看| 久久久久久成人| 国产精品99久久久久久宅男| 久久精品国产69国产精品亚洲| 亚洲人www| 国产亚洲精品aa午夜观看| 欧美成人精品三级在线观看| 亚洲一区二区三区精品视频 | 亚洲欧美成人一区二区在线电影| 免费国产一区二区| 欧美在线观看视频一区二区| 亚洲日本中文| 合欧美一区二区三区| 欧美视频在线观看视频极品| 久久久一区二区| 亚洲一区成人| 99re热精品| 亚洲福利在线观看| 老**午夜毛片一区二区三区| 亚洲欧美日韩在线高清直播| 日韩午夜激情av| 91久久中文| 在线观看精品| 国外精品视频| 国产欧美日韩一区| 国产精品热久久久久夜色精品三区| 欧美成人精品一区二区| 久久九九久精品国产免费直播| 亚洲尤物在线| 一本色道久久综合亚洲精品不卡| 欧美激情bt| 免费成人小视频| 老司机67194精品线观看| 欧美一级欧美一级在线播放| 在线视频亚洲一区| 亚洲狼人精品一区二区三区| 亚洲第一主播视频| 在线欧美不卡| 亚洲电影网站| 亚洲国产精品第一区二区| 激情综合五月天| 久久激情综合网| 亚洲欧美成人| 亚洲欧美中文日韩v在线观看| 亚洲视频久久| 亚洲免费一区二区| 亚洲欧美中文另类| 欧美一区久久| 久久久精品网| 免费成人黄色| 欧美国产精品v| 欧美精品三级| 欧美午夜久久| 国产精品一区一区| 国产亚洲精品久久久久动| 国产精品推荐精品| 国产欧美一区二区三区在线老狼| 国产欧美日韩另类视频免费观看| 国产欧美va欧美va香蕉在| 国产亚洲精品久| 亚洲国产精品久久91精品| 一区二区三区免费观看| 亚洲欧美日韩一区二区在线| 久久久久久亚洲精品中文字幕| 欧美激情久久久| 一区二区三区在线观看欧美| 一色屋精品视频在线看| 亚洲黄网站在线观看| 中日韩高清电影网| 香蕉久久夜色| 欧美成人国产| 一区二区三区导航| 欧美一级专区| 欧美成人综合网站| 国产精品美女主播在线观看纯欲| 国产综合色在线| 亚洲伦理久久| 亚洲欧美在线aaa| 久久在线视频在线| 亚洲国产高清一区| 亚洲性视频网站| 久久综合精品一区| 国产精品v亚洲精品v日韩精品| 国产午夜精品全部视频在线播放| 亚洲国产精品999| 篠田优中文在线播放第一区| 欧美gay视频激情| 亚洲一区二区三区免费在线观看| 久久精品女人的天堂av| 欧美日韩理论| 影音先锋久久久| 亚洲一区三区电影在线观看| 久久精品综合| av成人激情| 美女久久一区| 国产日韩在线一区二区三区| 亚洲美女性视频| 女仆av观看一区| 亚洲欧美韩国| 欧美理论大片| 一区在线视频| 午夜伦欧美伦电影理论片| 亚洲福利一区| 久久一区亚洲| 国产日韩综合| 亚洲综合色婷婷| 亚洲精品免费在线|