zoukankan      html  css  js  c++  java
  • 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);
    
    }
  • 相关阅读:
    HDU Problem 1811 Rank of Tetris【拓扑排序+并查集】
    POJ Problem 2367 Genealogical tree【拓扑排序】
    HDU Problem 2647 Reward【拓扑排序】
    HDU Problem 1285 确定比赛名次【拓扑排序】
    HDU Problem HDU Today 【最短路】
    HDU Problem 3665 Seaside【最短路】
    HDU Problem 一个人的旅行 【最短路dijkstra】
    HDU Problem 1596 find the safest road【最短路dijkstra】
    Beyond Compare文本合并进行内容替换要注意什么
    用这些工具都可以比较代码的差异
  • 原文地址:https://www.cnblogs.com/CowryGao/p/12343876.html
Copyright © 2011-2022 走看看