国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
VC積累
1.狀態(tài)欄上顯示時(shí)間
void CMainFrame::OnUpdateTime(CCmdUI* pCmdUI)
{
 CTime timeCur=CTime::GetCurrentTime();
 char szOut[20];
 sprintf( szOut,"%02d:%02d:%02d",timeCur.GetHour(),timeCur.GetMinute(),timeCur.GetSecond());
 pCmdUI->SetText(szOut);
}
 CTime time;//構(gòu)建了一個(gè)CTime對象time
 time=CTime::GetCurrentTime();//獲得當(dāng)前的系統(tǒng)時(shí)間
 CString s=time.Format("%H:%M:%S");//返回一個(gè)按時(shí):分:秒的格式表示的字符串
 2. 更新時(shí)間窗格顯示的正文
 //SetPaneText的第一個(gè)參數(shù)是窗格的索引,對于某一個(gè)窗格ID,可調(diào)用CStatusBar::CommandToIndex來獲得索引。
 m_wndStatusBar.SetPaneText(m_wndStatusBar.CommandToIndex(ID_INDICATOR_CLOCK),s);
 CFrameWnd::OnTimer(nIDEvent);
-----------------------------------------------------------------------------------------
3. 生成和銷除一個(gè)靜態(tài)對話框
void CYourView::OnOpenDlg(void)
{
 /*假設(shè)IDD_TEST_DLG為已經(jīng)定義的對話框資源的ID號*/
 CTestDlg *dlg=new CTestDlg;
 dlg->Create(IDD_TEST_DLG,NULL);
 dlg->ShowWindows(SW_SHOW);
 /*不要調(diào)用 delete dlg;*/
}

void CTestDlg1::OnOK()
{
 CDialog::OnOK();
 DestroyWindow();
}
void CTestDlg1::OnCancel()
{
 CDialog::OnCancel();
 DestroyWindow();
}
void CTestDlg1::OnDestroy()
{
 CDialog::OnDestroy();
 AfxMessageBox("call delete this");
 delete this;
}
-----------------------------------------------------------------------------------------
4.GetDlgItem 返回對話框控件句柄
=======================
 ((CComboBox *)GetDlgItem(IDC_COMBO_TYPE))->AddString("開關(guān)狀態(tài)");
 ((CComboBox *)GetDlgItem(IDC_COMBO_TYPE))->AddString("開關(guān)狀態(tài)抽查");
 ((CComboBox *)GetDlgItem(IDC_COMBO_TYPE))->SetCurSel(0);
 ((CComboBox *)GetDlgItem(IDC_COMBO_TYPE))->AddString("開關(guān)狀態(tài)抽查");
 ((CComboBox *)GetDlgItem(IDC_COMBO_TYPE))->SetCurSel(0);
-----------------------------------------------------------------------------------------
 5. 如何進(jìn)行文件操作
=======================
取得文件名
打開文件
移動文件指針
讀寫文件
關(guān)閉文件
取得文件名
{
CString FilePathName;
CFileDialog dlg(TRUE);///TRUE為OPEN對話框,F(xiàn)ALSE為SAVE AS對話框
if(dlg.DoModal()==IDOK)
FilePathName=dlg.GetPathName();
}
相關(guān)信息:CFileDialog 用于取文件名的幾個(gè)成員函數(shù):
假如選擇的文件是C:\WINDOWS\TEST.EXE
則:
(1)GetPathName();取文件名全稱,包括完整路徑。取回C:\WINDOWS\TEST.EXE
(2)GetFileTitle();取文件全名:TEST.EXE
(3)GetFileName();取回TEST
(4)GetFileExt();取擴(kuò)展名EXE
打開文件
CFile file("C:\HELLO.TXT",CFile::modeRead);///只讀方式打開
///CFile::modeRead可改為 CFile::modeWrite(只寫),CFile::modeReadWrite(讀寫),CFile::modeCreate(新建)
例子:
{
CFile file;
file.Open("C:\HELLO.TXT",CFile::modeCreate|Cfile::modeWrite);
...
...
}
移動文件指針
file.Seek(100,CFile::begin);///從文件頭開始往下移動100字節(jié)
file.Seek(-50,CFile::end);///從文件末尾往上移動50字節(jié)
file.Seek(-30,CFile::current);///從當(dāng)前位置往上移動30字節(jié)
file.SeekToBegin();///移到文件頭
file.SeekToEnd();///移到文件尾
讀寫文件
讀文件:
char buffer[1000];
file.Read(buffer,1000);
寫文件:
CString string("這個(gè)世界只有偏執(zhí)狂才能成功");
file.Write(string,8);
關(guān)閉文件
file.Close();
-----------------------------------------------------------------------------------------
6. CWnd::IsDlgButtonChecked函數(shù),
=======================
用來判斷單選按鈕或檢查框是否被選擇,該函數(shù)的聲明為
UINT IsDlgButtonChecked(int nIDButton) const;
參數(shù)nIDButton為按鈕的ID。若按鈕被選擇,則函數(shù)返回1,否則返回0,若按鈕處于不確定狀態(tài),則返回值為2。
7. CWnd::GetDlgItem函數(shù),
=======================
用來獲得指向某一控件的指針,該函數(shù)的聲明為
CWnd* GetDlgItem(int nID) const;
參數(shù)nID為控件的ID。該函數(shù)返回一個(gè)指定控件的CWnd對象指針,通過該指針,程序可以對控件進(jìn)行控制。
8. CWnd::EnableWindow函數(shù),
=======================
該函數(shù)使窗口允許或禁止,禁止的窗口呈灰色顯示,不能接收鍵盤和鼠標(biāo)的輸入。該函數(shù)的聲明是
BOOL EnableWindow( BOOL bEnable = TRUE );
若參數(shù)bEnable的值為TRUE,則窗口被允許,若bEnable的值為FALSE,則窗口被禁止。
9. CListBox::SetCurSel和CComboBox::SetCurSel函數(shù)功能類似,
=======================
用來使列表中的某一項(xiàng)被選中,選中的項(xiàng)呈高亮度顯示。函數(shù)的聲明是
int SetCurSel(int nSelect);
參數(shù)nSelect指定了新選項(xiàng)的索引,第一項(xiàng)的索引值為0,
若nSelect的值為-1,那么函數(shù)將清除以前的選擇,使列表處于未選擇狀態(tài)。
-----------------------------------------------------------------------------------------
10. 用來管理對話框控件的CWnd成員函數(shù)
=======================
函數(shù)名
 功能
 
CheckDlgButton
 選中或不選中按鈕控件。
 
CheckRadioButton
 選擇一個(gè)指定的單選按鈕并使同組內(nèi)的其它單選按鈕不被選擇。
 
DlgDirList
 往一個(gè)列表框中添加文件、目錄或驅(qū)動器的列表。
 
DlgDirListComboBox
 往一個(gè)組合框中的列表框內(nèi)添加文件、目錄或驅(qū)動器的列表。
 
DlgDirSelect
 從一個(gè)列表框中獲得當(dāng)前選擇的文件、目錄或驅(qū)動器。
 
DlgDirSelectBomboBox
 從一個(gè)組合框中獲得當(dāng)前選擇的文件、目錄或驅(qū)動器。
 
