新建项目->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. Qt常用UI控件读取、写入方法

    本文用途:快速备忘,方便调用,写熟了自然就记下了. [1.标签label] 读取:ui->label->text() 写入:ui->label->setText("p ...

  2. Python学习,第七课 - 文件操作

    Python中对文件的相关操作详解 文件的操作在今后的Python开发中也是使用非常频繁的. 先说下对文件操作的流程 打开文件,得到文件的一个句柄,赋值给一个变量 然后通过句柄对文件进行操作(内容的增 ...

  3. ssh隧道使用

    在内网中几乎所有的linux服务器和网络设备都支持ssh协议.一般情况下,ssh协议是允许通过防火墙和边界设备的,所以经常被攻击者利用.同时ssh协议的传输过程是加密的,所以我们很难区分合法的ssh会 ...

  4. CSS-01-引入css的三种方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. SpringBoot消息篇Ⅲ --- 整合RabbitMQ

    知识储备:  关于消息队列的基本概念我已经在上一篇文章介绍过了(传送门),本篇文章主要讲述的是SpringBoot与RabbitMQ的整合以及简单的使用. 一.安装RabbitMQ 1.在linux上 ...

  6. kubernetes安装-kubeadm

    系统信息 角色 系统 CPU Core memory master 18.04.1-Ubuntu 4 8G slave 18.04.1-Ubuntu 4 4G 安装前准备(主节点和从节点都需要执行) ...

  7. 2.OpenStack 网络简介(neutron)

    OpenStack 网络简介(neutron) 概述和组件 OpenStack 网络允许您创建和管理网络对象, 如网络.子网和端口, 其他 OpenStack 服务可以使用.插件可以实现, 以适应不同 ...

  8. 再谈typedef(重点为函数指针)

    有种很方便的写法. typedef int *p: p pointer: 这时直接把pointer带入原式中,取代p然后去掉typedef,得到的结果就是int * pointer: 哈哈,这样直接替 ...

  9. Loj 6002 最小路径覆盖(最大流)

    题意: 求不相交的最小路径覆盖 思路: 连边跑二分图,匹配一条边相当于缩了一条边,答案为n-maxflow 如果是求可以相交的最小路径覆盖的话,先用Floyd跑出可达矩阵,然后所有可达的点连边跑二分图 ...

  10. Educational Codeforces Round 39 Editorial B(Euclid算法,连续-=与%=的效率)

    You have two variables a and b. Consider the following sequence of actions performed with these vari ...