新建项目->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. Creating Custom Helper Methods 创建自定义辅助器方法----辅助器方法 ------ 精通ASP.NET MVC 5

    创建内联的辅助器方法 和 拓展方法 好像类似的功能. 不过写在前台更直观

  2. Java容器解析系列(17) LruCache详解

    在之前讲LinkedHashMap的时候,我们说起可以用来实现LRU(least recent used)算法,接下来我看一下其中的一个具体实现-----android sdk 中的LruCache. ...

  3. 基于Flask框架搭建视频网站的学习日志(二)

    基于Flask框架搭建视频网站的学习日志(二)2020/02/02 一.初始化 所有的Flask程序都必须创建一个程序实例,程序实例是Flask类的对象 from flask import Flask ...

  4. 用VLC搭建流媒体服务器

    用vlc搭建简单流媒体服务器(UDP和TCP方式) 这段时间用到了流媒体数据传输的TCP和UDP方式,感觉vlc可以做这方面的demo,这里总结下,也方便我以后查阅. 简介 VLC主页:http:// ...

  5. 2019中国大学生程序设计竞赛-女生专场(重现赛)部分题解C-Function(贪心+优先队列) H-clock(模拟)

    Function 题目链接 Problem Description wls 有 n 个二次函数 Fi(x) = aix2 + bix + ci (1 ≤ i ≤ n). 现在他想在∑ni=1xi = ...

  6. Linux文件内容重定向

    文件描述符 可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作. 用户可以自定义文件描述符范围是:3-num,这个最大数字, ...

  7. mybatis typeAlias (别名)说明

                                                                                                        ...

  8. c++中多文件的组织

    参考书目:visual c++ 入门经典 第七版 Ivor Horton著 第八章 根据书中例子学习使用类的多文件项目. 首先要将类CBox定义成一个连贯的整体,在CBox.H文件中写入相关的类定义, ...

  9. 温故知新,.NET 重定向深度分析

    在早期的.NET Framework程序员心里,重定向Redirect其实分为两种: Response.Redirect: Response对象的Redirect方法提供了一种实现客户端重定向的方法 ...

  10. VS生成垃圾文件清理

    @echo Off del /s /a *.txt *.exe *.suo *.ncb *.user *.dll *.pdb *.netmodule *.aps *.ilk 2>nul FOR ...