GetCheckedRadioButton
 返回指定的單選按鈕組中被選擇的單選按鈕的ID。
 
GetDlgItem
 返回一個(gè)指向一給定的控件的臨時(shí)對象的指針。
 
GetDlgItemInt
 返回在一個(gè)指定的控件中由正文表示的數(shù)字值。
 
GetDlgItemText
 獲得在一個(gè)控件內(nèi)顯示的正文。
 
GetNextDlgGroupItem
 返回一個(gè)指向一組控件內(nèi)的下一個(gè)或上一個(gè)控件的臨時(shí)對象的指針。
 
GetNextDlgTabItem
 返回下一個(gè)tab順序的控件的臨時(shí)對象的指針。
 
IsDlgButtonChecked
 返回一個(gè)按鈕控件的狀態(tài)。
 
SendDlgItemMessage
 把一個(gè)消息傳送給一個(gè)控件。
 
SetDlgItemInt
 將一個(gè)整數(shù)轉(zhuǎn)換為正文,并將此正文賦給控件。
 
SetDlgItemText
 設(shè)置一個(gè)控件顯示的正文。
 -----------------------------------------------------------------------------------------
 11.公用對話框類
 =======================
CColorDialog
 選擇顏色
 
CFileDialog
 選擇文件名,用于打開和保存文件
 
CFindReplaceDialog
 正文查找和替換
 
CFontDialog
 選擇字體
 
CPrintDialog
 打印和打印設(shè)置
-----------------------------------------------------------------------------------------
 12. 常用于控件的CWnd成員函數(shù)
=======================
函數(shù)名
 用途
 
ShowWindow
 調(diào)用ShowWindow(SW_SHOW)顯示窗口,調(diào)用ShowWindow(SW_HIDE)則隱藏窗口.
 
EnableWindow
 調(diào)用EnableWindow(TRUE)允許窗口,調(diào)用EnableWindow(FALSE)則禁止窗口.
 一個(gè)禁止的窗口呈灰色顯示且不能接受用戶輸入.
 
DestroyWindow
 刪除窗口.
 
MoveWindow
 改變窗口的位置和尺寸.
 
SetFocus
 使窗口具有輸入焦點(diǎn).
 
m_MyEdit.ShowWindow(SW_HIDE);
13. 訪問控件的方法
=======================
控件是一種交互的工具,應(yīng)用程序需要通過某種方法來訪問控件以對其進(jìn)行查詢和設(shè)置.
訪問控件有四種方法:
法一:利用對話框的數(shù)據(jù)交換功能訪問控件.
--------------------------------------
這種方法適用于自動創(chuàng)建的控件.先用ClassWizard為對話框類加入與控件對應(yīng)的數(shù)據(jù)成員變量,
然后在適當(dāng)?shù)臅r(shí)侯調(diào)用UpdateData,就可以實(shí)現(xiàn)對話框和控件的數(shù)據(jù)交換.這種方法只能交換數(shù)據(jù),
不能對控件進(jìn)行全面的查詢和設(shè)置,而且該方法不是針對某個(gè)控件,而是針對所有參與數(shù)據(jù)交換的控件.
另外,對于新型的Win32控件,不能用ClassWizard創(chuàng)建數(shù)據(jù)成員變量.因此,該方法有較大的局限性.
法二:通過控件對象來訪問控件.
--------------------------------------
控件對象對控件進(jìn)行了封裝,它擁有功能齊全的成員函數(shù),用來查詢和設(shè)置控件的各種屬性.
通過控件對象來訪問控件無疑是最能發(fā)揮控件功能的一種方法,
但這要求程序必需創(chuàng)建控件對象并使該對象與某一控件相連.
對于自動創(chuàng)建的控件,可利用ClassWizard方便地創(chuàng)建與控件對應(yīng)的控件對象.
對于手工創(chuàng)建的控件,因?yàn)榭丶旧砭褪峭ㄟ^控件對象創(chuàng)建的,所以不存在這一問題.
法三:利用CWnd類的一些用于管理控件的成員函數(shù)來訪問控件.
--------------------------------------
只要向這些函數(shù)提供控件的ID,就可以對該控件進(jìn)行訪問.
使用這些函數(shù)的好處是無需創(chuàng)建控件對象,就可以對控件的某些常用屬性進(jìn)行查詢和設(shè)置.
該方法對自動和手工創(chuàng)建的控件均適用.
法四:用CWnd::GetDlgItem訪問控件.
--------------------------------------
該函數(shù)根據(jù)參數(shù)說明的控件ID,返回指定控件的一個(gè)CWnd型指針,
程序可以把該指針強(qiáng)制轉(zhuǎn)換成相應(yīng)的控件類指針,然后通過該指針來訪問控件.
該方法對自動和手工創(chuàng)建的控件均適用.其實(shí)該方法與通過控件對象來訪問控件的方法在本質(zhì)上是一樣的.
(CEdit*)GetDlgItem(IDC_EDIT1) =
--------------------------------------------------------------------------------------
    14. 視圖
