MFC常用函數

  • 2020 年 11 月 20 日
  • 筆記

1、MFC的常用函數(只是找了些經常使用的,這裡沒有的可以CSDN查找,不需要都記住,經常使用自動就會記得)

1)GetDlgItemText(ID ,str)作用:

對話框中獲取文本第一個參數為要獲取的編輯框(或者靜態文本框、單選按鈕等可以顯示內容的控制項)的ID,第二個參數為字元串(Cstring 類型)的變數,獲取的文本存儲在str中。

2)SetDlgItemText(ID,str)

作用:將字元串顯示在控制項中

第一個參數為要顯示的編輯框(或者靜態文本框、單選按鈕、組合框等可以顯示內容的控制項)的ID,第二個參數為字元串(Cstring 類型)的變數,顯示的文本存儲在str中。

如果要顯示的變數的類型不是Cstring,則通過Format函數強制轉換。通常還要加一個UpDateData(FALSE)。

3)UINT nID=GetCheckedRadioButton(IDC1, IDC2);

作用:獲取單選框的選項的ID

第一個參數為該組合框中第一個單選按鈕的ID,第二個參數為該組合框中最後一個按鈕的ID。

4)CheckRadioButton(IDC1, IDC2, IDC3);

作用:初始化單選按鈕

第一個參數為該組合框中第一個單選按鈕的ID,第二個參數為該組合框中最後一個按鈕的ID,第三個參數為為預設選項的ID。

5)m_scrollBar.SetScrollRange(0, 500) ;

作用:設置水平滾動條的取值範圍,m_scrollBar為水平滾動條的控制類型的變數,0為設置最小值,500為設置的最大值。

6)m_nAmount = m_slider.GetPos() ;

作用:獲取滑塊的當前位置。

7)m_slider.SetRange(0,1000) ;

作用://設置滑塊取值範圍

第一個參數為設置的最小值,第二個參數為設置的最大值。

8)double Volum = atof(strCtrl);

作用:將字元串strCtl轉換成浮點型的Volum

9)int Volum = atoi(strCtrl);

作用:將字元串strCtl轉換成整型的Volum

10)MessageBox(str) ;(局部函數)

作用:輸出字元串str

11)AfxMessageBox(str) ;(全局函數)

作用:輸出字元串str

12)tempt = m_time2.Format(“%H:%m:%S”) ;

作用:將時間轉化成字元型(時、分、秒)

m_time2為日曆時間選取器的變數,tempt為CString型變數

13)tempt = m_time.Format(“%Y-%m-%d”) ;//將時間轉化成字元型

作用:將時間轉化成字元型(年、月、日)

m_time2為日曆時間選取器的變數,tempt為CString型變數

14)m_time = CTime::GetCurrentTime();

作用:獲取系統當前時間

m_time為Ctime類型的變數。

15)m_list.AddString(str);

功能:將Cstrig類型的變數的內容顯示在列表框中(或者組合框中)。m_str為ClistBox類型的變數(或者是CcomboBox類型的變數)。

16)m_time = CTime(2012 ,5 ,28 ,0 ,0 ,0) ;

功能:初始化日期,m_time為Ctime類型的變數

17)str.TrimLeft();

功能:去掉Cstring類型變數的左邊的空格

18)str.TrimRight();

功能:去掉Cstring類型變數的右邊的空格

19)str.IsEmpty();

功能:判斷Cstring類型的變數str是否為空,如果為空則返回1,否則返回零。

20)int nIndex=m_list.FindString(int k,str);

從第k個位置開始查找,若為-1,則從頭至尾查找。

函數原型:

int FindString(int nStartAfter,LPCTSTR lpszItem) const;

int FindStringExact(int nIndexStart,LPCTSTR lpszFind) const;

其中,FindStringExact的查找精度最高

21)m_list.ResetContent() ;

功能:清空列表框中的內容

m_list為ClistBox類型變數。

22)m_listSearch.DeleteString(int nIndex);

功能:刪除列表框中的第nIndex條記錄。

m_listSearch為ClistBox類型變數。

23)GetDlgItem(IDC_BUTTON_DELETE)->EnableWindow(FALSE);

功能:是ID為IDC_BUTTON_DELETE的按鈕灰選。

24)GetDlgItem(IDC_BUTTON_DELETE)->EnableWindow(TRUE);

功能:是ID為IDC_BUTTON_DELETE的按鈕還原。

25)str.Left(length);

