MFC/QT 學習筆記(四)——MFC基於對話框學習控件(上)

新建項目->MFC模板->MFC應用程序->應用程序類型:基於對話框->...OK工具

 

解決方案資源管理器->資源文件->xxx.rc->進入:資源視圖->Dialog->IDD_DEMO_DIALOG->打開工具箱(在側面找)spa

 

 //0.準備code

刪除默認控件:ctrl+Afn+deleteblog

修更名稱 屬性 屬性 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是不能夠添加變量的,須要修改變量,egIDC_TEXTIDC_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);

}
相關文章
相關標籤/搜索