======
視圖類從CView派生,它是數(shù)據(jù)的用戶窗口
如果文檔需要卷滾,需要從CScrollView派生出視圖類。
如果希望視圖按一個(gè)對話框模板資源來布置用戶界面,可以從CFormView派生。
--------------------------------------------------------------------------------------
15. 設(shè)備上下文
======
MFC中與GDI有關(guān)的類
為了支持GDI繪圖,MFC提供了兩種重要的類:設(shè)備上下文類,用于設(shè)置繪圖屬性和繪制圖形;
繪圖對象類,封裝了各種GDI繪圖對象,包括畫筆、刷子、字體、位圖、調(diào)色板和區(qū)域。
設(shè)備上下文類
設(shè)備上下文類包括CDC和它的派生類CClientDC、CPaintDC、CWindowDC、CMetaFileDC。
CDC是設(shè)備上下文類的基類,除了一般的窗口顯示外,還用于基于桌面的全屏幕繪制和非屏幕顯示的打印機(jī)輸出。
CDC類封裝了所有圖形輸出函數(shù),包括矢量、光柵和文本輸出。
CClientDC(客戶區(qū)設(shè)備上下文)
用于客戶區(qū)的輸出,它在構(gòu)造函數(shù)中封裝了GetDC(),在析構(gòu)函數(shù)中封裝了ReleaseDC()函數(shù)。
一般在響應(yīng)非窗口重畫消息(如鍵盤輸入時(shí)繪制文本、鼠標(biāo)繪圖)繪圖時(shí)要用到它。
用法是:
CClientDC dc(this);//this一般指向本窗口或當(dāng)前活動視圖
//利用dc輸出文本,如果是在CScrollView中使用,還要注意調(diào)用OnPrepareDC(&dc)調(diào)整設(shè)備上下文的坐標(biāo)。
dc.TextOut(10,10,str,str.GetLength());
CPaintDC用于響應(yīng)窗口重繪消息(WM_PAINT)是的繪圖輸出。
CPaintDC在構(gòu)造函數(shù)中調(diào)用BeginPaint()取得設(shè)備上下文,在析構(gòu)函數(shù)中調(diào)用EndPaint()釋放設(shè)備上下文。
EndPaint()除了釋放設(shè)備上下文外,還負(fù)責(zé)從消息隊(duì)列中清除WM_PAINT消息。
因此,在處理窗口重畫時(shí),必須使用CPaintDC,否則WM_PAINT消息無法從消息隊(duì)列中清除,
將引起不斷的窗口重畫。CPaintDC也只能用在WM_PAINT消息處理之中。
CWindowDC用于窗口客戶區(qū)和非客戶區(qū)(包括窗口邊框、標(biāo)題欄、控制按鈕等)的繪制。
除非要自己繪制窗口邊框和按鈕(如一些CD播放程序等),否則一般不用它。
CMetaFileDC專門用于圖元文件的繪制。
圖元文件記錄一組GDI命令,可以通過這一組GDI命令重建圖形輸出。
使用CMetaFileDC時(shí),所有的圖形輸出命令會自動記錄到一個(gè)與CMetaFileDC相關(guān)的圖元文件中
--------------------------------------------------------------------------------------
/16 .繪圖工具欄的顯示與隱藏
void CMainFrame::OnViewToolbar1()
{
 // TODO: Add your command handler code here
 m_wndToolBar1.ShowWindow(m_wndToolBar1.IsWindowVisible()? SW_HIDE:SW_SHOW);
 RecalcLayout();//窗口重新布局
}
//檢查工具欄按鈕是否被選中
void CMainFrame::OnUpdateViewToolbar1(CCmdUI* pCmdUI)
{
 // TODO: Add your command update UI handler code here
  pCmdUI->SetCheck(m_wndToolBar1.IsWindowVisible());
 
}
--------------------------------------------------------------------------------------
17. 創(chuàng)建一個(gè)狀態(tài)欄需要以下幾個(gè)步驟:
構(gòu)建一個(gè)CStatusBar對象。
調(diào)用CStatusBar::Create創(chuàng)建狀態(tài)欄窗口。
調(diào)用CStatusBar::SetIndicators函數(shù)分配窗格,并將狀態(tài)欄的每一個(gè)窗格與一個(gè)字符串ID相聯(lián)系。
--------------------------------------------------------------------------------------
   18. 位圖
======
 CBitmap bitmap;//生成一個(gè)對象
  CDC dcMemory;
 bitmap.LoadBitmap(IDB_BITMAP1);//加載
  dcMemory.CreateCompatibleDC(pDC);//為位圖創(chuàng)建一個(gè)特殊的內(nèi)存設(shè)備環(huán)境。
  dcMemory.SelectObject(&bitmap);
  pDC->BitBlt(100,100,54,96,&dcMemory,0,0,SRCCOPY);
-------------------------------------------------------------------------------
  19. 顏色對話框的使用
============
注:
  m_ncolor保存當(dāng)前選擇的顏色
void CCommandDialogView::OnTestColor()
{
 // TODO: Add your command handler code here
 CColorDialog dlg(this->m_color);
 if (dlg.DoModal()==IDOK)
 {
  this->m_color=dlg.GetColor();
 }
}
-----------------------------------------------------------------------------------
  20. 設(shè)備環(huán)境與位圖
==========
(1)DC(Device Context),有的稱之為設(shè)備上下文,有的稱之為設(shè)備環(huán)境,還有的稱之為設(shè)備描述表。
DC比較像一組繪圖工具,有畫布(繪圖表面)、畫筆、畫刷、調(diào)色板等。
MFC中CDC是設(shè)備環(huán)境類的基類直接由CObject派生。
(2)"設(shè)備DC"和"內(nèi)存DC"
  "設(shè)備DC"通常代表顯示器和打印機(jī)等物理設(shè)備,它的繪圖表面可以是顯示器的屏幕或打印機(jī)中的紙張。
  "內(nèi)存DC"隱藏在內(nèi)存中,不可顯示,而且通常要向內(nèi)存DC中選入位圖來作為內(nèi)存DC的繪圖表面,
            這個(gè)繪圖表面我們也是看不到的。但向內(nèi)存DC所發(fā)的繪圖命令與發(fā)往窗口DC與打印機(jī)DC的命令基本上是相同的。
            通過virtual BOOL CDC::CreateCompatibleDC(CDC* pDC)來創(chuàng)建"內(nèi)存DC"。
(3)DC中GDI對象的選入與分離,以畫刷為例
方法1:
CDC dc;
CBrush* pOldBrush = dc.SelectObject(&newBrush);
......
dc.SelectObject(pOldBrush);//恢復(fù)舊對象
方法2:
CDC dc;
dc.SelectObject(&newBrush);
......
dc.SelectStrockObject(BLACK_BRUSH)//用系統(tǒng)存儲的對象來替換
(4)設(shè)備相關(guān)位圖(DDB)的編程
DDB很少存于磁盤上,應(yīng)用程序是在內(nèi)存中創(chuàng)建與處理DDB的。
因?yàn)镈DB不含調(diào)色板,其顏色由顯示它的設(shè)備(通常是屏幕)決定,所以DDB是設(shè)備相關(guān)的。
在使用DDB過程中要遵循以下幾個(gè)步驟:
◎創(chuàng)建一個(gè)CBitmap對象。
    CBitmap m_pBitmap;
◎使用與當(dāng)前設(shè)備環(huán)境相兼容的位圖初始化CBitmap對象。
    CClientDC dc(this);//當(dāng)前設(shè)備環(huán)境(或稱設(shè)備DC)
    m_bitmap.CreateCompatibleBitmap(&dc,800,600);
◎創(chuàng)建與當(dāng)前設(shè)備DC相兼容的內(nèi)存DC。
    CClientDC dc(this);//當(dāng)前設(shè)備環(huán)境(或稱設(shè)備DC)
    CDC mdc;//內(nèi)存DC
    mdc.CreateCompatibleDC(&dc);//創(chuàng)建與當(dāng)前設(shè)備DC相容的內(nèi)存DC
◎?qū)⑽粓D選取到內(nèi)存DC中。
CBitmap* pOldBmp = mdc.SelectObject(&this->m_bitmap);//將位圖選進(jìn)內(nèi)存DC
將位圖選取到內(nèi)存DC后,位圖就變成了內(nèi)存DC的繪圖表面。
通常,用戶首先需要完成的工作就是要將位圖清除為一種顏色,做法如下:
    CRect rect(0,0,799,699);
    CBrush* pWhiteBrush = new CBrush(RGB(255,255,255));//新建白色刷子
    mdc.FillRect(&rect,pWhiteBrush);
    mdc.SelectObject(pOldBmp);//分離出已選入的GDI對象(這里是位圖)
    delete pWhiteBrush;//釋放內(nèi)存
◎通過內(nèi)存DC在位圖上繪圖。
    mdc.TextOut(0,0,"可以通過內(nèi)存DC在位圖上畫圖了");
    mdc.Ellipse(10,10,100,100);
    mdc.Rectangle(10,10,100,100);
    ......
◎?qū)⑽粓D顯示到顯示設(shè)備上(可以說是一個(gè)圖片拷貝過程)。
   
