MFC/QT 学习笔记(四)——MFC基于对话框学习控件(上)

新建项目->MFC模板->MFC应用程序->应用程序类型:基于对话框->...OK

解决方案资源管理器->资源文件->xxx.rc->进入:资源视图->Dialog->IDD_DEMO_DIALOG->打开工具箱(在侧面找)

 //0.准备

删除默认控件:ctrl+Afn+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是不可以添加变量的,需要修改变量,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);

}

猜你喜欢

转载自www.cnblogs.com/CowryGao/p/12343876.html