1.右鍵資源視圖的Dialog,選擇插入Dialog,默認ID爲IDD_DIALOG1數組
2.在界面上右鍵建立類,將生成.h和.cpp從而進行管理。自定義的兩個對話框類分別爲CDlgExec和CDlgShow函數
3.雙擊主窗口的button控件,或者在button控件的屬性中選擇BN_CLICKED事件,進入按鈕點擊事件的處理函數。測試
4.在主窗口的cpp中添加CDlgExec.h和CDlgShow.h,並在相應的消息處理函數中寫入代碼。spa
//模態對話框彈出 void CMFCDialogDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知處理程序代碼 //彈出模態對話框 阻塞 CDlgExec dlg; //模態對話框自動阻塞 dlg.DoModal(); }
1 //非模態對話框 2 void CMFCDialogDlg::OnBnClickedButton2() 3 { 4 // TODO: 在此添加控件通知處理程序代碼 5 CDlgShow* dlg = new CDlgShow; //非模態對話框在建立後自動釋放,須要定義在堆區 6 dlg->Create(IDD_SHOW); 7 dlg->ShowWindow(SW_SHOWNORMAL); 8 }
5.點擊按鈕出現模態和非模態對話框3d
1.拖入Static Text控件,能夠修改其ID和默認顯示文字code
2.對控件添加變量,能夠對顯示內容進行修改。變量類型爲「控件」。變量名爲m_text。(變量類型也能夠爲Value類型,可是在同步變量和控件內容時須要UpdateData)orm
3.獲取和設置Static_text控件的內容blog
1 //獲取控件內容 2 void CMFCDialogDlg::OnBnClickedButton4() //按鈕處理函數 3 { 4 // TODO: 在此添加控件通知處理程序代碼 5 CString str; //控件內容保存在str中 6 m_text.GetWindowTextW(str); 7 MessageBox(str); 8 }
1 //設置控件內容 2 void CMFCDialogDlg::OnBnClickedButton3() 3 { 4 // TODO: 在此添加控件通知處理程序代碼 5 m_text.SetWindowTextW(TEXT("123456")); //修改控件內容 6 }
4.在Static Text中添加位圖 bmp,在初始化函數BOOL CMFCDialogDlg::OnInitDialog()中添加代碼排序
1 //用static_Text顯示圖片 2 //設置靜態控件窗口風格爲位圖居中顯示 3 m_pic.ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE); 4 //經過路徑獲取bitmap句柄 5 #define HBMP(filepath,width,height) (HBITMAP)LoadImage(AfxGetInstanceHandle(),filepath,IMAGE_BITMAP,width,height,LR_LOADFROMFILE|LR_CREATEDIBSECTION) 6 //寬高設置按照控件大小 7 CRect rect; 8 m_pic.GetWindowRect(rect); 9 //靜態控件設置bitmap 10 m_pic.SetBitmap(HBMP(TEXT("./simisent.bmp"), rect.Width(), rect.Height()));
1。能夠修改Edit Control的屬性。索引
Horizontal/Vertical Scroll=True修改設置滾動條
Multiline=True能夠設置多行
2。爲控件添加變量能夠獲得/改變控件內容。添加「值」類型變量,爲CString類型,變量名爲m_edit4, 第二個控件爲m_edit5
3.爲了將第一個控件的內容複製到第二個控件,能夠設置「複製」按鈕的單擊處理函數爲
1 void CMFCDialogDlg::OnBnClickedButton10() 2 { 3 // TODO: 在此添加控件通知處理程序代碼 4 //將控件同步到變量中 5 UpdateData(TRUE); //將控件內容同步到變量(m_edit4)中 6 m_edit5 = m_edit4; //複製變量內容 7 UpdateData(FALSE); //將變量(m_edit5)內容同步到控件中 8 }
2.在使用CEdit控件時,能夠設置編輯框自動顯示最後一行。
m_edit.LineScroll(m_edit.GetLineCount() - 1, 0);
1.能夠設置Combox的屬性,
Data添加內容,用分號隔開。
Sort=False,不按英文字母排序
Type=下拉列表 ,不可修改控件內容
2. 在OnInitDialog中初始化 Combox
//添加選項 m_cbx.AddString(TEXT("唐僧")); m_cbx.AddString(TEXT("孫悟空")); m_cbx.AddString(TEXT("豬八戒")); m_cbx.AddString(TEXT("沙僧")); //設置默認選項爲索引0 m_cbx.SetCurSel(0); //在索引2位置插入 m_cbx.InsertString(2, TEXT("替換選項")); //刪除索引2 m_cbx.DeleteString(2); //獲取1號索引的內容 /*CString str; m_cbx.GetLBText(1, str); MessageBox(str);*/
3.添加控件的CBN_SELCHANGE事件,在切換選項時能夠觸發處理函數
1.設置屬性View=report,添加控件變量m_list,「控件」類型。
2.添加表頭,在OnInitDialog()中添加代碼
1 //列表控件使用 2 CString str[] = {TEXT("姓名"),TEXT("性別"), TEXT("年齡")}; //表頭的三個屬性 3 m_list.GetWindowRect(rect); //獲取列表矩形大小 4 for (int i = 1; i < 4; i++) 5 { 6 //設置表頭 7 m_list.InsertColumn(i, str[i-1],LVCFMT_CENTER,rect.Width()/3); 8 }
3. 添加表格內容,在OnInitDialog()中添加代碼
//設置正文 //m_list.InsertItem(0, TEXT("張三")); //插入第0行,第一列 //給Item插入其餘列 //m_list.SetItemText(0, 1, TEXT("男")); //插入第0行,第二列 //10行3列 for (int i = 0; i < 10; i++) { int j = 0; CString name; name.Format(TEXT("張三_%d"), i + 1); m_list.InsertItem(i,name); m_list.SetItemText(i, ++j, TEXT("男")); m_list.SetItemText(i, ++j, TEXT("20")); }
4.設置額外屬性。整行選中,網格線
1 m_list.SetExtendedStyle(m_list.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
1.修改控件屬性,Has Buttons,Has Lines,Lines At Root爲True,添加Tree Control變量m_tree,「控件」類型
2.在OnInitDialog()中添加控件內容和結構
右鍵資源視圖的Icon添加資源,導入ico文件。
HICON icons[4];//圖標數組 icons[0] = AfxGetApp()->LoadIconW(IDI_ICON1); icons[1] = AfxGetApp()->LoadIconW(IDI_ICON2); icons[2] = AfxGetApp()->LoadIconW(IDI_ICON3); icons[3] = AfxGetApp()->LoadIconW(IDI_ICON4); CImageList* list = new CImageList; //建立圖標集合 list->Create(30, 30, ILC_COLOR32, 4, 4); //添加具體圖片 for (int i = 0; i < 4; i++) { list->Add(icons[i]); }
m_tree.SetImageList(list,TVSIL_NORMAL);//設置m_tree的圖片列表爲CImageList*類型的list
HTREEITEM root=m_tree.InsertItem(TEXT("根節點"), 0, 0, NULL); //根節點root,InserTtem能夠選擇名稱,圖標編號 HTREEITEM parent=m_tree.InsertItem(TEXT("父節點"), 1, 1, root); HTREEITEM sub1 = m_tree.InsertItem(TEXT("子節點"), 2, 2, parent); HTREEITEM sub2 = m_tree.InsertItem(TEXT("子節點"), 3, 3, parent); m_tree.SelectItem(root); //設置選擇
3.添加控件的TVN_SELCHANGED事件,在選擇節點時能夠觸發處理函數。
1.拖入RadioButton,並按Ctrl+D順序排列。其中,將2 的Group設爲True,6的Group設爲True,能夠將其分爲2組。
2.在OnInitDialog(),能夠進行設置默認選擇按鈕。
1 //第一個按鈕,最後一個按鈕,默認選中的按鈕 2 CheckRadioButton(IDC_RADIO1, IDC_RADIO2, IDC_RADIO1);
3.使用IsDlgButtonChecked,來判斷單選框是否被選中。給Button設置處理函數,輸出被選中的單選框
1 void CMFCApplication5Dlg::OnBnClickedButton2() 2 { 3 // TODO: 在此添加控件通知處理程序代碼 4 //若是第一個被按下 5 CString str; 6 if (IsDlgButtonChecked(IDC_RADIO1)) 7 { 8 str = TEXT("男"); 9 } 10 if (IsDlgButtonChecked(IDC_RADIO2)) 11 { 12 str = TEXT("女"); 13 } 14 MessageBox(str); 15 }
1.爲複選框添加變量
2.在OnInitDialog中初始化複選框
1 m_check.SetWindowTextW(TEXT("測試1")); 2 m_check.SetCheck(1);
3.在按鈕中添加事件處理函數
1 void CMFCApplication5Dlg::OnBnClickedButton1() 2 { 3 // TODO: 在此添加控件通知處理程序代碼 4 CString str; 5 if(IsDlgButtonChecked(IDC_CHECK1)) 6 { 7 str += TEXT("測試1\r\n"); 8 } 9 if (IsDlgButtonChecked(IDC_CHECK2)) 10 { 11 str += TEXT("測試2\r\n"); 12 } 13 if (IsDlgButtonChecked(IDC_CHECK3)) 14 { 15 str += TEXT("測試3\r\n"); 16 } 17 if (IsDlgButtonChecked(IDC_CHECK4)) 18 { 19 str += TEXT("測試4\r\n"); 20 } 21 MessageBox(str); 22 }
一。添加滑塊控件,並添加變量m_scrollBar,並在OnInitDialog中初始化。m_pos爲edit_control控件的變量
1 //設置滑塊範圍 2 m_scrollBar.SetScrollRange(1, 100); 3 //設置位置 4 m_scrollBar.SetScrollPos(m_pos);
2.在主窗口類->屬性中添加標準消息HScroll。
1 void MFCDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 2 { 3 // TODO: 在此添加消息處理程序代碼和/或調用默認值 4 if (pScrollBar == &m_scrollBar) //判斷是哪個滑塊 5 { 6 int tmpPos; 7 switch (nSBCode) 8 { 9 case SB_THUMBPOSITION: //滑塊位置 10 { 11 m_scrollBar.SetScrollPos(nPos); 12 m_pos = nPos; 13 UpdateData(FALSE); 14 break; 15 } 16 case SB_LINELEFT: //向左的箭頭 17 { 18 //獲取滑塊位置 19 tmpPos = m_scrollBar.GetScrollPos() - 5; 20 if (tmpPos < 0) 21 { 22 tmpPos = 0; 23 } 24 m_scrollBar.SetScrollPos(tmpPos); 25 m_pos = tmpPos; 26 UpdateData(false); 27 break; 28 } 29 case SB_LINERIGHT: 30 { 31 //獲取滑塊位置 32 tmpPos = m_scrollBar.GetScrollPos() + 5; 33 if (tmpPos >= 100) 34 { 35 tmpPos = 100; 36 } 37 m_scrollBar.SetScrollPos(tmpPos); 38 m_pos = tmpPos; 39 UpdateData(false); 40 break; 41 } 42 case SB_PAGELEFT: //當前位置和左箭頭之間的區域 43 { 44 //獲取滑塊位置 45 tmpPos = m_scrollBar.GetScrollPos() - 10; 46 if (tmpPos <= 0) 47 { 48 tmpPos = 0; 49 } 50 m_scrollBar.SetScrollPos(tmpPos); 51 m_pos = tmpPos; 52 UpdateData(false); 53 break; 54 } 55 case SB_PAGERIGHT: 56 { 57 //獲取滑塊位置 58 tmpPos = m_scrollBar.GetScrollPos() + 10; 59 if (tmpPos >= 100) 60 { 61 tmpPos = 100; 62 } 63 m_scrollBar.SetScrollPos(tmpPos); 64 m_pos = tmpPos; 65 UpdateData(false); 66 break; 67 } 68 } 69 } 70 CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar); 71 }