void CBitmapView::OnDraw(CDC* pDC)
{
    CBitmapDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here
    CDC mdc;
    mdc.CreateCompatibleDC(pDC);
    CBitmap* pOldBmp = mdc.SelectObject(&this->m_bitmap);
pDC->BitBlt(0,0,800,600,&mdc,0,0,SRCCOPY);//位圖拷貝(有關(guān)該函數(shù)參看MSDN)
    mdc.SelectObject(pOldBmp);//分離出已選入的GDI對象
}
-----------------------------------------------------------------------------------
用CWinApp的LoadStandardCursor函數(shù)獲取使用系統(tǒng)內(nèi)部已準(zhǔn)備好的鼠標(biāo)光標(biāo)的句柄,如十字、箭頭等:
m_HCross = AfxGetApp()->LoadStandardCursor(IDC_CROSS);
m_HArrow = AfxGetApp()->LoadStandardCursor(IDC_Arrow);
-----------------------------------------------------------------------------------
21、如何實(shí)現(xiàn)雙緩沖
首先給出實(shí)現(xiàn)的程序,然后再解釋,同樣是在OnDraw(CDC *pDC)中:
CDC MemDC; //首先定義一個(gè)顯示設(shè)備對象
CBitmap MemBitmap;//定義一個(gè)位圖對象
//隨后建立與屏幕顯示兼容的內(nèi)存顯示設(shè)備
MemDC.CreateCompatibleDC(NULL);
//這時(shí)還不能繪圖,因?yàn)闆]有地方畫 ^_^
//下面建立一個(gè)與屏幕顯示兼容的位圖,至于位圖的大小嘛,可以用窗口的大小
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);
//將位圖選入到內(nèi)存顯示設(shè)備中
//只有選入了位圖的內(nèi)存顯示設(shè)備才有地方繪圖,畫到指定的位圖上
CBitmap *pOldBit=MemDC.SelectObject(&MemBitmap);
//先用背景色將位圖清除干凈,這里我用的是白色作為背景
//你也可以用自己應(yīng)該用的顏色
MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(255,255,255));
//繪圖
MemDC.MoveTo(......);
MemDC.LineTo(......);
//將內(nèi)存中的圖拷貝到屏幕上進(jìn)行顯示
pDC->BitBlt(0,0,nWidth,nHeight,&MemDC,0,0,SRCCOPY);
//繪圖完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();
禁止系統(tǒng)擦掉原來的圖象
可以重載OnEraseBkgnd()函數(shù),讓其直接返回TRUE就可以了。如
BOOL CMyWin::OnEraseBkgnd(CDC* pDC)
{
  return TRUE;
  //return CWnd::OnEraseBkgnd(pDC);//把系統(tǒng)原來的這條語句注釋掉。
}
22 引用頭文件的區(qū)別
用 #include 格式來引用標(biāo)準(zhǔn)庫的頭文件(編譯器將從標(biāo)準(zhǔn)庫目錄開始搜索)。
用 #include "filename.h" 格式來引用非標(biāo)準(zhǔn)庫的頭文件(編譯器將從用戶的工作目錄開始搜索)。
-----------------------------------------------------
23 預(yù)編譯頭文件
所謂頭文件預(yù)編譯,就是把一個(gè)工程(Project)中使用的一些MFC標(biāo)準(zhǔn)頭文件(如Windows.H、Afxwin.H)預(yù)先編譯,
以后該工程編譯時(shí),不再編譯這部分頭文件,僅僅使用預(yù)編譯的結(jié)果。這樣可以加快編譯速度,節(jié)省時(shí)間。
-----------------------------------------------------
24 MFC是C++類庫,程序員就是通過使用、繼承和擴(kuò)展適當(dāng)?shù)念悂韺?shí)現(xiàn)特定的目的。
例如,繼承時(shí),應(yīng)用程序特定的事件由程序員的派生類來處理,不感興趣的由基類處理。
實(shí)現(xiàn)這種功能的基礎(chǔ)是C++對繼承的支持,對虛擬函數(shù)的支持,以及MFC實(shí)現(xiàn)的消息映射機(jī)制。
------------------------------------------------------
25 數(shù)據(jù)字典
 創(chuàng)建數(shù)據(jù)字典,數(shù)據(jù)字典是對系統(tǒng)用到的所有數(shù)據(jù)項(xiàng)和結(jié)構(gòu)的定義,以確保開發(fā)人員使用統(tǒng)一的數(shù)據(jù)定義。
在需求階段,數(shù)據(jù)字典至少應(yīng)定義客戶數(shù)據(jù)項(xiàng)以確??蛻襞c開發(fā)小組是使用一致的定義和術(shù)語。
分析和設(shè)計(jì)工具通常包括數(shù)據(jù)字典組件。
------------------------------------------------------
26 系統(tǒng)分析與設(shè)計(jì):
系統(tǒng)分析:
  理解并詳細(xì)說明信息系統(tǒng)應(yīng)該做什么的過程。
系統(tǒng)設(shè)計(jì):
  詳細(xì)說明信息系統(tǒng)的許多組件在物理上是怎樣實(shí)施的過程。
系統(tǒng)分析員:
  使用信息技術(shù)的商業(yè)專業(yè)人員,利用分析與設(shè)計(jì)技術(shù)解決商業(yè)問題。
項(xiàng)目:
  一個(gè)有始有終計(jì)劃的任務(wù),它產(chǎn)生預(yù)先確定的結(jié)果或產(chǎn)品。
系統(tǒng)開發(fā)生命周期(SDLC):
   一種系統(tǒng)開發(fā)的方法,由計(jì)劃,分析,設(shè)計(jì),實(shí)施和支持五個(gè)階段組成?! ?br>計(jì)劃階段:
   規(guī)劃項(xiàng)目范圍并出項(xiàng)目計(jì)劃。
分析階段:
  分析活動就是要全面了解商業(yè)需求,分析的重點(diǎn)是需求,而不是任何特定計(jì)算機(jī)技術(shù)。
設(shè)計(jì)活動:
   就是定義一個(gè)新系統(tǒng)的體系結(jié)構(gòu)和構(gòu)造以滿足那些需求。在設(shè)計(jì)階段,分析員開始構(gòu)思一個(gè)計(jì)算機(jī)系統(tǒng)解決方案。
實(shí)施階段:
   實(shí)施是實(shí)際建立,測試和安裝信息系統(tǒng)。
-----------------------------------------------------
27 ERP
Enterprise Resource Planning 企業(yè)資源計(jì)劃
----------------------------------------------------
28 內(nèi)存分配與指針
int a=10;//定義一個(gè)整型變量
int *p;//定義一個(gè)指向整型的指針
p=&a;//a的內(nèi)存地址付給p
*p=10;
指針的主作用是管理和操作動態(tài)分配的內(nèi)存。
靜態(tài)與動態(tài)內(nèi)存分配的兩個(gè)主要區(qū)別是:
1.靜態(tài)對象是有名字的變量,我們直接對其進(jìn)行操作。而動態(tài)對象是沒有名字的變量,我們通過指針間接地對它進(jìn)行操作。
2.靜態(tài)對象的分配與釋放由編譯器自動處理。程序員需要理解這一點(diǎn),但不需要做任何事情,相反,動態(tài)對象的分配與釋放,必須由程序員顯式地管理,相對來說比較容易出錯(cuò),它通過New和Delete兩個(gè)表達(dá)式完成。
分配特定類型的單個(gè)對象:
 int *pint=new int(1024);
 分配了一個(gè)沒有名字的int類型的對象,對象的初始化為1024,然后,表達(dá)式返回對象在內(nèi)存中的地址。
