MFC入門相關,mfc入門
1.MFC的“匈牙利標識符命名法”,這是一個約定,可以增加代碼的可讀性:
- 聲明或定義了一個類,那麼這個類可以以“C”(class)為前綴,如CHelloWorldDlg類;
- 定義一個無符號型的局部變量,可以用“u”(unsigned)為前綴,如UINT uPort; ULONG uFlags;
- 如果是int或long類型的變量,則以“n”為前綴;
- DWORD類型的變量前綴為“dw”;
- 字符數組以“sz”作為前綴;
- CString類的對象以“str”作為前綴;
- 指針以“lp”或“p”(long pointer或pointer,在WIN32環境下這兩種指針並沒有什麼差別)作為前綴;
- 引用以“r”為前綴;
- 布爾型變量以“b”為前綴;
- 句柄型的變量以“h”(handle)作為前綴。
- 如果變量是全局的,那麼以“g_”(global)開頭,如BOOL g_bFlags;
- 如果是類的成員變量則以“m_”(member)開頭,如HICON m_hIcon;。
2.對話框資源與類的綁定:
1 enum { IDD = IDD_HELLOWORLD_DIALOG };
3.成員函數:
- virtual void DoDataExchange(CDataExchange* pDX);是用來支持DDX(對話框數據交換,將一個變量和一個控件進行綁定的時候用DDX)和DDV(對話框數據效驗,檢驗該控件是否為你所需要的時候用DDV)機制的成員函數。
- virtual BOOL OnInitDialog();是在對話被創建(Create)後立即被執行的函數,因此在這裡可以添加對話框的初始化所需要的自定義代碼。
- afx_msg void OnSysCommand(UINT nID, LPARAM lParam);是對話框的處理WM_SYSCOMMAND消息的函數。WM_SYSCOMMAND消息是關於系統控制的消息,如鼠標在標題欄上的操作等。
- afx_msg void OnPaint();是對話框處理WM_PAINT的函數,當對話框窗體發生重繪時有WM_PAINT消息到達程序。
- afx_msg HCURSOR OnQueryDragIcon();當用戶拖動最小化窗口時系統調用此函數取得光標顯示。
- afx_msg void OnBnClickedHelloworld();是處理按鈕單擊消息的處理函數。
4.Edit控件:
- GetDlgItem()函數是獲取的其文本內容,獲取數值:int nValue = _ttoi(strInput);的方法來轉換。
- 右鍵點擊添加的控件,選擇“添加變量”菜單項,設置其訪問屬性(建議用protected);在類別中選擇Value(默認是Control);設置int和變量名m_nValue,點擊完成按鈕。完成“添加變量”向導後,在DoDataExchange()中,系統自動添加了一條語句:DDX_Text(pDX, IDC_INPUT, m_nValue);意思是將ID為IDC_INPUT的控件與m_nValue成員變量進行綁定。當程序執行UpdateData()的時候,數據便開始進行交換,數據交換方向由UpdateData的參數確定。
- UpdateData(TRUE);就是讓文本框的值更新到m_nValue裡,如果是UpdateData(FALSE);就是將變量中的數據返回給文本框裡。
5.Check控件和Radio控件:
BOOL bState;
bState = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();//獲取復選框狀態,一定要再獲得CWnd指針後,強制轉換為CButton指針
((CButton*)GetDlgItem(IDC_RADIO1))->SetCheck(1); //設置單選框狀態為選中