新建项目->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); }