接著,這個(gè)地址被用來初始化指針對象pint。
  動態(tài)分配的內(nèi)存,惟一的訪問方式是通過指針間接地訪問。
 delete pint;//刪除單個(gè)對象。
分配特定類型和維數(shù)的數(shù)組。
 int *pia=new int[4];
分配了一個(gè)含有四個(gè)整數(shù)元素的數(shù)組。返回指針只有一個(gè),即首個(gè)元素的地址。
  delete [] pia;//刪除一個(gè)對象數(shù)組。
如果忘了刪除動態(tài)分配的內(nèi)存,程序會在結(jié)束時(shí)出現(xiàn)內(nèi)存泄漏(memory leak)問題
-------------------------------------------------------
29 const 與 #define的比較
C++ 語言可以用const來定義常量,也可以用 #define來定義常量。但是前者比后者有更多的優(yōu)點(diǎn):
(1) const常量有數(shù)據(jù)類型,而宏常量沒有數(shù)據(jù)類型。
 編譯器可以對前者進(jìn)行類型安全檢查。而對后者只進(jìn)行字符替換,沒有類型安全檢查,
 并且在字符替換可能會產(chǎn)生意料不到的錯(cuò)誤(邊際效應(yīng))。
(2) 有些集成化的調(diào)試工具可以對const常量進(jìn)行調(diào)試,但是不能對宏常量進(jìn)行調(diào)試。
【規(guī)則】在C++ 程序中只使用const常量而不使用宏常量,即const常量完全取代宏常量。
30 常量定義規(guī)則
【規(guī)則】需要對外公開的常量放在頭文件中,不需要對外公開的常量放在定義文件的頭部。
為便于管理,可以把不同模塊的常量集中存放在一個(gè)公共的頭文件中。
【規(guī)則】如果某一常量與其它常量密切相關(guān),應(yīng)在定義中包含這種關(guān)系,而不應(yīng)給出一些孤立的值
--------------------------------------------------------
31 C++內(nèi)置基本數(shù)據(jù)類型
1字(word) = 4字節(jié)(byte)
 1字節(jié)(byte) = 8位(bit)
 1字(word) = 4字節(jié)(byte) = 32位(bit)
 字符型char:
 ----------- 
 通常用來表示單個(gè)字符或小整數(shù)。用一個(gè)字節(jié)來表示。
 
整型int;短整型short;長整型long;
------------------------------
 分別代表不同長度的整數(shù)值。int表示一個(gè)字。 short表示半個(gè)字;long表示兩個(gè)字。
(在Win32中int和long通常長度相同)
浮點(diǎn)型float;雙精度double;長雙精度long double;
32 字符串
String str1;
if (!str1.size());//判斷字符串是否為空
if(str1.empty());//判斷字符串是否為空
string str2(str1);//用一個(gè)string對象初始化另一個(gè)string對象
str2=str1;//拷貝一個(gè)字符串
string str3=str1+str2;//兩個(gè)字符串連接起來形成第三個(gè)字符串
str1+=str2;//將str2追加到str1后面
在C++中=是賦值運(yùn)算,而==是等于運(yùn)算符
------------------------------------------------------------------------
33 const
用const定義一個(gè)常量
以下作法是錯(cuò)誤的,因?yàn)樗噲D將一個(gè)非const指針指向一個(gè)const(常量)對象
const double a=9.06;
double *ptr=&a;
以下作法是正確的:
const double a=9.06;
const double *ptr=&a;
被定義為常量指針的指針本身不是常量,我們可以重新給它賦值,使它指向不同的對象,
但是我們不能通過它來修改它所指向的對象。
(非常量針可以)如下所示是錯(cuò)誤的:
例1:
const double *ptr=0;//定義一個(gè)常量指針
const double a=9.06;
ptr=&a;//指針指向一個(gè)常量
*ptr=1.00;//錯(cuò)誤,不能通過一個(gè)常量指針來修改它所指向的對象
例2:
const double *ptr=0;//定義一個(gè)常量指針
double a=9.06;
ptr=&a;//指針指向一個(gè)常量
*ptr=1.00;//錯(cuò)誤,不能通過一個(gè)常量指針來修改它所指向的對象,雖然它所指向?qū)ο蟛皇浅A俊?br>小結(jié):
  const對象的地址只能賦給指向const對象的指針,指向const對象的指針可以被賦以非const對象的地址.
通過上面我們可以得到以下結(jié)論:
1.不能用一個(gè)非常量指針指向一個(gè)常量對象
2.可以用一個(gè)常量指針指向一個(gè)非常量對象
2.不能用一個(gè)常量指針修改它所指向的對象,無論它指向的是常量對象,還是非常量對象
引用(reference)
引用又稱別名,通過引用可以間接地操作對象。
使用方式類似指針,但又與指針不同,引用已經(jīng)定義,就不能再指向其它對象。
引用定義和初始化:
int a=1000;
int &ra=a;//ra就是引用
注:要了解有關(guān)引用的相關(guān)內(nèi)容,可以參考:http://lijinshui.blogchina.com/blog/article_75070.408840.html
---------------------------------------------------------------------------------------------
34 extern 變量聲明
帶extern的變量說明是變量的聲明,不是變量的定義。
extern int n;//說明n在其它地方己經(jīng)定義過,在這里只是聲明一下。
35 static靜態(tài)全局變量
在全局變量前加static,使該變量只在這個(gè)源文件中可用,稱之為全局靜態(tài)變量。
靜態(tài)全局變量對組成該程序的其他源文件是無效的。
使用靜態(tài)全局變量的好處:
  1.不必?fù)?dān)心其它文件使用這個(gè)名字,該名字在源文件中唯一的。
  2.源文件的變量不能被其它源文件所用,不能被其他源文件所修改,保證變量的值是可靠的。
36 static靜態(tài)函數(shù)
函數(shù)的聲明和定義默認(rèn)情況下在整個(gè)程序中是extern的,
如果想讓一個(gè)函數(shù)只在一個(gè)源文件中可用,需在前函數(shù)聲明前加static,使其變成一個(gè)靜態(tài)函數(shù)。
-----------------------------------------------------------------------------------------------
37 內(nèi)聯(lián)函數(shù)inline
內(nèi)聯(lián)函數(shù)可稱為內(nèi)嵌函數(shù),它主要是解決程序的運(yùn)行效率。
編譯器看到inline后,為該函數(shù)創(chuàng)建一段代碼,以便在后面每次碰到該函數(shù)的調(diào)用都用相應(yīng)的一段代碼來替換。
從而為程序減少了頻繁調(diào)用函數(shù)所消耗的效率,也提高了程序的可讀性。
38 重載函數(shù)overloaded
在同一作用域中聲明兩個(gè)同名不同參數(shù)的函數(shù),稱函數(shù)重載。
-------------------------------------------------------------------
39 模板
模板按用途分為函數(shù)模板和類模板。
模板把函數(shù)或類中的數(shù)據(jù)類型作為參數(shù)設(shè)計(jì)函數(shù)和類,
這樣設(shè)計(jì)的函數(shù)和類還不是一個(gè)完全的函數(shù)和類,只有經(jīng)過參數(shù)實(shí)例化,變?yōu)橐粋€(gè)類型參數(shù)具體的函數(shù),才能完成函數(shù)的功能。
模板的作用
模板可以實(shí)現(xiàn)邏輯相同而數(shù)據(jù)類型不同的程序代碼的復(fù)制?!?br>----------------------------------------------------------------------
 40    MFC
