新建專案->MFC模板->MFC應用程式->應用程式型別:基于對話框->...OK
解決方案資源管理器->資源檔案->xxx.rc->進入:資源視圖->Dialog->IDD_DEMO_DIALOG->打開工具箱(在側面找)
//0.準備
洗掉默認控制元件:ctrl+A,fn+delete;
修改名稱 屬性 屬性 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); }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/10408.html
標籤:其他
