新建項目->MFC模板->MFC應用程序->應用程序類型:基於對話框->...OK工具
解決方案資源管理器->資源文件->xxx.rc->進入:資源視圖->Dialog->IDD_DEMO_DIALOG->打開工具箱(在側面找)spa
//0.準備code
刪除默認控件:ctrl+A,fn+delete;blog
修更名稱 屬性 屬性 captain排序
點擊觸發事件 屬性 控件事件 BN_CLICKED ;右鍵 添加事件處理程序;雙擊進入編輯索引
插入窗口 右鍵 添加類事件
插入工具 右鍵 添加變量:控件/值 private圖片
//1.模態/非模態對話窗口 插入Dialog資源
模態:只可對當前窗口操做同步
非模態:可對全部窗口操做
插入窗口 右鍵 添加類
//文件名:CAboutDlg.h
按鈕1:模態對話框
void CdemoDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知處理程序代碼 //彈出模態對話框,阻塞功能 CDlgExec dlg; dlg.DoModal(); }
按鈕2:非模態對話框
void CdemoDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知處理程序代碼 //彈出非模態對話框, //CDlgShow dlg; 會一閃而過,寫到 .h 作成員 //dlg.Create(IDD_SHOW); 建立一次,屢次會崩,寫到初始化 OnInitDialog dlg.ShowWindow(SW_SHOWNORMAL); }
//文件名:CdemoDlg.h
//給全局
private: CDlgShow dlg;
//文件名:CdemoDlg.cpp
//給初始化
// TODO: 在此添加額外的初始化代碼 dlg.Create(IDD_SHOW);
//2.靜態文本 StaticText
添加變量 以STATIC結尾的ID是不能夠添加變量的,須要修改變量,eg:IDC_TEXT; IDC_PIC;
// CAboutDlg.cpp
//在靜態文本內添加 BITMAP(多是個人bmp圖片有問題,沒顯示成功)
// TODO: 在此添加額外的初始化代碼 //設置靜態控件風格爲居中 m_pic.ModifyStyle(0xf, SS_BITMAP | SS_CENTERIMAGE); //經過路徑獲取BITMAP句柄 #define HBMP(filepath,width,height)(HBITMAP)LoadImage(AfxGetInstanceHandle(),filepath,IMAGE_BITMAP,width,height,LR_LOADFROMFILE|LR_CREATEDIBSECTION) //獲取窗口大小 CRect rect; m_pic.GetWindowRect(rect); //靜態控件設置bitmap m_pic.SetBitmap(HBMP(TEXT("./1.bmp"), /*300,250*/rect.Width(), rect.Height()));
//三個按鈕的設置
void Cdemo2Dlg::OnBnClickedButton1() { // TODO: 在此添加控件通知處理程序代碼 //讓哈哈變成呵呵 //設置文本內容 m_text.SetWindowTextW(TEXT("呵呵")); } void Cdemo2Dlg::OnBnClickedButton2() { // TODO: 在此添加控件通知處理程序代碼 //獲取內容 CString str; m_text.GetWindowTextW(str); MessageBox(str); } void Cdemo2Dlg::OnBnClickedButton3() { // TODO: 在此添加控件通知處理程序代碼 //修改按鈕上的內容 m_btn.SetWindowTextW(TEXT("Cowry")); //獲取內容 CString str; m_btn.GetWindowTextW(str); MessageBox(str); //設置點擊狀態,點後灰掉 m_btn.EnableWindow(FALSE); }
//3.編輯框使用 EditControl
屬性:multLine 多行;Want return :true 可多行書寫;Scroll 滾動條 縱橫
// CAboutDlg.cpp
// TODO: 在此添加額外的初始化代碼 //設置第一個編輯框內有文本內容 m_edit1.SetWindowTextW(TEXT("hello Cowry"));
//四個按鈕的設置
void Cdemo3Dlg::OnBnClickedButton1() { // TODO: 在此添加控件通知處理程序代碼 //複製編輯框1的內容到編輯框2 CString str; m_edit1.GetWindowTextW(str); m_edit2.SetWindowTextW(str); } void Cdemo3Dlg::OnBnClickedButton2() { // TODO: 在此添加控件通知處理程序代碼 //退出程序 //exit(0); //推出當前對話框 //CDialog::OnOK(); CDialog::OnCancel(); }void Cdemo3Dlg::OnBnClickedButton3() { // TODO: 在此添加控件通知處理程序代碼 //利用關聯value方式設置和獲取內容 m_text = TEXT("hello"); //將變量中的內容 同步到控件中 UpdateData(FALSE); } void Cdemo3Dlg::OnBnClickedButton4() { // TODO: 在此添加控件通知處理程序代碼 //將控件中的內容 同步到變量中 UpdateData(TRUE); MessageBox(m_text); }
//屬性 重寫OnOK 註釋掉裏面代碼;爲了避免輸入return後直接退出;
void Cdemo3Dlg::OnOK() { // TODO: 在此添加專用代碼和/或調用基類 //CDialogEx::OnOK(); }
//4.下拉框 ComboBox
屬性:加入數據data :aa;bb;cc;設置不默認排序 sort:false;設置不可編輯 type:下拉列表
// CAboutDlg.cpp
// TODO: 在此添加額外的初始化代碼 //下拉框添加 m_cbx.AddString(TEXT("唐僧")); m_cbx.AddString(TEXT("孫悟空")); m_cbx.AddString(TEXT("豬八戒")); m_cbx.AddString(TEXT("沙僧")); //設置默認值 m_cbx.SetCurSel(0); //插入 m_cbx.InsertString(4, TEXT("白龍馬")); //刪除 m_cbx.DeleteString(3); //獲取1號索引內容 //CString str; //m_cbx.GetLBText(1,str); //MessageBox(str);
//下拉框改變值時,彈出Box
void Cdemo4Dlg::OnCbnSelchangeCombo1() { // TODO: 在此添加控件通知處理程序代碼 //拿到索引位置 int index=m_cbx.GetCurSel(); CString str; m_cbx.GetLBText(index, str); MessageBox(str); }