基類
大多數(shù)M F C類是從三個(gè)基類( Base Class )派生的: CObject、CCmdTarget和CWnd。
CCmdTarget派生于CObject類,而CWnd于CCmdTarget類。
從CObject派生的類,具有在運(yùn)行時(shí)獲得對象大小和名字的能力;
從CCmdTarget派生的類,能夠處理命令消息;從CWnd派生的類,能控制它們自己的窗口。
CObject
CObject類本身提供的功能較少,主要工作由六個(gè)伴生宏( companion macros )完成。
Object和這些宏一起,允許CObject的派生類在運(yùn)行時(shí)獲取類名和對象大小,創(chuàng)建一個(gè)類對
象而不必知道類名,以及允許從文件設(shè)備中存取一個(gè)類的實(shí)例而不必知道類名。
CCmdTarget
由CCmdTarget派生的類,可以接收和處理來自應(yīng)用程序菜單或工具欄的命令消息。
CWnd
CWnd的成員函數(shù)封裝了Windows API中負(fù)責(zé)維護(hù)和創(chuàng)建窗口的函數(shù)。
CWnd是從CCmdTarget派生的,因此,也能接收和處理命令消息。
應(yīng)用程序、框架、文檔和視圖類
使用Developer Studio的AppWizard(應(yīng)用程序向?qū)?創(chuàng)建M F C應(yīng)用程序時(shí),應(yīng)用程序從四個(gè)
基類派生:
CWinApp 是應(yīng)用程序的"應(yīng)用程序類",負(fù)責(zé)初始化和運(yùn)行應(yīng)用程序。
CFrameWnd 是應(yīng)用程序的"框架類",負(fù)責(zé)顯示和搜尋用戶命令。
CDocument 是應(yīng)用程序的"文檔類",負(fù)責(zé)裝載和維護(hù)文檔。文檔可以是從文檔到網(wǎng)絡(luò)設(shè)備設(shè)置的任何內(nèi)容。
Cview 是應(yīng)用程序的"視圖類",負(fù)責(zé)為文檔提供一個(gè)或多個(gè)視圖。
-----------------------------------------------------------------------------------------
41 什么是CMM?
CMM(Capability Maturity Model),英文直譯的意思是"能力成熟度模型"。
由卡內(nèi)基.梅隆大學(xué)的軟件工程協(xié)會(Software Engineering Institute, 簡稱SEI) 提出并完善,
目的是通過一個(gè)合理的體系模型來對軟件組織開發(fā)能力進(jìn)行合理有效的評估,
幫助軟件組織在模型實(shí)施的過程中提高軟件過程管理能力,
降低軟件系統(tǒng)開發(fā)風(fēng)險(xiǎn),在預(yù)定的項(xiàng)目周期和預(yù)算內(nèi)開發(fā)出高質(zhì)量的軟件產(chǎn)品。
-----------------------------------------------------------------------------------------
42 判斷一個(gè)點(diǎn)是否在矩形內(nèi)
CRect有一個(gè)成員函數(shù) PtInRect,用來測試一個(gè)點(diǎn)是否落在矩形內(nèi)。
CPoint point;
CRect m_rect(0,0,200,200);
if(m_rect.PtInRect(point)){
//如果當(dāng)前點(diǎn)在矩形內(nèi),則執(zhí)行此行代碼。
}
注意:這種判斷只適應(yīng)于設(shè)備坐標(biāo)系。
43 判斷一個(gè)點(diǎn)是否在橢圓內(nèi)
CPoint point;
CRect m_rect;
CRgn rgn;
rgn.CreateElliipticRgnIndirect(m_rect);
if (rgn.PtInRegion(point)){
//............
}
---------------------------------------------------------------------------------------
44 OnInitialUpdate()
OnInitialUpdate()函數(shù)是視圖創(chuàng)建后框架調(diào)用的第一個(gè)函數(shù),
框架在調(diào)用OnDraw()之前調(diào)用,所以在此函數(shù)中設(shè)置滾動視圖的尺寸和映射模式最合適地方。
如下所示:
void CMoveView::OnInitialUpdate()
{
 CScrollView::OnInitialUpdate();
    CSize sizeTotal(1024, 1025); // 8-by-10.5 inches
    CSize sizePage(sizeTotal.cx / 2, sizeTotal.cy / 2);
    CSize sizeLine(sizeTotal.cx / 50, sizeTotal.cy / 50);
    SetScrollSizes(MM_LOENGLISH, sizeTotal, sizePage, sizeLine);
}
--------------------------------------------------------------------------------------------------
45 在對話框中進(jìn)行消息映射
利用對話框的一個(gè)好處是可以利用ClassWizard對對話框中各個(gè)控件產(chǎn)生的消息進(jìn)行映射,ClassWizrd可以列出各種控件可以使用的消息,并能自動產(chǎn)生代碼。在本節(jié)中我們以一個(gè)例子來講解如何在對話框中對子窗口消息進(jìn)行映射同時(shí)還講解如何對對話框中的子窗口進(jìn)行初始化。
首先我們產(chǎn)生編輯好一個(gè)對話框,在對話框中使用的控件和ID號如下: ID 類型
IDC_RADIO_TEST_1 圓形按鈕
IDC_RADIO_TEST_2 圓形按鈕
IDC_BUTTON_TEST 按鈕
IDC_CHECK_TEST 檢查按鈕
IDC_TREE_TEST 樹形控件
IDC_LIST_CTRL List Ctrl
IDC_TAB_CTRL Tab Ctrl
IDC_LIST_TEST 列表框
IDC_COMBO_TEST 組合框
IDC_EDIT_TEST 輸入框
首先我們需要在對話框的OnInitDialog()函數(shù)中對各個(gè)控件進(jìn)行初始化,
這里我們使用CWnd* GetDlgItem( int nID )來通過ID號得到子窗口指針。
--類似的函數(shù)還有
UINT GetDlgItemInt( int nID, BOOL* lpTrans = NULL, BOOL bSigned = TRUE ) 通過ID號得到子窗口中輸入的數(shù)字;
int GetDlgItemText( int nID, CString& rString ) 通過ID號得到子窗口中輸入的文字
代碼如下:
BOOL CMy54_s1Dlg::OnInitDialog()
{
 CDialog::OnInitDialog();
 /*添加初始化代碼*/
 //初始化輸入框
 ((CEdit*)GetDlgItem(IDC_EDIT_TEST))->SetWindowText("this is a edit box");
 
 //初始化列表框
 CListBox* pListB=(CListBox*)GetDlgItem(IDC_LIST_TEST);
 pListB->AddString("item 1");
 pListB->AddString("item 2");
 pListB->AddString("item 3");
 
 //初始化組合框
 CComboBox* pCB=(CComboBox*)GetDlgItem(IDC_COMBO_TEST);
 pCB->AddString("item 1");
 pCB->AddString("item 2");
 pCB->AddString("item 3");
 
 //初始化Tab Ctrl
 CTabCtrl* pTab=(CTabCtrl*)GetDlgItem(IDC_TAB_TEST);
 pTab->InsertItem(0,"Tab Page1");
 pTab->InsertItem(1,"Tab Page2");
 pTab->InsertItem(2,"Tab Page3");
 
 //初始化ListCtrl
 CListCtrl* pList=(CListCtrl*)GetDlgItem(IDC_LIST_CTRL);
 pList->InsertColumn(0,"Column 1",LVCFMT_LEFT,100);
 pList->InsertItem(0,"Item 1");
 pList->InsertItem(1,"Item 2");
 pList->InsertItem(2,"Item 3");
 
 //初始化TreeCtrl
 CTreeCtrl* pTree=(CTreeCtrl*)GetDlgItem(IDC_TREE_TEST);
 pTree->InsertItem("Node1",0,0);
 HTREEITEM hNode=pTree->InsertItem("Node2",0,0);
 pTree->InsertItem("Node2-1",0,0,hNode);
 pTree->InsertItem("Node2-2",0,0,hNode);
 pTree->Expand(hNode,TVE_EXPAND);
 return TRUE;  // return TRUE  unless you set the focus to a control
}
下面簡單介紹一下WinAPI對INI文件的讀寫
 
