新建项目->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();
//插入
m_cbx.InsertString(, TEXT("白龙马"));
//删除
m_cbx.DeleteString();
//获取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); }

MFC/QT 学习笔记(四)——MFC基于对话框学习控件(上)的更多相关文章

  1. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  2. .NET MVC 学习笔记(七)— 控制input控件

    .NET MVC 学习笔记(七)— 控制input控件 画面中有时候需要输入数字,这时就需要控制input的输入.以下为保留两位有效数字. /* * 初始化数字输入 */ function initD ...

  3. Winform控件学习笔记【第二天】——常用控件

    背景:期末考试刚过就感冒了,嗓子火辣辣的,好难受.但是一想起要学习总结就打起精神来了,Winform控件网上也没有多少使用教程,大部分都是自己在网上零零散散的学的,大部分用的熟了,不总结会很容易忘得. ...

  4. Dynamic CRM 2013学习笔记(八)过滤查找控件 (类似省市联动)

    我们经常要实现类似省市联动一样的功能,常见的就是二个查找控件,一个选择了省后,另一个市的查找控件就自动过滤了,只显示当前省下的市,而不是所有的市.当然这是最简单的,实际工作中还有更复杂的功能要通过过滤 ...

  5. Android学习笔记(九)——布局和控件的自定义

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! View是 Android中一种最基本的 UI组件,它可以在屏幕上绘制一块矩形区域,并能响应这块区域的各种事件 ...

  6. Win32+API学习笔记:创建基本的窗口控件

    创建一个标签 CreateWindowEx(0, "static", "姓名:",                                        ...

  7. 【AngularJS学习笔记】封装一些简单的控件(封装成Html标签)

    bootstrap有强大的指令系统,可以自定义一些属性,基本知识请移步:http://angularjs.cn/A00r  http://www.cnblogs.com/lvdabao/p/33916 ...

  8. 《深入理解java虚拟机》学习笔记四/垃圾收集器GC学习/一

    Grabage Collection      GC GC要完毕的三件事情: 哪些内存须要回收? 什么时候回收? 怎样回收? 内存运行时区域的各个部分中: 程序计数器.虚拟机栈.本地方法栈这3个区域随 ...

  9. STM32学习笔记(四) RCC外设的学习和理解

    RCC时钟模块并不好理解,初次接触我也是一头雾水,而且我真正掌握它的时候也比较晚,是我在学习uC/os-II,需要分析时钟时才有了深刻认识.但在学习中我却一定要把放在了前列,因为这是整个嵌入式最重要的 ...

  10. NodeJS学习笔记 进阶 (4)基于express+muter的文件上传(ok)

    个人总结:这篇文章主要讲了multer插件的使用,类似于formidable,可以用来处理post表单中的文件上传,读完这篇文章需要10分钟. 摘选自网络 概览 图片上传是web开发中经常用到的功能, ...

随机推荐

  1. Canny边缘检测算法(基于OpenCV的Java实现)

    目录 Canny边缘检测算法(基于OpenCV的Java实现) 绪论 Canny边缘检测算法的发展历史 Canny边缘检测算法的处理流程 用高斯滤波器平滑图像 彩色RGB图像转换为灰度图像 一维,二维 ...

  2. python应用airtest库的环境搭建

    参考https://blog.csdn.net/ywyxb/article/details/64126927 注意:无论是在线还是离线安装,最好在管理员权限下执行命令 1.安装Python36(32位 ...

  3. springIOC源码接口分析(七):ApplicationEventPublisher

    一 定义方法 此接口主要是封装事件发布功能的接口,定义了两个方法: /** * 通知应用所有已注册且匹配的监听器此ApplicationEvent */ default void publishEve ...

  4. 使用IDEA构建Spring-boot多模块项目配置流程

    使用IDEA构建Spring-boot多模块项目配置流程 1.创建项目 点击Create New Project 在左侧选中Spring Initializer,保持默认配置,点击下一步. 在Grou ...

  5. Leetcode 题目整理-3 Palindrome Number & Roman to Integer

    9. Palindrome Number Determine whether an integer is a palindrome. Do this without extra space. clic ...

  6. MCMC&Gibbs sampling

    Note of Markov Chain Monte Carlo and Gibbs Sampling :  http://pan.baidu.com/s/1jHpWY1o 序:A major lim ...

  7. iOS 利用UICollectionView做一个无限循环广告栏

    一.效果图 左右丝滑滑动,并且有缩放动画. 二.分析和思路 1. 为什么选择用UICollectionView去做上面的效果? 首先无限效果永远是表现出来的,而不是程序里面创建了无数个view,如何做 ...

  8. SubList到底怎么转化为ArrayList?

    SubList 大家好,今天 Tony 给大家讲个SubList转化的坑. 这个错误真的会被忽略,大家好好的看看,这个错误我们生产环境还真的遇到过. 集合类型相信大家都很熟悉,在 Java 中 Arr ...

  9. RestTemplate远程调用方法

    概述: spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值 ...

  10. 文件传输基础----Java IO流

    编码问题 一个很著名的奇怪现象:当你在 windows 的记事本里新建一个文件,输入"联通"两个字之后,保存,关闭,然后再次打开,你会发现这两个字已经消失了,代之的是几个乱码!呵呵 ...