功能:獲取字元串str左邊長度為length的值。

26)int length = str.GetLength() ;

功能:獲取字元串str的長度

27)dlg.DoModal() ;

功能:建立一個對話框

dlg為該對話框的類的對象。

28)CDialog::OnCancel() ;

功能:關閉窗口

29)CMenu* pSysMenu=GetMenu();

功能:獲取程式菜單指針

30)int nCount=pSysMenu->GetMenuItemCount();

功能:獲取項層菜單項的項數

31)int nIndex=m_ListBox.GetCurSel();

功能:獲取指針在列表框中的位置

m_ListBox為ClistBox類型變數。

32)GetWindowText(str) ;

功能:獲取當前窗口的標題

Str為Cstring 類型的變數

33)GetDlgItem(IDC_CLICKHERE)->SetFocus();

將游標設置在控制項IDC_CLICKHERE處,若是在打開某個對話框時候做此設置,則將該語句加到消息處理函數OnInitDialog的return語句前,並且將最後的語句 return TRUE; 該為

return FALSE;GetDlgItem(IDC_CLICKHERE)->SetFocus();也可寫成m_strit.SetFocus();其中m_strit為該控制項對應的變數。

34)GetDlgItem(IDC_STATIC_NUMBER1)

功能:獲取ID為IDC_STATIC_NUMBER1控制項的指針.

例如:

CString str ;

GetDlgItem(IDC_STATIC_NUMBER1)->GetWindowText(str) ;//此句等價於

GetDlgItemText(IDC_STATIC_NUMBER1,str);

35)int num1 = GetDlgItemInt(IDC_EDIT1);

功能:獲取ID為IDC_EDIT1控制項的文本並且轉化成整形的值,如果文本中含有非數字字元則轉化失敗.

36)SetDlgItemInt(IDC_EDIT3,num3) ;

功能:將整數num3顯示在ID為IDC_EDIT3的編輯框中.

37)SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd,WM_GETTEXT,10,(LPARAM)ch1);

注意:在函數前面加上作用域分節符表示調用的是全局函數.

功能:取ID為IDC_EDIT1控制項的文本,獲取的最大長度為10,並且將獲取的內容存儲在ch1中.相當於GetDlgItemText(IDC_EDIT1,ch1,10);

說明:第一個參數為對應控制項的句柄,第二個參數為消息名稱,第三個參數為獲取文本的最大長度,第四個參數為存儲文本的緩衝區,此處ch1為字元數組,即 char ch110];

第四個參數的類型必須強制轉換成LPARAM.

此函數有多種調用方式,其功能是相同的。列舉如下:

(1) SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd,WM_GETTEXT,10,(LPARAM)ch1);

(2) GetDlgItem(IDC_EDIT1)->SendMessage(WM_GETTEXT,10,(LPARAM)ch1);

(3) m_edit1.SendMessage(WM_GETTEXT,10,(LPARAM)ch1);

(4) SendMessage(m_edit1.m_hWnd,WM_GETTEXT,10,(LPARAM)ch1);

其中m_edit1是IDC_EDIT1控制項的類別為Control,類型為CEdit的變數.

38)SendMessage(GetDlgItem(IDC_EDIT3)->m_hWnd,WM_SETTEXT,0,(LPARAM)ch3);

功能:將緩衝區ch3的內容顯示在D為IDC_EDIT1控制項上.其作用相當於SetDlgItemText(IDC_EDIT1,ch1);

說明:第一個參數為對應控制項的句柄,第二個參數為消息名稱,第三個參數用不上,故設置為零,第四個參數為要顯示的文本內容, 第四個參數的類型必須強制轉換成LPARAM.

39)SendDlgItemMessage(IDC_EDIT1,WM_GETTEXT,10,(LPARAM)ch1);

功能等價於::SendMessage(GetDlgItem(IDC_EDIT1)->m_hWnd,WM_GETTEXT,10,(LPARAM)ch1);

40)SendDlgItemMessage(IDC_EDIT3,WM_SETTEXT,0,(LPARAM)ch3);

功能等價於::SendMessage(GetDlgItem(IDC_EDIT3)->m_hWnd,WM_SETTEXT,0,(LPARAM)ch3);

2.總結

有了這些MFC的函數對於操作介面很輕鬆了,好好多做些demo,來熟練這些函數,明天再寫一些數據類型,就可以寫一些小遊戲了。

                                          改變自己,從現在做起———–久館