一.將信息寫入.INI文件中.
  1.所用的WINAPI函數(shù)原型為:
BOOL WritePrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpString,
LPCTSTR lpFileName
);
其中各參數(shù)的意義:
   LPCTSTR lpAppName 是INI文件中的一個(gè)字段名.
   LPCTSTR lpKeyName 是lpAppName下的一個(gè)鍵名,通俗講就是變量名.
   LPCTSTR lpString 是鍵值,也就是變量的值,不過必須為LPCTSTR型或CString型的.
   LPCTSTR lpFileName 是完整的INI文件名.
2.具體使用方法:設(shè)現(xiàn)有一名學(xué)生,需把他的姓名和年齡寫入 c:\stud\student.ini 文件中.
CString strName,strTemp;
int nAge;
strName="張三";
nAge=12;
::WritePrivateProfileString("StudentInfo","Name",strName,"c:\\stud\\student.ini");
  此時(shí)c:\stud\student.ini文件中的內(nèi)容如下:
   [StudentInfo]
   Name=張三
3.要將學(xué)生的年齡保存下來,只需將整型的值變?yōu)樽址图纯?
strTemp.Format("%d",nAge);
::WritePrivateProfileString("StudentInfo","Age",strTemp,"c:\\stud\\student.ini");
 
二.將信息從INI文件中讀入程序中的變量.
1.所用的WINAPI函數(shù)原型為:
DWORD GetPrivateProfileString(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
LPCTSTR lpDefault,
LPTSTR lpReturnedString,
DWORD nSize,
LPCTSTR lpFileName
);
其中各參數(shù)的意義:
   前二個(gè)參數(shù)與 WritePrivateProfileString中的意義一樣.
   lpDefault : 如果INI文件中沒有前兩個(gè)參數(shù)指定的字段名或鍵名,則將此值賦給變量.
   lpReturnedString : 接收INI文件中的值的CString對象,即目的緩存器.
   nSize : 目的緩存器的大小.
   lpFileName : 是完整的INI文件名.
2.具體使用方法:現(xiàn)要將上一步中寫入的學(xué)生的信息讀入程序中.
CString strStudName;
int nStudAge;
GetPrivateProfileString("StudentInfo","Name","默認(rèn)姓名",strStudName.GetBuffer(MAX_PATH),MAX_PATH,"c:\\stud\\student.ini");
執(zhí)行后 strStudName 的值為:"張三",若前兩個(gè)參數(shù)有誤,其值為:"默認(rèn)姓名".
3.讀入整型值要用另一個(gè)WINAPI函數(shù):
UINT GetPrivateProfileInt(
LPCTSTR lpAppName,
LPCTSTR lpKeyName,
INT nDefault,
LPCTSTR lpFileName
);
這里的參數(shù)意義與上相同.使用方法如下:
nStudAge=GetPrivateProfileInt("StudentInfo","Age",10,"c:\\stud\\student.ini");

三.循環(huán)寫入多個(gè)值,設(shè)現(xiàn)有一程序,要將最近使用的幾個(gè)文件名保存下來,具體程序如下:
1.寫入:
CString strTemp,strTempA;
int i;
int nCount=6;  //共有6個(gè)文件名需要保存
for(i=0;i<nCount;i++) {
strTemp.Format("%d",i);
strTempA=文件名;  //文件名可以從數(shù)組,列表框等處取得.
::WritePrivateProfileString("UseFileName","FileName"+strTemp,strTempA,"c:\\usefile\\usefile.ini");
}
strTemp.Format("%d",nCount);
::WritePrivateProfileString("FileCount","Count",strTemp,"c:\\usefile\\usefile.ini");
//將文件總數(shù)寫入,以便讀出.
2.讀出:
nCount=::GetPrivateProfileInt("FileCount","Count",0,"c:\\usefile\\usefile.ini");
for(i=0;i<nCount;i++) {
strTemp.Format("%d",i);
strTemp="FileName"+strTemp;
::GetPrivateProfileString("CurrentIni",strTemp,"default.fil", strTempA.GetBuffer(MAX_PATH),MAX_PATH,"c:\\usefile\\usefile.ini");
//使用strTempA中的內(nèi)容.
}
補(bǔ)充四點(diǎn):
   1.INI文件的路徑必須完整,文件名前面的各級目錄必須存在,否則寫入不成功,該函數(shù)返回 FALSE 值.
   2.文件名的路徑中必須為 \\ ,因?yàn)樵赩C++中, \\ 才表示一個(gè) \ .
   3.也可將INI文件放在程序所在目錄,此時(shí) lpFileName 參數(shù)為: ".\\student.ini".
   4.從網(wǎng)頁中粘貼源代碼時(shí),最好先粘貼至記事本中,再往VC中粘貼,否則易造成編譯錯(cuò)誤.
