windowns程序設計實驗四

實驗4: 建立控件和DDX使用

**【實驗目的】**

一、 掌握使用編程方式和拖拉方式來建立一個按鈕。
二、 掌握使用控件變量和DDX數據交換。編程

**【實驗過程】**
使用編程方式和拖拉方式來建立一個按鈕

步驟以下:less

  • ① 啓動Visual C++ 6.0,選擇「文件」→「新建」菜單命令,在彈出的「新建」對話框的工程標籤頁面中,選擇MFC AppWizard(exe)的項目類型。單擊位置框右側的按鈕 ,在彈出的對話框中,將該應用程序的文件夾定位在「D:Windows程序設計」,並在「工程名稱」編輯框中輸入應用程序名Ex_Create
  • ② 單擊image.png按鈕進入下一步,從彈出的「步驟1」對話框中,選擇「基本對話框」應用程序類型。單擊 image.png 按鈕,出現一個信息對話框,顯示出用戶在前面幾個步驟中作出的選擇,單擊 image.png按鈕,系統開始建立,並又回到了Visual C++ 6.0的主界面。
  • ③ 將項目工做區切換到ClassView頁面,展開Ex_Create全部的類節點,右擊CEx_CreateDlg類名,彈出如圖5.1所示的快捷菜單。從快捷菜單中選擇Add Member Variable(添加成員變量),出現如圖5.2所示的對話框,在Variable Type(變量類型)編輯框中輸入CButton(MFC按鈕類),在Variable Name(變量名) 編輯框中輸入要定義的CButton類對象名m_btnWnd
  • ④ 在項目工做區窗口的ClassView頁面中,將CEx_CreateDlg節點展開,雙擊OnInitDialog函數名,在該函數中添加下列代碼(return TRUE;語句以前添加)
BOOL CEx\_CreateDlg::OnInitDialog()

{

CDialog::OnInitDialog();

//…

m\_btnWnd.Create("你好", WS\_CHILD | WS\_VISIBLE | BS\_PUSHBUTTON | WS\_TABSTOP,

CRect(20, 20, 120, 40), this, 201);  // 建立

CFont \*font = this->GetFont(); // 獲取對話框的字體

m\_btnWnd.SetFont(font); // 設置控件字體

 return TRUE; // return TRUE unless you set the focus to a control

}
  • ⑤ 將項目工做區窗口切換到ResourseView頁面,雙擊Dialog資源下的標識IDD_EX_CREATE_DIALOG,打開Ex_Create項目的對話框資源模板。選中「TODO: 在這裏設置對話控制。」控件,按【Delete】鍵刪除。從控件工具箱中拖放添加一個按鈕控件,保留其默認屬性。
  • ⑥ 按快捷鍵【Ctrl+W】,打開MFC ClassWizard對話框,查看「Class name」列表中是否選擇了CEx_CreateDlg,在Object IDs列表中選擇IDC_BUTTON1,這是添加按鈕後,系統自動爲此按鈕設置的默認標識符,而後在Messages框中選擇BN_CLICKED消息。
  • ⑦ 單擊 image.png按鈕或雙擊BN_CLICKED消息,出現「Add Member Function」對話框,在這裏能夠輸入成員函數的名稱,系統默認的函數名爲OnButton1。如圖5.5所示。
  • ⑧ 雙擊消息函數OnButton1或單擊image.png 按鈕,MFC ClassWizard對話框退出,並轉向文檔窗口,定位到CEx_CreateDlg::OnButton1函數實現的源代碼處,添加下列代碼:
void CEx_CreateDlg::OnButton1() 
{
MessageBox(_T("你按下了\"Button1\"按鈕!"));
}
  • ⑨ 按快捷鍵【Ctrl+W】,打開MFC ClassWizard對話框,查看「Class name」列表中是否選擇了CEx_CreateDlg,在Object IDs列表中選擇CEx_CreateDlg,在Messages框中找到並雙擊OnCommand,這樣OnCommand消息函數就添加好了。
  • ⑩ 雙擊消息函數OnCommand或單擊image.png 按鈕,退出MFC ClassWizard對話框,並轉向文檔窗口,定位到CEx_CreateDlg:: OnCommand函數實現的源代碼處,添加代碼:
BOOL CEx_CreateDlg::OnCommand(WPARAM wParam, LPARAM lParam) 
{
WORD  nCode = HIWORD(wParam);            // 控件的通知消息
WORD  nID    = LOWORD(wParam);        // 控件的ID 
if ((nID == 201)&&(nCode == BN_CLICKED))
    MessageBox(_T("你按下了\"你好\"按鈕!"));
if ((nID == IDC_BUTTON1)&&(nCode == BN_CLICKED))
    MessageBox(_T("這是在OnCommand處理的結果!"));
    return CDialog::OnCommand(wParam, lParam);
}
二、使用控件變量和DDX數據交換。

步驟以下:函數

  • ① 建立一個默認的對話框應用程序Ex_Member。在打開的對話框資源模板中,刪除「TODO: 在這裏設置對話控制。」靜態文本控件,在對話框資源模板的左邊添加2個編輯框控件、2個靜態控件和4個按鈕控件,設置相應的屬性,如表:

image.png

  • ② 按快捷鍵【Ctrl+W】,打開MFC ClassWizard對話框,並切換到Member Variables頁面,查看「Class name」列表中是否選擇了CEx_MemberDlg
  • ③ 在Control IDs列表中,選定按鈕控件標識符IDC_EDIT1,雙擊鼠標左鍵或單擊 按鈕,彈出Add Member Variable對話框,將Category(類別)選爲默認的Value(值),將Variable type類型選爲默認的CString,在Member variable name框中填好與控件相關聯的成員變量m_Edit1,並依次添加以下圖控件變量。

    image.png

  • ④ 將MFC ClassWizard對話框切換到Message Maps頁面,依次爲CEx_MemberDlg添加IDC_BUTTON一、IDC_BUTTON二、IDC_BUTTON三、IDC_BUTTON4的BN_CLICKED消息映射函數OnButton一、OnButton二、 OnButton三、 OnButton4,添加的代碼以下:
void CEx_MemberDlg::OnButton1() 
{
    UpdateData();                    // 將控件的內容存放到變量中
    // 沒有參數,表示使用的是默認參數值TRUE
    m_Static1.SetWindowText(m_str1);
}

void CEx_MemberDlg::OnButton2() 
{
    // TODO: Add your control notification handler code here
    CString   str;
    CStatic   *pStatic = (CStatic *)GetDlgItem(IDC_STATIC1);
    pStatic->GetWindowText(str); 
    m_Static2.SetWindowText(str);
}

void CEx_MemberDlg::OnButton3() 
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);                    // 將控件的內容存放到變量中
    // 沒有參數,表示使用的是默認參數值TRUE
    m_str2=m_str1;
    UpdateData(false);                    // 將變量內容存放到控件中
    // 沒有參數,表示使用的是默認參數值TRUE
}

void CEx_MemberDlg::OnButton4() 
{
    // TODO: Add your control notification handler code here
    CString   str;
    CStatic   *pStatic = (CStatic *)GetDlgItem(IDC_STATIC1);
    pStatic->GetWindowText(str); 
    m_Edit1.SetWindowText(str);
}
相關文章
相關標籤/搜索