---------------------------------------------------------------------------------------------------
設(shè)置對話框內(nèi)控件的Text
SetDlgItemText(IDC_STATIC_LISTVIEW1, strItem);
得到對話框內(nèi)控件的Text
GetDlgItemText()
----------------------------------------------------------------------------------------------
得到系統(tǒng)當(dāng)前時(shí)間
----------------
法一:
CTime time;
time=CTime::GetCurrentTime();
CString s=time.Format("%H:%M:%S");
法二:
SYSTEMTIME st;
GetLocalTime(&st);
CString str_temp;
str_temp.Format("%u/%u/%u %u:%u:%u\n",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
------------------------------------------------------------------------------------------------
字符串轉(zhuǎn)換為數(shù)字
使用atol將字符串轉(zhuǎn)換為常整數(shù),另外還有atof等相關(guān)函數(shù)。也可以使用sscanf函數(shù)進(jìn)行
數(shù)字轉(zhuǎn)換為字符串
你可以利用CString的Format函數(shù)將數(shù)字轉(zhuǎn)換為字符串,如:
CString s;
s.Format("%ld", lValue);
問: 在vc中,有個(gè)類型轉(zhuǎn)換 _T()是什么意思?字符串轉(zhuǎn)換成什么類型。最好能舉個(gè)例子。

答: Windows使用兩種字符集ANSI和UNICODE,前者就是通常使用的單字節(jié)方式,但這種方式處理象中文這樣的雙字節(jié)字符不方便,容易出現(xiàn)半個(gè)漢字的情況。而后者是雙字節(jié)方式,方便處理雙字節(jié)字符。Windows NT的所有與字符有關(guān)的函數(shù)都提供兩種方式的版本,而Windows 9x只支持ANSI方式。_T一般同字常數(shù)相關(guān),如_T("Hello")。如果你編譯一個(gè)程序?yàn)锳NSI方式,_T實(shí)際不起任何作用。而如果編譯一個(gè)程序?yàn)閁NICODE方式,則編譯器會把"Hello"字符串以UNICODE方式保存。_T和_L的區(qū)別在于,_L不管你是以什么方式編譯,一律以以UNICODE方式保存。
----------------------------------------------------------------------------------------------
數(shù)學(xué)運(yùn)算函數(shù)庫
Ceil
計(jì)算大于指定數(shù)的最小整數(shù)。
語法: int ceil(float number);
返回值: 整數(shù)
函數(shù)種類: 數(shù)學(xué)運(yùn)算
內(nèi)容說明
本函數(shù)用來計(jì)算比浮點(diǎn)參數(shù) number 大的最小整數(shù)。
-------------------------------------------------------------------------------------------
如何將CString類型的變量賦給char*類型的變量?
 
    使用CString::GetBuffer函數(shù)。例子:
    char *p;
    CString str("hello");
    p=str.GetBuffer(str.GetLength());

網(wǎng)絡(luò)
TCP/IP協(xié)議實(shí)際上就是在物理網(wǎng)上的一組完整的網(wǎng)絡(luò)協(xié)議。其中TCP是提供傳輸層服務(wù),而IP則是提供網(wǎng)絡(luò)層服務(wù)
----------------------------------------------------------
隱藏對話框
this->ShowWindow(SW_HIDE);
-----------------------------------------------------------
得到當(dāng)前所在的目錄:
char szPath[MAX_PATH] = {0};
CString strPath;
 GetCurrentDirectory(MAX_PATH,szPath);
strPath=szPath;
char str1[100];
char str2[100];
GetWindowsDirectory(str1,100);
GetCurrentDirectory(100,str2);
MessageBox(str1);
AfxMessageBox(str2);
-------------------------------------------------------------------------------------------------
CStringArray:
        用來表示可變長度的字符串?dāng)?shù)組。數(shù)組中每一個(gè)元素為CString對象的實(shí)例。下面介紹幾個(gè)成員函數(shù):
         Add 增加CString
         RemoveAt 刪除指定位置CString對象
         RemoveAll 刪除數(shù)組中所有CString對象
         GetAt 得到指定位置的CString對象
         SetAt 修改指定位置的CString對象
         InsertAt 在某一位置插入CString對象
---------------------------------------------------------------------------------------------
怎樣在EDIT1控件中輸入回車后,顯示"ok",并移到指定的EDIT2中(另一個(gè))在對框中(DIALOG)
如何在控件里響應(yīng)左右鍵消息
BOOL CMydilog::PreTranslateMessage(MSG* pMsg)
{
    if(GetFocus()==GetDlgItem(IDC_EDIT1))//判斷焦點(diǎn)在不在框內(nèi)
    {
       if(pMsg->message==WM_KEDOWN)
       {
         if(pMsg->wParam==VK_RETRUN)
         {
             MessageBox("OK");
             GetDltItem(ID_EDIT2)->SetFocus(TRUE);
               ....
          }
        }
    }
}
---------------------------------------------------------------------------------------
字符串+字符串
LPTSTR StrCat(LPTSTR psz1,LPCTSTR psz2);
char str1[100]={"Hello"};
strcat(str1,"lijins");
則str1="Hellolijins";
字符串復(fù)制
LPTSTR StrCpy(LPTSTR psz1,LPCTSTR psz2);
char str2[100]={0};
char str3[100]={"Hello World"};
strcpy(str2,str3);
則str2="Hello World";
字符串比較
int stricmp( const char *string1, const char *string2 );
char str1[50]={"lijinshui"};
char str2[50]={"lijins"};
int n=stricmp(str1,str2);
則:n>0;
--------------------------------------------------------------------------------------
SDI有一個(gè)對話框,對話框怎樣才能得到文檔類的指針?
CMainFrame* pFrame = (CMainFrame*)(AfxGetApp()->m_pMainWnd);
CMyDoc* pDoc = (CMyDoc*)(pFrame->GetActiveDocument());
--------------------------------------------------------------------------------------
問:
我想在判斷d盤上是否存在目錄download,如果不存在則建立download,如果存在則刪除它,應(yīng)該怎樣作呢?還有怎樣刪除download下的所有文件?我的盤上有目錄msdn和文件soft.txt,我準(zhǔn)備把它們考到download下,怎樣考???
答:用如下的程序:
 CString filePath = "d:\\download";
 DWORD dwAttr = GetFileAttributes(filePath);
 if(dwAttr==-1||(dwAttr&FILE_ATTRIBUTE_DIRECTORY)==0)//目錄不存在
 {
  if ( !CreateDirectory(filePath, NULL) )
  {
   AfxMessageBox("不能創(chuàng)建目錄");
   return;
  }
 }
---------
CreateDirectory
RemoveDirectory
--------
"我的盤上有目錄msdn和文件soft.txt,我準(zhǔn)備把它們考到download下"
You can use CopyFile() or MoveFile() function to do this, learn how to use those functions by MSDN.
-------------------------------------------------------------------------------------------------
如何精確的將浮點(diǎn)數(shù)轉(zhuǎn)換為對應(yīng)的字符串
轉(zhuǎn)換時(shí)利用%n.mf的格式進(jìn)行格式化,n為總位數(shù),m為小數(shù)的位數(shù)
或者用double的形式.
str.Format("%5.1f",n);//保留一位
CString strF;
strF.Format("%.1f", f);//保留一位
首先你就不應(yīng)該用float,這類精度比較高的東東的話,你用該用double,double就沒問題了,你的轉(zhuǎn)化精度不是問題,問題在于strF.Format("%f", f);中f隱式轉(zhuǎn)化成double的過程
 
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/cherryt/archive/2007/02/23/1513034.aspx
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
有關(guān)VC中的字符以及字符串Tchar,char,wchar
常量指針與指針常量的區(qū)別(轉(zhuǎn)帖)
《C語言深度剖析》關(guān)鍵字介紹七
C 字符串
C++面試題薈萃1
GetTextExtent
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服